From 55d7b38586be1677300f9f661b7f3b87299e2442 Mon Sep 17 00:00:00 2001 From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com> Date: Thu, 2 Nov 2023 18:29:10 -0400 Subject: [PATCH] tests: improve --- .gitignore | 4 +- deno.jsonc | 13 +- mod.ts | 117 +++++--- mod_bench.ts | 3 - mod_test.ts | 16 +- tests/{.imports.json => deno_bench.jsonc} | 0 tests/deno_bundle.jsonc | 1 + tests/deno_cache.jsonc | 3 +- tests/deno_check.jsonc | 17 +- tests/deno_common.jsonc | 344 ++++++++++++++++++++-- tests/deno_compile.jsonc | 1 + tests/deno_coverage.jsonc | 49 ++- tests/deno_doc.jsonc | 18 +- tests/deno_eval.jsonc | 1 + tests/deno_fmt.jsonc | 61 +++- tests/deno_info.jsonc | 23 +- tests/deno_install.jsonc | 1 + tests/deno_lint.jsonc | 81 ++--- tests/deno_make.jsonc | 24 +- tests/deno_permissions.jsonc | 108 ------- tests/deno_repl.jsonc | 1 + tests/deno_run.jsonc | 53 +--- tests/deno_test.jsonc | 48 ++- tests/deno_types.jsonc | 3 +- tests/deno_uninstall.jsonc | 1 + tests/deno_vendor.jsonc | 15 +- tests/imports.json | 1 + 27 files changed, 658 insertions(+), 349 deletions(-) delete mode 100644 mod_bench.ts rename tests/{.imports.json => deno_bench.jsonc} (100%) create mode 100644 tests/deno_bundle.jsonc create mode 100644 tests/deno_compile.jsonc create mode 100644 tests/deno_eval.jsonc create mode 100644 tests/deno_install.jsonc delete mode 100644 tests/deno_permissions.jsonc create mode 100644 tests/deno_repl.jsonc create mode 100644 tests/deno_uninstall.jsonc create mode 100644 tests/imports.json diff --git a/.gitignore b/.gitignore index 49f5818..95e23bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ .coverage .deno-make.json -tests/.coverage -tests/.coverage.report -tests/.junit.xml +tests/.* diff --git a/deno.jsonc b/deno.jsonc index 7fa1b8c..1140ab8 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -8,7 +8,8 @@ "task": [ "rm -rf .coverage &&", "deno test &&", - "deno coverage .coverage" + "deno coverage .coverage &&", + "rm -rf tests/.coverage tests/.coverage.report tests/.deno.lock tests/.junit.xml" ], "deno": { "test": { @@ -41,13 +42,3 @@ "exclude": [".coverage", ".deno-make.json"] } } -/* -bench -bundle -compile -_eval -fmt -install -uninstall -repl -*/ diff --git a/mod.ts b/mod.ts index 4d49e8c..ad34935 100644 --- a/mod.ts +++ b/mod.ts @@ -23,8 +23,8 @@ const runnable = is.object({ location: is.string().optional().transform((v) => v ? `--location='${v}'` : ""), seed: is.number().optional().transform((v) => typeof v === "number" ? `--seed=${v}` : ""), v8Flags: is.array(is.string()).optional().transform((v) => v?.length ? `--v8-flags='${v.join(",")}'` : ""), - ignoreCertificateErrors: is.boolean().optional().transform((v) => - v === true ? "--unsafely-ignore-certificate-errors" : "" + certificateErrors: is.boolean().optional().transform((v) => + v === false ? "--unsafely-ignore-certificate-errors" : "" ), }) @@ -120,9 +120,7 @@ const _modules = is.object({ npm: is.boolean().optional().transform((v) => v === false ? "--no-npm" : ""), check: is.union([ is.boolean().transform((v) => v ? "--check=all" : "--no-check"), - is.object({ - remote: is.boolean().transform((v) => v ? "--check=all" : "--check=all --no-check=remote"), - }).transform((v) => Object.values(v).filter(Boolean).join(" ")), + is.string().min(1).transform((v) => `--check=${v}`), ]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), reload: is.union([ is.boolean().transform((v) => v ? "--reload" : ""), @@ -135,7 +133,14 @@ const _modules = is.object({ /** Module flags */ const modules = { all: _modules.optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), - nocache: _modules.pick({ check: true, reload: true, npm: true, remote: true, node_modules: true, vendor: true }) + nocache: _modules.pick({ + check: true, + reload: true, + npm: true, + remote: true, + node_modules: true, + vendor: true, + }) .optional() .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), vendor: _modules.pick({ @@ -143,10 +148,15 @@ const modules = { node_modules: true, vendor: true, }).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), - doc: _modules.pick({ reload: true, npm: true, remote: true }).optional().transform((v) => - Object.values(v ?? {}).filter(Boolean).join(" ") - ), - nocheck: _modules.pick({ reload: true, npm: true, remote: true, node_modules: true, vendor: true }).optional() + doc: _modules.pick({ reload: true, npm: true, remote: true }).optional() + .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), + nocheck: _modules.pick({ + reload: true, + npm: true, + remote: true, + node_modules: true, + vendor: true, + }).optional() .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), } @@ -154,9 +164,9 @@ const modules = { const inspect = is.union([ is.string().transform((v) => v ? `--inspect='${v}'` : ""), is.object({ - listen: is.string().transform((v) => v ? `--inspect='${v}'` : ""), - break: is.string().transform((v) => v ? `--inspect-brk='${v}'` : ""), - wait: is.string().transform((v) => v.length ? `--inspect-wait='${v}'` : ""), + listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""), + break: is.string().min(1).optional().transform((v) => v ? `--inspect-brk='${v}'` : ""), + wait: is.string().min(1).optional().transform((v) => v ? `--inspect-wait='${v}'` : ""), }), ]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")) @@ -218,14 +228,17 @@ const coverage = common.pick({ unstable: true, quiet: true }).extend({ output: is.string().optional().transform((v) => v ? `--output='${v}'` : ""), }).transform((v) => Object.values(v).filter(Boolean).join(" ")) -const doc = common.pick({ unstable: true, quiet: true, importMap: true }).extend({ - lock: lock.read, - modules: modules.doc, - private: is.boolean().optional().transform((v) => v ? "--private" : ""), - json: is.boolean().optional().transform((v) => v ? "--json" : ""), -}).transform((v) => Object.values(v).filter(Boolean).join(" ")) +const doc = common.pick({ unstable: true, quiet: true, importMap: true }) + .extend({ + lock: lock.read, + modules: modules.doc, + private: is.boolean().optional().transform((v) => v ? "--private" : ""), + json: is.boolean().optional().transform((v) => v ? "--json" : ""), + }).transform((v) => Object.values(v).filter(Boolean).join(" ")) -const _eval = common.merge(runnable.pick({ location: true, v8Flags: true, seed: true })).extend({ +const _eval = common.merge( + runnable.pick({ location: true, v8Flags: true, seed: true }), +).extend({ lock: lock.write, modules: modules.all, inspect, @@ -262,10 +275,6 @@ const install = common.merge(runnable).extend({ force: is.boolean().optional().transform((v) => v ? "--force" : ""), }).transform((v) => Object.values(v).filter(Boolean).join(" ")) -const uninstall = common.pick({ quiet: true, unstable: true }).extend({ - root: is.string().optional().transform((v) => v ? `--root='${v}'` : ""), -}).transform((v) => Object.values(v).filter(Boolean).join(" ")) - const lint = common.pick({ config: true, unstable: true, quiet: true }).extend({ rules: is.object({ tags: is.array(is.string()).optional().transform((v) => v?.length ? `--rules-tags=${v.join(",")}` : ""), @@ -326,6 +335,10 @@ const types = common.pick({ quiet: true, }).transform((v) => Object.values(v).filter(Boolean).join(" ")) +const uninstall = common.pick({ quiet: true, unstable: true }).extend({ + root: is.string().optional().transform((v) => v ? `--root='${v}'` : ""), +}).transform((v) => Object.values(v).filter(Boolean).join(" ")) + const vendor = common.extend({ lock: lock.check, modules: modules.vendor, @@ -344,11 +357,16 @@ const _make = is.object({ task: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v), description: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v) .default(""), - env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform((v) => + env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform(( + v, + ) => Object.fromEntries( - Object.entries(v).map(([k, v]) => [k, v === true ? Deno.env.get(k) ?? "" : v === false ? "" : v]), + Object.entries(v).map(( + [k, v], + ) => [k, v === true ? Deno.env.get(k) ?? "" : v === false ? "" : v]), ) ).default(() => ({})), + cwd: is.string().optional(), deno: is.object({ bench, bundle, @@ -372,18 +390,33 @@ const _make = is.object({ }) /** Compute command to execute after applying deno flags */ -export function command(raw: string, { deno }: Pick, "deno">, { colors = false } = {}) { +export function command( + raw: string, + { deno }: Pick, "deno">, + { colors = false } = {}, +) { for (const [subcommand, flags] of Object.entries(deno)) { - raw = raw.replaceAll(`deno ${subcommand}`, `deno ${subcommand} ${colors ? italic(underline(flags)) : flags}`) + raw = raw.replaceAll( + `deno ${subcommand}`, + `deno ${subcommand} ${colors ? italic(underline(flags)) : flags}`, + ) } return raw } /** Entry point */ export async function make( - { task = "", config = "deno.jsonc", log = console.log, exit = true, stdio = "inherit" as "inherit" | "null" } = {}, + { + task = "", + config = "deno.jsonc", + log = console.log, + exit = true, + stdio = "inherit" as "inherit" | "null", + } = {}, ) { - const { "+tasks": _tasks = {} } = JSONC.parse(await Deno.readTextFile(config)) as { + const { "+tasks": _tasks = {} } = JSONC.parse( + await Deno.readTextFile(config), + ) as { "+tasks"?: Record } const tasks = Object.fromEntries( @@ -397,7 +430,7 @@ export async function make( ) if (task) { const temp = ".deno-make.json" - const { task: raw, env, deno } = tasks[task] + const { task: raw, env, deno, cwd } = tasks[task] try { const make = command(raw, { deno }) await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } })) @@ -407,6 +440,7 @@ export async function make( stderr: stdio, stdin: stdio, env, + cwd, windowsRawArguments: true, }) const { code } = await process.output() @@ -418,18 +452,31 @@ export async function make( await Deno.remove(temp) } } else if (Object.keys(tasks).length) { - for (const [name, { task, description, env, deno }] of Object.entries(tasks)) { + for ( + const [name, { task, description, env, cwd, deno }] of Object.entries( + tasks, + ) + ) { const { icon = "" } = description.match(/^(?[\p{Emoji}\u200d]+) /u)?.groups ?? {} log(bgBrightBlue(`${icon} ${bold(name)}`.trim().padEnd(32))) log(description.replace(icon, "").trim()) if (Object.keys(env).length) { log(gray(`Environment variables:`)) for (const [k, v] of Object.entries(env)) { - const inherited = - ((_tasks as Record>)[name].env[k] as unknown as string | boolean) === true - log(gray(` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}`.trim())) + const inherited = ((_tasks as Record>)[name] + .env[k] as unknown as string | boolean) === true + log( + gray( + ` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}` + .trim(), + ), + ) } } + if (cwd) { + log(gray(`Working directory:`)) + log(gray(` ${cwd}`)) + } log(gray(`Task:`)) log(gray(` ${command(task, { deno }, { colors: true })}`)) log("") diff --git a/mod_bench.ts b/mod_bench.ts deleted file mode 100644 index ca817ca..0000000 --- a/mod_bench.ts +++ /dev/null @@ -1,3 +0,0 @@ -Deno.bench("URL parsing", () => { - new URL("https://deno.land") -}) diff --git a/mod_test.ts b/mod_test.ts index 97522ba..8fde8b7 100644 --- a/mod_test.ts +++ b/mod_test.ts @@ -11,8 +11,20 @@ for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) { continue } Deno.test(`${name}: ${task}`, async () => { - const { code } = await make({ task, config: path, log: () => null, exit: false, stdio: "null" }) - expect(code).to.equal(0) + const stdio = [] as string[] + const { code } = await make({ + task, + config: path, + log: (message) => stdio.push(message), + exit: false, + stdio: "null", + }) + try { + expect(code).to.equal(0) + } catch (error) { + console.log(...stdio) + throw error + } }) } } diff --git a/tests/.imports.json b/tests/deno_bench.jsonc similarity index 100% rename from tests/.imports.json rename to tests/deno_bench.jsonc diff --git a/tests/deno_bundle.jsonc b/tests/deno_bundle.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_bundle.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_cache.jsonc b/tests/deno_cache.jsonc index 0c6c783..66c4a14 100644 --- a/tests/deno_cache.jsonc +++ b/tests/deno_cache.jsonc @@ -4,7 +4,8 @@ }, "+tasks": { "flags:none": { - "task": "deno cache tests/mod.ts" + "task": "deno cache mod.ts", + "cwd": "tests" } } } diff --git a/tests/deno_check.jsonc b/tests/deno_check.jsonc index ddaddfb..6afbbb2 100644 --- a/tests/deno_check.jsonc +++ b/tests/deno_check.jsonc @@ -4,15 +4,26 @@ }, "+tasks": { "flags:none": { - "task": "deno check tests/mod.ts" + "task": "deno check mod.ts", + "cwd": "tests" }, - "flags:all": { - "task": "deno check tests/mod.ts", + "flags:boolean_true": { + "task": "deno check mod.ts", + "cwd": "tests", "deno": { "check": { "all": true } } + }, + "flags:boolean_false": { + "task": "deno check mod.ts", + "cwd": "tests", + "deno": { + "check": { + "all": false + } + } } } } diff --git a/tests/deno_common.jsonc b/tests/deno_common.jsonc index 6b0b288..d42a661 100644 --- a/tests/deno_common.jsonc +++ b/tests/deno_common.jsonc @@ -3,42 +3,47 @@ "make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0" }, "+tasks": { - "flags:general": { - "task": "deno run tests/mod.ts", + "flags:general:boolean": { + "task": "deno help", + "cwd": "tests", "deno": { "run": { "unstable": true, "quiet": true, - "seed": 0, - "ignoreCertificateErrors": true + "certificateErrors": true + }, + "test": { + "unstable": false, + "quiet": false, + "certificateErrors": false } } }, - "flags:resolution": { - "task": "deno run tests/mod.ts", + "flags:general:string": { + "task": "deno help", + "cwd": "tests", "deno": { "run": { - "importMap": "tests/.imports.json", + "importMap": "imports.json", + "cert": "/dev/null", "location": "https://deno.test" } } }, - "flags:config": { - "task": "deno run tests/mod.ts", + "flags:general:number": { + "task": "deno help", + "cwd": "tests", + "deno": { "run": { - "config": "tests/deno_common.jsonc" - }, - "lint": { - "config": false - }, - "fmt": { - "config": true + "seed": 0 } } }, - "flags:v8_flags": { - "task": "deno run tests/mod.ts", + "flags:general:array": { + "task": "deno help", + "cwd": "tests", + "deno": { "run": { "v8Flags": ["--print-code"] @@ -47,17 +52,298 @@ "v8Flags": [] } } + }, + "flags:config": { + "task": "deno help", + "cwd": "tests", + "deno": { + "run": { + "config": "deno.jsonc" + }, + "test": { + "config": true + }, + "lint": { + "config": false + } + } + }, + "flags:lock:string": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "vendor": { + "lock": "deno.lock" + }, + "info": { + "lock": "deno.lock" + }, + "run": { + "lock": "deno.lock" + } + } + }, + "flags:lock:boolean": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "info": { + "lock": false + }, + "run": { + "lock": false + } + } + }, + "flags:lock:object": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "lock": { + "write": true + } + }, + "test": { + "lock": { + "file": "deno.lock", + "write": false + } + } + } + }, + "flags:permissions:all": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "permissions": { + "allow": true, + "prompt": true + } + }, + "test": { + "permissions": { + "allow": false + } + } + } + }, + "flags:permissions:boolean": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "permissions": { + "read": true, + "write": true, + "net": true, + "env": true, + "sys": true, + "run": true, + "ffi": true, + "hrtime": true, + "prompt": true + } + }, + "test": { + "permissions": { + "read": false, + "write": false, + "net": false, + "env": false, + "sys": false, + "run": false, + "ffi": false, + "hrtime": false, + "prompt": false + } + } + } + }, + "flags:permissions:array": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "permissions": { + "read": ["test"], + "write": ["test"], + "net": ["https://example.com"], + "env": ["TEST"], + "sys": ["osRelease"], + "run": ["deno"], + "ffi": ["test"] + } + }, + "test": { + "permissions": { + "read": [], + "write": [], + "net": [], + "env": [], + "sys": [], + "run": [], + "ffi": [] + } + } + } + }, + "flags:permissions:allow_deny_object": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "permissions": { + "read": { "allow": ["test"], "deny": ["test"] }, + "write": { "allow": ["test"], "deny": ["test"] }, + "net": { "allow": ["https://example.com"], "deny": ["https://example.com"] }, + "env": { "allow": ["TEST"], "deny": ["TEST"] }, + "sys": { "allow": ["osRelease"], "deny": ["osRelease"] }, + "run": { "allow": ["deno"], "deny": ["deno"] }, + "ffi": { "allow": ["test"], "deny": ["test"] } + } + }, + "test": { + "permissions": { + "read": { "allow": [], "deny": [] }, + "write": { "allow": [], "deny": [] }, + "net": { "allow": [], "deny": [] }, + "env": { "allow": [], "deny": [] }, + "sys": { "allow": [], "deny": [] }, + "run": { "allow": [], "deny": [] }, + "ffi": { "allow": [], "deny": [] } + } + } + } + }, + "flags:modules:boolean": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "cached": true, + "remote": true, + "npm": true, + "check": true, + "reload": true, + "node_modules": true, + "vendor": true + }, + "test": { + "cached": false, + "remote": false, + "npm": false, + "check": false, + "reload": false, + "node_modules": false, + "vendor": false + } + } + }, + "flags:modules:string": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "check": "all" + } + } + }, + "flags:modules:array": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "reload": ["npm:"] + }, + "test": { + "reload": [] + } + } + }, + "flags:inspect:string": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "inspect": "127.0.0.1:9229" + } + } + }, + "flags:inspect:object": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "inspect": { + "listen": "127.0.0.1:9229", + "break": "127.0.0.1:9230", + "wait:": "127.0.0.1:9229" + } + }, + "test": { + "inspect": { + } + } + } + }, + "flags:watch:boolean": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "watch": true + }, + "test": { + "watch": false + } + } + }, + "flags:watch:array": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "watch": ["mod.ts"] + }, + "test": { + "watch": [] + } + } + }, + "flags:watch:object": { + "task": "deno help", + "cwd": "tests", + + "deno": { + "run": { + "watch": { + "files": ["mod.ts"], + "clearScreen": true + } + }, + "test": { + "watch": { + "files": [], + "clearScreen": false + } + } + } } } } - -/** Common flags -const common = is.object({ - config: is.union([ - is.boolean().transform((v) => v === false ? "--no-config" : ""), - is.string().transform((v) => v ? `--config='${v}'` : ""), - ]).optional(), - cert: is.string().optional().transform((v) => v ? `--cert='${v}'` : ""), -}) - -*/ diff --git a/tests/deno_compile.jsonc b/tests/deno_compile.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_compile.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_coverage.jsonc b/tests/deno_coverage.jsonc index c17fa28..71dd6c3 100644 --- a/tests/deno_coverage.jsonc +++ b/tests/deno_coverage.jsonc @@ -4,10 +4,30 @@ }, "+tasks": { "flags:none": { - "task": "deno coverage tests/.coverage" + "task": "deno coverage .coverage", + "cwd": "tests" }, - "flags:filters": { - "task": "deno coverage tests/.coverage", + "flags:boolean_true": { + "task": "deno coverage .coverage", + "cwd": "tests", + "deno": { + "coverage": { + "lcov": true + } + } + }, + "flags:boolean_false": { + "task": "deno coverage .coverage", + "cwd": "tests", + "deno": { + "coverage": { + "lcov": false + } + } + }, + "flags:string": { + "task": "deno coverage .coverage", + "cwd": "tests", "deno": { "coverage": { "include": "^file:", @@ -15,12 +35,31 @@ } } }, + "flags:array": { + "task": "deno coverage .coverage", + "cwd": "tests", + "deno": { + "coverage": { + "ignore": ["foo"] + } + } + }, + "flags:array_empty": { + "task": "deno coverage .coverage", + "cwd": "tests", + "deno": { + "coverage": { + "ignore": [] + } + } + }, "flags:lcov": { - "task": "deno coverage tests/.coverage", + "task": "deno coverage .coverage", + "cwd": "tests", "deno": { "coverage": { "lcov": true, - "output": "tests/.coverage.report" + "output": ".coverage.report" } } } diff --git a/tests/deno_doc.jsonc b/tests/deno_doc.jsonc index 0125b17..a8a3937 100644 --- a/tests/deno_doc.jsonc +++ b/tests/deno_doc.jsonc @@ -4,16 +4,28 @@ }, "+tasks": { "flags:none": { - "task": "deno doc tests/mod.ts" + "task": "deno doc mod.ts", + "cwd": "tests" }, - "flags:options": { - "task": "deno doc tests/mod.ts", + "flags:boolean_true": { + "task": "deno doc mod.ts", + "cwd": "tests", "deno": { "doc": { "private": true, "json": true } } + }, + "flags:boolean_false": { + "task": "deno doc mod.ts", + "cwd": "tests", + "deno": { + "doc": { + "private": false, + "json": false + } + } } } } diff --git a/tests/deno_eval.jsonc b/tests/deno_eval.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_eval.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_fmt.jsonc b/tests/deno_fmt.jsonc index b87fe2e..bf98d34 100644 --- a/tests/deno_fmt.jsonc +++ b/tests/deno_fmt.jsonc @@ -4,23 +4,70 @@ }, "+tasks": { "flags:none": { - "task": "deno check tests/mod.ts" + "task": "deno fmt mod.ts", + "cwd": "tests" }, - "flags:fmt": { - "task": "deno check tests/mod.ts", + "flags:boolean_true": { + "task": "deno fmt mod.ts", + "cwd": "tests", "deno": { "fmt": { "check": true, "tabs": true, - "lineWidth": 80, - "indentWidth": 2, "singleQuote": true, - "semicolons": false, + "semicolons": true + } + } + }, + "flags:boolean_false": { + "task": "deno fmt mod.ts", + "cwd": "tests", + "deno": { + "fmt": { + "check": false, + "tabs": false, + "singleQuote": false, + "semicolons": false + } + } + }, + "flags:string": { + "task": "deno fmt mod.ts", + "cwd": "tests", + "deno": { + "fmt": { "proseWrap": "always", - "ignore": ["*"], "ext": "js" } } + }, + "flags:number": { + "task": "deno fmt mod.ts", + "cwd": "tests", + "deno": { + "fmt": { + "lineWidth": 80, + "indentWidth": 2 + } + } + }, + "flags:array": { + "task": "deno fmt mod.ts", + "cwd": "tests", + "deno": { + "fmt": { + "ignore": ["*"] + } + } + }, + "flags:array_empty": { + "task": "deno fmt mod.ts", + "cwd": "tests", + "deno": { + "fmt": { + "ignore": [] + } + } } } } diff --git a/tests/deno_info.jsonc b/tests/deno_info.jsonc index 01540ad..966731d 100644 --- a/tests/deno_info.jsonc +++ b/tests/deno_info.jsonc @@ -4,29 +4,24 @@ }, "+tasks": { "flags:none": { - "task": "deno info" - }, - "flags:lock_1": { "task": "deno info", + "cwd": "tests" + }, + "flags:boolean_true": { + "task": "deno info", + "cwd": "tests", "deno": { "info": { - "lock": true + "json": true } } }, - "flags:lock_2": { + "flags:boolean_false": { "task": "deno info", + "cwd": "tests", "deno": { "info": { - "lock": false - } - } - }, - "flags:lock_3": { - "task": "deno info", - "deno": { - "info": { - "lock": "deno.lock" + "json": false } } } diff --git a/tests/deno_install.jsonc b/tests/deno_install.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_install.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_lint.jsonc b/tests/deno_lint.jsonc index 0cdea17..13484d3 100644 --- a/tests/deno_lint.jsonc +++ b/tests/deno_lint.jsonc @@ -4,10 +4,50 @@ }, "+tasks": { "flags:none": { - "task": "deno types" - }, - "flags:rules_1": { "task": "deno lint", + "cwd": "tests" + }, + "flags:json": { + "task": "deno lint", + "cwd": "tests", + "deno": { + "lint": { + "json": true, + "compact": false + } + } + }, + "flags:compact": { + "task": "deno lint", + "cwd": "tests", + "deno": { + "lint": { + "compact": true, + "json": false + } + } + }, + "flags:array": { + "task": "deno lint", + "cwd": "tests", + "deno": { + "lint": { + "ignore": ["*.js"] + } + } + }, + "flags:array_empty": { + "task": "deno lint", + "cwd": "tests", + "deno": { + "lint": { + "ignore": [] + } + } + }, + "flags:rules": { + "task": "deno lint", + "cwd": "tests", "deno": { "lint": { "rules": { @@ -18,8 +58,9 @@ } } }, - "flags:rules_2": { + "flags:rules_empty": { "task": "deno lint", + "cwd": "tests", "deno": { "lint": { "rules": { @@ -29,38 +70,6 @@ } } } - }, - "flags:json": { - "task": "deno lint", - "deno": { - "lint": { - "json": true - } - } - }, - "flags:compact": { - "task": "deno lint", - "deno": { - "lint": { - "compact": true - } - } - }, - "flags:ignore_1": { - "task": "deno lint", - "deno": { - "lint": { - "ignore": ["*.js"] - } - } - }, - "flags:ignore_2": { - "task": "deno lint", - "deno": { - "lint": { - "ignore": [] - } - } } } } diff --git a/tests/deno_make.jsonc b/tests/deno_make.jsonc index 00ed5d9..6a40965 100644 --- a/tests/deno_make.jsonc +++ b/tests/deno_make.jsonc @@ -4,22 +4,30 @@ }, "+tasks": { "make": { - "task": "exit 1", - "description": "🦕 test", - "env": { - "DINOSAUR": "🦖" - } - }, - "make:no_description": { "task": "exit 1" }, + "make:description": { + "task": "exit 1", + "description": "🦕 test" + }, "make:deno": { - "task": "deno quiet", + "task": "deno info", "deno": { "info": { "quiet": true } } + }, + "make:env": { + "task": "exit 1", + "env": { + "DINOSAUR": "🦖", + "INHERIT": true + } + }, + "make:cwd": { + "task": "cwd", + "cwd": "tests" } } } diff --git a/tests/deno_permissions.jsonc b/tests/deno_permissions.jsonc deleted file mode 100644 index a175b96..0000000 --- a/tests/deno_permissions.jsonc +++ /dev/null @@ -1,108 +0,0 @@ -{ - "tasks": { - "make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0" - }, - "+tasks": { - "flags:all": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "permissions": { - "allow": true, - "prompt": true - } - }, - "test": { - "permissions": { - "allow": false - } - } - } - }, - "flags:booleans": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "permissions": { - "read": true, - "write": true, - "net": true, - "env": true, - "sys": true, - "run": true, - "ffi": true, - "hrtime": true, - "prompt": true - } - }, - "test": { - "permissions": { - "read": false, - "write": false, - "net": false, - "env": false, - "sys": false, - "run": false, - "ffi": false, - "hrtime": false, - "prompt": false - } - } - } - }, - "flags:paths": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "permissions": { - "read": ["test"], - "write": ["test"], - "net": ["https://example.com"], - "env": ["FOO"], - "sys": ["osRelease"], - "run": ["deno"], - "ffi": ["test"] - } - }, - "test": { - "permissions": { - "read": [], - "write": [], - "net": [], - "env": [], - "sys": [], - "run": [], - "ffi": [] - } - } - } - }, - "flags:allow_deny": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "permissions": { - "read": { "allow": ["test"], "deny": ["test"] }, - "write": { "allow": ["test"], "deny": ["test"] }, - "net": { "allow": ["https://example.com"], "deny": ["https://example.com"] }, - "env": { "allow": ["FOO"], "deny": ["FOO"] }, - "sys": { "allow": ["osRelease"], "deny": ["osRelease"] }, - "run": { "allow": ["deno"], "deny": ["deno"] }, - "ffi": { "allow": ["test"], "deny": ["test"] } - } - }, - "test": { - "permissions": { - "read": { "allow": [], "deny": [] }, - "write": { "allow": [], "deny": [] }, - "net": { "allow": [], "deny": [] }, - "env": { "allow": [], "deny": [] }, - "sys": { "allow": [], "deny": [] }, - "run": { "allow": [], "deny": [] }, - "ffi": { "allow": [], "deny": [] } - } - } - } - } - } -} diff --git a/tests/deno_repl.jsonc b/tests/deno_repl.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_repl.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_run.jsonc b/tests/deno_run.jsonc index d0cd378..82bd9a0 100644 --- a/tests/deno_run.jsonc +++ b/tests/deno_run.jsonc @@ -4,60 +4,17 @@ }, "+tasks": { "flags:none": { - "task": "deno run tests/mod.ts" + "task": "deno run mod.ts", + "cwd": "tests" }, - "flags:ext": { - "task": "deno run tests/mod.ts", + "flags:string": { + "task": "deno run mod.ts", + "cwd": "tests", "deno": { "run": { "ext": "ts" } } - }, - "flags:lock_1": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "lock": true - } - } - }, - "flags:lock_2": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "lock": false - } - } - }, - "flags:lock_3": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "lock": { - "write": false - } - } - } - }, - "flags:lock_4": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "lock": { - "file": "tests/.deno.lock", - "write": true - } - } - } - }, - "flags:lock_5": { - "task": "deno run tests/mod.ts", - "deno": { - "run": { - "lock": "deno.lock" - } - } } } } diff --git a/tests/deno_test.jsonc b/tests/deno_test.jsonc index 97185f5..1f58e1d 100644 --- a/tests/deno_test.jsonc +++ b/tests/deno_test.jsonc @@ -4,20 +4,15 @@ }, "+tasks": { "flags:none": { - "task": "deno test tests/mod_test.ts" + "task": "deno test mod_test.ts", + "cwd": "tests" }, - "flags:doc": { - "task": "deno test tests/mod_test.ts", - "deno": { - "test": { - "doc": true - } - } - }, - "flags:execution_1": { - "task": "deno test tests/mod_test.ts", + "flags:boolean_true": { + "task": "deno test mod_test.ts", + "cwd": "tests", "deno": { "test": { + "doc": true, "traceOps": true, "failFast": true, "shuffle": true, @@ -27,10 +22,12 @@ } } }, - "flags:execution_2": { - "task": "deno test tests/mod_test.ts", + "flags:boolean_false": { + "task": "deno test mod_test.ts", + "cwd": "tests", "deno": { "test": { + "doc": false, "traceOps": false, "failFast": false, "shuffle": false, @@ -40,8 +37,9 @@ } } }, - "flags:execution_number": { - "task": "deno test tests/mod_test.ts", + "flags:number": { + "task": "deno test mod_test.ts", + "cwd": "tests", "deno": { "test": { "failFast": 1, @@ -49,39 +47,35 @@ } } }, - "flags:reporter": { + "flags:string": { "task": "deno test tests/mod_test.ts", + "cwd": "tests", "deno": { "test": { - "coverage": "tests/.coverage", + "coverage": ".coverage", "reporter": "junit", + "filter": "junit", "junitPath": "tests/.junit.xml" } } }, - "flags:ignore_1": { + "flags:array": { "task": "deno test tests/mod_test.ts", + "cwd": "tests", "deno": { "test": { "ignore": ["*_test.ts"] } } }, - "flags:ignore_2": { + "flags:array_empty": { "task": "deno test tests/mod_test.ts", + "cwd": "tests", "deno": { "test": { "ignore": [] } } - }, - "flags:filter": { - "task": "deno test tests/mod_test.ts", - "deno": { - "test": { - "filter": "dummy" - } - } } } } diff --git a/tests/deno_types.jsonc b/tests/deno_types.jsonc index 0f338f6..81bb2f6 100644 --- a/tests/deno_types.jsonc +++ b/tests/deno_types.jsonc @@ -4,7 +4,8 @@ }, "+tasks": { "flags:none": { - "task": "deno types" + "task": "deno types", + "cwd": "tests" } } } diff --git a/tests/deno_uninstall.jsonc b/tests/deno_uninstall.jsonc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/deno_uninstall.jsonc @@ -0,0 +1 @@ +{} diff --git a/tests/deno_vendor.jsonc b/tests/deno_vendor.jsonc index c1f559b..3ea6afb 100644 --- a/tests/deno_vendor.jsonc +++ b/tests/deno_vendor.jsonc @@ -4,10 +4,12 @@ }, "+tasks": { "flags:none": { - "task": "deno vendor 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'" + "task": "deno vendor mod.ts", + "cwd": "tests" }, "flags:output_1": { - "task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", + "task": "deno run mod.ts", + "cwd": "tests", "deno": { "vendor": { "output": "vendor" @@ -15,7 +17,8 @@ } }, "flags:output_2": { - "task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", + "task": "deno run mod.ts", + "cwd": "tests", "deno": { "vendor": { "output": { @@ -26,7 +29,8 @@ } }, "flags:output_3": { - "task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", + "task": "deno run mod.ts", + "cwd": "tests", "deno": { "vendor": { "output": { @@ -36,7 +40,8 @@ } }, "flags:lock": { - "task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", + "task": "deno run mod.ts", + "cwd": "tests", "deno": { "vendor": { "lock": "deno.lock" diff --git a/tests/imports.json b/tests/imports.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/imports.json @@ -0,0 +1 @@ +{}