|
|
@@ -14,11 +14,7 @@ describe("loadRuleFiles", () => {
|
|
|
mockedFs.readFile.mockResolvedValue(" content with spaces ")
|
|
|
const result = await loadRuleFiles("/fake/path")
|
|
|
expect(mockedFs.readFile).toHaveBeenCalled()
|
|
|
- expect(result).toBe(
|
|
|
- "\n# Rules from .clinerules:\ncontent with spaces\n" +
|
|
|
- "\n# Rules from .cursorrules:\ncontent with spaces\n" +
|
|
|
- "\n# Rules from .windsurfrules:\ncontent with spaces\n",
|
|
|
- )
|
|
|
+ expect(result).toBe("\n# Rules from .roorules:\ncontent with spaces\n")
|
|
|
})
|
|
|
|
|
|
it("should handle ENOENT error", async () => {
|
|
|
@@ -49,22 +45,19 @@ describe("loadRuleFiles", () => {
|
|
|
jest.clearAllMocks()
|
|
|
})
|
|
|
|
|
|
- it("should combine content from multiple rule files when they exist", async () => {
|
|
|
+ it("should not combine content from multiple rule files when they exist", async () => {
|
|
|
mockedFs.readFile.mockImplementation(((filePath: string | Buffer | URL | number) => {
|
|
|
+ if (filePath.toString().endsWith(".roorules")) {
|
|
|
+ return Promise.resolve("roo rules content")
|
|
|
+ }
|
|
|
if (filePath.toString().endsWith(".clinerules")) {
|
|
|
return Promise.resolve("cline rules content")
|
|
|
}
|
|
|
- if (filePath.toString().endsWith(".cursorrules")) {
|
|
|
- return Promise.resolve("cursor rules content")
|
|
|
- }
|
|
|
return Promise.reject({ code: "ENOENT" })
|
|
|
}) as any)
|
|
|
|
|
|
const result = await loadRuleFiles("/fake/path")
|
|
|
- expect(result).toBe(
|
|
|
- "\n# Rules from .clinerules:\ncline rules content\n" +
|
|
|
- "\n# Rules from .cursorrules:\ncursor rules content\n",
|
|
|
- )
|
|
|
+ expect(result).toBe("\n# Rules from .roorules:\nroo rules content\n")
|
|
|
})
|
|
|
|
|
|
it("should handle when no rule files exist", async () => {
|
|
|
@@ -86,17 +79,17 @@ describe("loadRuleFiles", () => {
|
|
|
|
|
|
it("should skip directories with same name as rule files", async () => {
|
|
|
mockedFs.readFile.mockImplementation(((filePath: string | Buffer | URL | number) => {
|
|
|
- if (filePath.toString().endsWith(".clinerules")) {
|
|
|
+ if (filePath.toString().endsWith(".roorules")) {
|
|
|
return Promise.reject({ code: "EISDIR" })
|
|
|
}
|
|
|
- if (filePath.toString().endsWith(".cursorrules")) {
|
|
|
- return Promise.resolve("cursor rules content")
|
|
|
+ if (filePath.toString().endsWith(".clinerules")) {
|
|
|
+ return Promise.reject({ code: "EISDIR" })
|
|
|
}
|
|
|
return Promise.reject({ code: "ENOENT" })
|
|
|
}) as any)
|
|
|
|
|
|
const result = await loadRuleFiles("/fake/path")
|
|
|
- expect(result).toBe("\n# Rules from .cursorrules:\ncursor rules content\n")
|
|
|
+ expect(result).toBe("")
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -121,7 +114,7 @@ describe("addCustomInstructions", () => {
|
|
|
expect(result).toContain("(es)") // Check for language code in parentheses
|
|
|
expect(result).toContain("Global Instructions:\nglobal instructions")
|
|
|
expect(result).toContain("Mode-specific Instructions:\nmode instructions")
|
|
|
- expect(result).toContain("Rules from .clinerules-test-mode:\nmode specific rules")
|
|
|
+ expect(result).toContain("Rules from .roorules-test-mode:\nmode specific rules")
|
|
|
})
|
|
|
|
|
|
it("should return empty string when no instructions provided", async () => {
|