37 lines · 1.3 KB · TypeScript
RawDownload
import * as NodeServices from "@effect/platform-node/NodeServices";import { NetService } from "@t3tools/shared/Net";import { assert, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as Layer from "effect/Layer";import * as CliError from "effect/unstable/cli/CliError";import { Command } from "effect/unstable/cli"; import { cli } from "./cli.ts"; const CliRuntimeLayer = Layer.mergeAll(NodeServices.layer, NetService.layer); it.layer(NodeServices.layer)("cli log-level parsing", (it) => {  it.effect("accepts the built-in lowercase log-level flag values", () =>    Command.runWith(cli, { version: "0.0.0" })(["--log-level", "debug", "--version"]).pipe(      Effect.provide(CliRuntimeLayer),    ),  );   it.effect("rejects invalid log-level casing before launching the server", () =>    Effect.gen(function* () {      const error = yield* Command.runWith(cli, { version: "0.0.0" })([        "--log-level",        "Debug",      ]).pipe(Effect.provide(CliRuntimeLayer), Effect.flip);       if (!CliError.isCliError(error)) {        assert.fail(`Expected CliError, got ${String(error)}`);      }      if (error._tag !== "InvalidValue") {        assert.fail(`Expected InvalidValue, got ${error._tag}`);      }      assert.equal(error.option, "log-level");      assert.equal(error.value, "Debug");    }),  );});