(layer: Layer.Layer<Fs.FileSystem, E>, options: TestLayerOptions = {})
| 13 | } |
| 14 | |
| 15 | export const testLayer = <E>(layer: Layer.Layer<Fs.FileSystem, E>, options: TestLayerOptions = {}) => { |
| 16 | const runPromise = <E2, A>(self: Effect.Effect<A, E2, Fs.FileSystem>) => |
| 17 | Effect.runPromise( |
| 18 | Effect.provide(self, layer) |
| 19 | ) |
| 20 | |
| 21 | it("readFile", () => |
| 22 | runPromise(Effect.gen(function*() { |
| 23 | const fs = yield* Fs.FileSystem |
| 24 | const data = yield* fs.readFile(`${__dirname}/fixtures/text.txt`) |
| 25 | const text = new TextDecoder().decode(data) |
| 26 | expect(text.trim()).toEqual("lorem ipsum dolar sit amet") |
| 27 | }))) |
| 28 | |
| 29 | it("makeTempDirectory", () => |
| 30 | runPromise(Effect.gen(function*() { |
| 31 | const fs = yield* Fs.FileSystem |
| 32 | let dir = "" |
| 33 | yield* Effect.scoped(Effect.gen(function*() { |
| 34 | dir = yield* fs.makeTempDirectory() |
| 35 | const stat = yield* fs.stat(dir) |
| 36 | expect(stat.type).toEqual("Directory") |
| 37 | })) |
| 38 | const stat = yield* fs.stat(dir) |
| 39 | expect(stat.type).toEqual("Directory") |
| 40 | }))) |
| 41 | |
| 42 | it("makeTempDirectoryScoped", () => |
| 43 | runPromise(Effect.gen(function*() { |
| 44 | const fs = yield* Fs.FileSystem |
| 45 | let dir = "" |
| 46 | yield* Effect.scoped( |
| 47 | Effect.gen(function*() { |
| 48 | dir = yield* fs.makeTempDirectoryScoped() |
| 49 | const stat = yield* fs.stat(dir) |
| 50 | expect(stat.type).toEqual("Directory") |
| 51 | }) |
| 52 | ) |
| 53 | const error = yield* Effect.flip(fs.stat(dir)) |
| 54 | assert(error.reason._tag === "NotFound") |
| 55 | }))) |
| 56 | |
| 57 | it.skipIf(options.accessOnDirectory === false)( |
| 58 | "access on a writable directory", |
| 59 | () => |
| 60 | runPromise(Effect.gen(function*() { |
| 61 | const fs = yield* Fs.FileSystem |
| 62 | yield* Effect.scoped(Effect.gen(function*() { |
| 63 | const dir = yield* fs.makeTempDirectoryScoped() |
| 64 | yield* fs.access(dir, { writable: true }) |
| 65 | })) |
| 66 | })) |
| 67 | ) |
| 68 | |
| 69 | it("makeTempFileScoped cleans up", () => |
| 70 | runPromise(Effect.gen(function*() { |
| 71 | const fs = yield* Fs.FileSystem |
| 72 | yield* Effect.scoped(Effect.gen(function*() { |
no test coverage detected