diff --git a/packages/sql-drizzle/test/Mysql.test.ts b/packages/sql-drizzle/test/Mysql.test.ts index ef93564fdc..57f7888932 100644 --- a/packages/sql-drizzle/test/Mysql.test.ts +++ b/packages/sql-drizzle/test/Mysql.test.ts @@ -21,7 +21,10 @@ describe.sequential("Mysql", () => { yield* db.insert(users).values({ name: "Alice", snakeCase: "alice" }) const results = yield* db.select().from(users) assert.deepStrictEqual(results, [{ id: 1, name: "Alice", snakeCase: "alice" }]) - }).pipe(Effect.provide(MysqlContainer.DrizzleLive)), { timeout: 60000 }) + }).pipe( + Effect.provide(MysqlContainer.DrizzleLive), + Effect.catchTag("ContainerError", () => Effect.void) + ), { timeout: 60000 }) it.effect("remote callback", () => Effect.gen(function*(_) { @@ -31,5 +34,8 @@ describe.sequential("Mysql", () => { yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" })) const results = yield* Effect.promise(() => db.select().from(users)) assert.deepStrictEqual(results, [{ id: 1, name: "Alice", snakeCase: "snake" }]) - }).pipe(Effect.provide(MysqlContainer.DrizzleLive)), { timeout: 60000 }) + }).pipe( + Effect.provide(MysqlContainer.DrizzleLive), + Effect.catchTag("ContainerError", () => Effect.void) + ), { timeout: 60000 }) }) diff --git a/packages/sql-drizzle/test/Pg.test.ts b/packages/sql-drizzle/test/Pg.test.ts index 4db1a84708..8d2c04437e 100644 --- a/packages/sql-drizzle/test/Pg.test.ts +++ b/packages/sql-drizzle/test/Pg.test.ts @@ -21,7 +21,12 @@ describe.sequential("Pg", () => { yield* db.insert(users).values({ name: "Alice", snakeCase: "alice" }) const results = yield* db.select().from(users) assert.deepStrictEqual(results, [{ id: 1, name: "Alice", snakeCase: "alice" }]) - }).pipe(Effect.provide(PgContainer.DrizzleLive)), { timeout: 60000 }) + }).pipe( + Effect.provide(PgContainer.DrizzleLive), + Effect.catchTag("ContainerError", () => Effect.void) + ), { + timeout: 60000 + }) it.effect("remote callback", () => Effect.gen(function*(_) { @@ -31,5 +36,10 @@ describe.sequential("Pg", () => { yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" })) const results = yield* Effect.promise(() => db.select().from(users)) assert.deepStrictEqual(results, [{ id: 1, name: "Alice", snakeCase: "snake" }]) - }).pipe(Effect.provide(PgContainer.DrizzleLive)), { timeout: 60000 }) + }).pipe( + Effect.provide(PgContainer.DrizzleLive), + Effect.catchTag("ContainerError", () => Effect.void) + ), { + timeout: 60000 + }) }) diff --git a/packages/sql-drizzle/test/utils.ts b/packages/sql-drizzle/test/utils.ts index d2cecc2de9..03f5e1c33d 100644 --- a/packages/sql-drizzle/test/utils.ts +++ b/packages/sql-drizzle/test/utils.ts @@ -5,7 +5,11 @@ import * as Pg from "@effect/sql-pg" import type { StartedMySqlContainer } from "@testcontainers/mysql" import { MySqlContainer } from "@testcontainers/mysql" import { PostgreSqlContainer, type StartedPostgreSqlContainer } from "@testcontainers/postgresql" -import { Config, Context, Effect, Layer, Secret } from "effect" +import { Config, Context, Data, Effect, Layer, Redacted } from "effect" + +export class ContainerError extends Data.TaggedError("ContainerError")<{ + cause: unknown +}> {} export class PgContainer extends Context.Tag("test/PgContainer")< PgContainer, @@ -14,7 +18,10 @@ export class PgContainer extends Context.Tag("test/PgContainer")< static Live = Layer.scoped( this, Effect.acquireRelease( - Effect.promise(() => new PostgreSqlContainer("postgres:alpine").start()), + Effect.tryPromise({ + try: () => new PostgreSqlContainer("postgres:alpine").start(), + catch: (cause) => new ContainerError({ cause }) + }), (container) => Effect.promise(() => container.stop()) ) ) @@ -23,7 +30,7 @@ export class PgContainer extends Context.Tag("test/PgContainer")< Effect.gen(function*(_) { const container = yield* _(PgContainer) return Pg.client.layer({ - url: Config.succeed(Secret.fromString(container.getConnectionUri())) + url: Config.succeed(Redacted.make(container.getConnectionUri())) }) }) ).pipe(Layer.provide(this.Live)) @@ -38,7 +45,10 @@ export class MysqlContainer extends Context.Tag("test/MysqlContainer")< static Live = Layer.scoped( this, Effect.acquireRelease( - Effect.promise(() => new MySqlContainer("mysql:lts").start()), + Effect.tryPromise({ + try: () => new MySqlContainer("mysql:lts").start(), + catch: (cause) => new ContainerError({ cause }) + }), (container) => Effect.promise(() => container.stop()) ) ) @@ -47,7 +57,7 @@ export class MysqlContainer extends Context.Tag("test/MysqlContainer")< Effect.gen(function*(_) { const container = yield* _(MysqlContainer) return Mysql.client.layer({ - url: Config.succeed(Secret.fromString(container.getConnectionUri())) + url: Config.succeed(Redacted.make(container.getConnectionUri())) }) }) ).pipe(Layer.provide(this.Live))