test(shared): preserve tabbed ignore anchoring

This commit is contained in:
Peter Steinberger
2026-07-14 20:09:02 +01:00
parent bfa72f8dab
commit a7f4e72216
2 changed files with 7 additions and 3 deletions

View File

@@ -122,19 +122,22 @@ describe("DefaultPackageManager", () => {
it("keeps auto-discovered project skills inside their skill root", async () => {
const root = await makeTempDir("openclaw-package-manager-");
const agentsSkillsRoot = join(root, ".agents", "skills");
const insideSkill = join(agentsSkillsRoot, "inside", "SKILL.md");
const insideSkill = join(agentsSkillsRoot, "group", "deep", "t", "SKILL.md");
const ignoredSkill = join(agentsSkillsRoot, "group", "deep", "ignored", "SKILL.md");
const escapedSkill = join(agentsSkillsRoot, "group", "deep", "!literal", "SKILL.md");
const outsideRoot = join(root, "outside");
await mkdir(join(root, ".git"));
await mkdir(join(agentsSkillsRoot, "inside"), { recursive: true });
await mkdir(join(agentsSkillsRoot, "group", "deep", "t"), { recursive: true });
await mkdir(join(agentsSkillsRoot, "group", "deep", "ignored"), { recursive: true });
await mkdir(join(agentsSkillsRoot, "group", "deep", "!literal"), { recursive: true });
await mkdir(outsideRoot, { recursive: true });
await writeFile(insideSkill, "# Inside\n", "utf-8");
await writeFile(ignoredSkill, "# Ignored\n", "utf-8");
await writeFile(escapedSkill, "# Ignored\n", "utf-8");
await writeFile(join(agentsSkillsRoot, "group", ".gitignore"), "ignored/ \n\\!literal/\n");
await writeFile(
join(agentsSkillsRoot, "group", ".gitignore"),
"ignored/ \nt/\t\n\\!literal/\n",
);
await writeFile(join(outsideRoot, "SKILL.md"), "# Outside\n", "utf-8");
try {

View File

@@ -36,6 +36,7 @@ function prefixIgnorePattern(line: string, prefix: string): string {
const pattern = negated ? line.slice(1) : line;
const anchored = pattern.startsWith("/");
const normalized = anchored ? pattern.slice(1) : pattern;
// Git discards trailing spaces only; broader trimming would over-expand nested rules.
const matchPattern = normalized.replace(/ +$/, "");
const depthGlob = prefix && !anchored && !matchPattern.slice(0, -1).includes("/") ? "**/" : "";
const prefixed = `${prefix}${depthGlob}${normalized}`;