1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";
3
4import { requireKotlinTools } from "./mobile-native-static-check.ts";
5
6it.effect("allows Kotlin checks when ktlint and detekt are on PATH", () =>
7 requireKotlinTools({ ktlint: true, detekt: true }),
8);
9
10it.effect("fails when ktlint or detekt is missing instead of skipping", () =>
11 Effect.gen(function* () {
12 const ktlintError = yield* requireKotlinTools({ ktlint: false, detekt: true }).pipe(
13 Effect.flip,
14 );
15 if (ktlintError._tag !== "NativeStaticCheckMissingToolError") {
16 return assert.fail(`Unexpected error: ${ktlintError._tag}`);
17 }
18 assert.deepEqual(ktlintError.commands, ["ktlint"]);
19
20 const bothError = yield* requireKotlinTools({ ktlint: false, detekt: false }).pipe(Effect.flip);
21 if (bothError._tag !== "NativeStaticCheckMissingToolError") {
22 return assert.fail(`Unexpected error: ${bothError._tag}`);
23 }
24 assert.deepEqual(bothError.commands, ["ktlint", "detekt"]);
25 }),
26);