Преглед изворни кода

fix(core): ignore unavailable project copy roots (#32234)

James Long пре 2 месеци
родитељ
комит
409ba229ab
2 измењених фајлова са 13 додато и 0 уклоњено
  1. 1 0
      packages/core/src/project/copy.ts
  2. 12 0
      packages/core/test/project-copy.test.ts

+ 1 - 0
packages/core/src/project/copy.ts

@@ -245,6 +245,7 @@ export const layer = Layer.effect(
         (sourceDirectory) =>
           Effect.forEach(strategies(), (strategy) =>
             strategy.list(sourceDirectory).pipe(
+              Effect.catchTag("ProjectCopy.DirectoryUnavailableError", () => Effect.succeed([])),
               Effect.map((items) =>
                 items.map((item) => ({
                   directory: item.directory,

+ 12 - 0
packages/core/test/project-copy.test.ts

@@ -365,6 +365,18 @@ describe("ProjectCopy", () => {
     }),
   )
 
+  it.live("refresh ignores existing directories that are no longer git checkouts", () =>
+    Effect.gen(function* () {
+      const input = yield* setup()
+      yield* Effect.promise(() => fs.rm(path.join(input.sourceDirectory, ".git"), { recursive: true }))
+      const copy = yield* ProjectCopy.Service
+
+      yield* copy.refresh({ projectID: input.projectID })
+
+      expect(yield* stored(input.projectID)).toEqual([{ directory: input.sourceDirectory, strategy: null }])
+    }),
+  )
+
   it.live("refresh with no roots is a no-op", () =>
     Effect.gen(function* () {
       const copy = yield* ProjectCopy.Service