Sfoglia il codice sorgente

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

James Long 2 mesi fa
parent
commit
409ba229ab

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

@@ -245,6 +245,7 @@ export const layer = Layer.effect(
         (sourceDirectory) =>
         (sourceDirectory) =>
           Effect.forEach(strategies(), (strategy) =>
           Effect.forEach(strategies(), (strategy) =>
             strategy.list(sourceDirectory).pipe(
             strategy.list(sourceDirectory).pipe(
+              Effect.catchTag("ProjectCopy.DirectoryUnavailableError", () => Effect.succeed([])),
               Effect.map((items) =>
               Effect.map((items) =>
                 items.map((item) => ({
                 items.map((item) => ({
                   directory: item.directory,
                   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", () =>
   it.live("refresh with no roots is a no-op", () =>
     Effect.gen(function* () {
     Effect.gen(function* () {
       const copy = yield* ProjectCopy.Service
       const copy = yield* ProjectCopy.Service