aboutsummaryrefslogtreecommitdiff
path: root/tst
diff options
context:
space:
mode:
Diffstat (limited to 'tst')
-rw-r--r--tst/args.spec.ts104
-rw-r--r--tst/util/scheduler.spec.ts (renamed from tst/config.spec.ts)0
2 files changed, 104 insertions, 0 deletions
diff --git a/tst/args.spec.ts b/tst/args.spec.ts
new file mode 100644
index 0000000..2da0e83
--- /dev/null
+++ b/tst/args.spec.ts
@@ -0,0 +1,104 @@
+import { test, expect } from "bun:test";
+import * as E from "fp-ts/lib/Either";
+import * as O from "fp-ts/lib/Option";
+import { parseArgs, type Args } from "../src/args";
+import { TestType } from "../src/canary";
+
+test("should return an error if argv has less than 2 arguments", () => {
+ const result = parseArgs([]);
+ expect(E.isLeft(result)).toBe(true);
+ expect(E.left<string, Args>("bad argv")).toEqual(result);
+});
+
+test("should return an error if --tests-file is not specified", () => {
+ const result = parseArgs(["node", "script.js", "--test-name", "test"]);
+ expect(E.isLeft(result)).toBe(true);
+ expect(E.left<string, Args>("please specify a test file")).toEqual(result);
+});
+
+test("should return an error if test type is invalid", () => {
+ const result = parseArgs([
+ "bun",
+ "script.js",
+ "--tests-file",
+ "testFile",
+ "--test-type",
+ "invalidType",
+ ]);
+ expect(E.isLeft(result)).toBe(true);
+ expect(E.left<string, Args>("bad test type invalidType")).toEqual(result);
+});
+
+test("should parse arguments correctly with all options specified", () => {
+ const result = parseArgs([
+ "node",
+ "script.js",
+ "--tests-file",
+ "testFile",
+ "--test-name",
+ "testName",
+ "--test-type",
+ "dns",
+ ]);
+
+ const expected: Args = {
+ testsFile: "testFile",
+ testName: O.some("testName"),
+ testType: O.some(TestType.DNS),
+ };
+
+ expect(E.isRight(result)).toBe(true);
+ expect(E.right<string, Args>(expected)).toEqual(result);
+});
+
+test("should parse arguments correctly with only testsFile specified", () => {
+ const result = parseArgs(["node", "script.js", "--tests-file", "testFile"]);
+
+ const expected: Args = {
+ testsFile: "testFile",
+ testName: O.none,
+ testType: O.none,
+ };
+
+ expect(E.isRight(result)).toBe(true);
+ expect(E.right<string, Args>(expected)).toEqual(result);
+});
+
+test("should handle missing values for flags gracefully", () => {
+ const result = parseArgs([
+ "node",
+ "script.js",
+ "--tests-file",
+ "testFile",
+ "--test-name",
+ ]);
+
+ const expected: Args = {
+ testsFile: "testFile",
+ testName: O.none,
+ testType: O.none,
+ };
+
+ expect(E.isRight(result)).toBe(true);
+ expect(E.right<string, Args>(expected)).toEqual(result);
+});
+
+test("should not parse args as values", () => {
+ const result = parseArgs([
+ "node",
+ "script.js",
+ "--tests-file",
+ "testFile",
+ "--test-name",
+ "--tests-file",
+ ]);
+
+ const expected: Args = {
+ testsFile: "testFile",
+ testName: O.none,
+ testType: O.none,
+ };
+
+ expect(E.isRight(result)).toBe(true);
+ expect(E.right<string, Args>(expected)).toEqual(result);
+});
diff --git a/tst/config.spec.ts b/tst/util/scheduler.spec.ts
index e69de29..e69de29 100644
--- a/tst/config.spec.ts
+++ b/tst/util/scheduler.spec.ts