tests: improve

This commit is contained in:
Simon Lecoq
2023-11-02 18:29:10 -04:00
parent c5d8e2dbb1
commit 55d7b38586
27 changed files with 658 additions and 349 deletions

4
.gitignore vendored
View File

@@ -1,5 +1,3 @@
.coverage .coverage
.deno-make.json .deno-make.json
tests/.coverage tests/.*
tests/.coverage.report
tests/.junit.xml

View File

@@ -8,7 +8,8 @@
"task": [ "task": [
"rm -rf .coverage &&", "rm -rf .coverage &&",
"deno test &&", "deno test &&",
"deno coverage .coverage" "deno coverage .coverage &&",
"rm -rf tests/.coverage tests/.coverage.report tests/.deno.lock tests/.junit.xml"
], ],
"deno": { "deno": {
"test": { "test": {
@@ -41,13 +42,3 @@
"exclude": [".coverage", ".deno-make.json"] "exclude": [".coverage", ".deno-make.json"]
} }
} }
/*
bench
bundle
compile
_eval
fmt
install
uninstall
repl
*/

109
mod.ts
View File

@@ -23,8 +23,8 @@ const runnable = is.object({
location: is.string().optional().transform((v) => v ? `--location='${v}'` : ""), location: is.string().optional().transform((v) => v ? `--location='${v}'` : ""),
seed: is.number().optional().transform((v) => typeof v === "number" ? `--seed=${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(",")}'` : ""), v8Flags: is.array(is.string()).optional().transform((v) => v?.length ? `--v8-flags='${v.join(",")}'` : ""),
ignoreCertificateErrors: is.boolean().optional().transform((v) => certificateErrors: is.boolean().optional().transform((v) =>
v === true ? "--unsafely-ignore-certificate-errors" : "" v === false ? "--unsafely-ignore-certificate-errors" : ""
), ),
}) })
@@ -120,9 +120,7 @@ const _modules = is.object({
npm: is.boolean().optional().transform((v) => v === false ? "--no-npm" : ""), npm: is.boolean().optional().transform((v) => v === false ? "--no-npm" : ""),
check: is.union([ check: is.union([
is.boolean().transform((v) => v ? "--check=all" : "--no-check"), is.boolean().transform((v) => v ? "--check=all" : "--no-check"),
is.object({ is.string().min(1).transform((v) => `--check=${v}`),
remote: is.boolean().transform((v) => v ? "--check=all" : "--check=all --no-check=remote"),
}).transform((v) => Object.values(v).filter(Boolean).join(" ")),
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), ]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
reload: is.union([ reload: is.union([
is.boolean().transform((v) => v ? "--reload" : ""), is.boolean().transform((v) => v ? "--reload" : ""),
@@ -135,7 +133,14 @@ const _modules = is.object({
/** Module flags */ /** Module flags */
const modules = { const modules = {
all: _modules.optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), 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() .optional()
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
vendor: _modules.pick({ vendor: _modules.pick({
@@ -143,10 +148,15 @@ const modules = {
node_modules: true, node_modules: true,
vendor: true, vendor: true,
}).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), }).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
doc: _modules.pick({ reload: true, npm: true, remote: true }).optional().transform((v) => doc: _modules.pick({ reload: true, npm: true, remote: true }).optional()
Object.values(v ?? {}).filter(Boolean).join(" ") .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
), nocheck: _modules.pick({
nocheck: _modules.pick({ reload: true, npm: true, remote: true, node_modules: true, vendor: true }).optional() reload: true,
npm: true,
remote: true,
node_modules: true,
vendor: true,
}).optional()
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")), .transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
} }
@@ -154,9 +164,9 @@ const modules = {
const inspect = is.union([ const inspect = is.union([
is.string().transform((v) => v ? `--inspect='${v}'` : ""), is.string().transform((v) => v ? `--inspect='${v}'` : ""),
is.object({ is.object({
listen: is.string().transform((v) => v ? `--inspect='${v}'` : ""), listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""),
break: is.string().transform((v) => v ? `--inspect-brk='${v}'` : ""), break: is.string().min(1).optional().transform((v) => v ? `--inspect-brk='${v}'` : ""),
wait: is.string().transform((v) => v.length ? `--inspect-wait='${v}'` : ""), wait: is.string().min(1).optional().transform((v) => v ? `--inspect-wait='${v}'` : ""),
}), }),
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")) ]).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}'` : ""), output: is.string().optional().transform((v) => v ? `--output='${v}'` : ""),
}).transform((v) => Object.values(v).filter(Boolean).join(" ")) }).transform((v) => Object.values(v).filter(Boolean).join(" "))
const doc = common.pick({ unstable: true, quiet: true, importMap: true }).extend({ const doc = common.pick({ unstable: true, quiet: true, importMap: true })
.extend({
lock: lock.read, lock: lock.read,
modules: modules.doc, modules: modules.doc,
private: is.boolean().optional().transform((v) => v ? "--private" : ""), private: is.boolean().optional().transform((v) => v ? "--private" : ""),
json: is.boolean().optional().transform((v) => v ? "--json" : ""), json: is.boolean().optional().transform((v) => v ? "--json" : ""),
}).transform((v) => Object.values(v).filter(Boolean).join(" ")) }).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, lock: lock.write,
modules: modules.all, modules: modules.all,
inspect, inspect,
@@ -262,10 +275,6 @@ const install = common.merge(runnable).extend({
force: is.boolean().optional().transform((v) => v ? "--force" : ""), force: is.boolean().optional().transform((v) => v ? "--force" : ""),
}).transform((v) => Object.values(v).filter(Boolean).join(" ")) }).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({ const lint = common.pick({ config: true, unstable: true, quiet: true }).extend({
rules: is.object({ rules: is.object({
tags: is.array(is.string()).optional().transform((v) => v?.length ? `--rules-tags=${v.join(",")}` : ""), tags: is.array(is.string()).optional().transform((v) => v?.length ? `--rules-tags=${v.join(",")}` : ""),
@@ -326,6 +335,10 @@ const types = common.pick({
quiet: true, quiet: true,
}).transform((v) => Object.values(v).filter(Boolean).join(" ")) }).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({ const vendor = common.extend({
lock: lock.check, lock: lock.check,
modules: modules.vendor, 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), 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) description: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v)
.default(""), .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.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(() => ({})), ).default(() => ({})),
cwd: is.string().optional(),
deno: is.object({ deno: is.object({
bench, bench,
bundle, bundle,
@@ -372,18 +390,33 @@ const _make = is.object({
}) })
/** Compute command to execute after applying deno flags */ /** Compute command to execute after applying deno flags */
export function command(raw: string, { deno }: Pick<is.infer<typeof _make>, "deno">, { colors = false } = {}) { export function command(
raw: string,
{ deno }: Pick<is.infer<typeof _make>, "deno">,
{ colors = false } = {},
) {
for (const [subcommand, flags] of Object.entries(deno)) { 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 return raw
} }
/** Entry point */ /** Entry point */
export async function make( 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<string, unknown> "+tasks"?: Record<string, unknown>
} }
const tasks = Object.fromEntries( const tasks = Object.fromEntries(
@@ -397,7 +430,7 @@ export async function make(
) )
if (task) { if (task) {
const temp = ".deno-make.json" const temp = ".deno-make.json"
const { task: raw, env, deno } = tasks[task] const { task: raw, env, deno, cwd } = tasks[task]
try { try {
const make = command(raw, { deno }) const make = command(raw, { deno })
await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } })) await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } }))
@@ -407,6 +440,7 @@ export async function make(
stderr: stdio, stderr: stdio,
stdin: stdio, stdin: stdio,
env, env,
cwd,
windowsRawArguments: true, windowsRawArguments: true,
}) })
const { code } = await process.output() const { code } = await process.output()
@@ -418,18 +452,31 @@ export async function make(
await Deno.remove(temp) await Deno.remove(temp)
} }
} else if (Object.keys(tasks).length) { } 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(/^(?<icon>[\p{Emoji}\u200d]+) /u)?.groups ?? {} const { icon = "" } = description.match(/^(?<icon>[\p{Emoji}\u200d]+) /u)?.groups ?? {}
log(bgBrightBlue(`${icon} ${bold(name)}`.trim().padEnd(32))) log(bgBrightBlue(`${icon} ${bold(name)}`.trim().padEnd(32)))
log(description.replace(icon, "").trim()) log(description.replace(icon, "").trim())
if (Object.keys(env).length) { if (Object.keys(env).length) {
log(gray(`Environment variables:`)) log(gray(`Environment variables:`))
for (const [k, v] of Object.entries(env)) { for (const [k, v] of Object.entries(env)) {
const inherited = const inherited = ((_tasks as Record<string, is.infer<typeof _make>>)[name]
((_tasks as Record<string, is.infer<typeof _make>>)[name].env[k] as unknown as string | boolean) === true .env[k] as unknown as string | boolean) === true
log(gray(` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}`.trim())) log(
gray(
` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}`
.trim(),
),
)
} }
} }
if (cwd) {
log(gray(`Working directory:`))
log(gray(` ${cwd}`))
}
log(gray(`Task:`)) log(gray(`Task:`))
log(gray(` ${command(task, { deno }, { colors: true })}`)) log(gray(` ${command(task, { deno }, { colors: true })}`))
log("") log("")

View File

@@ -1,3 +0,0 @@
Deno.bench("URL parsing", () => {
new URL("https://deno.land")
})

View File

@@ -11,8 +11,20 @@ for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
continue continue
} }
Deno.test(`${name}: ${task}`, async () => { Deno.test(`${name}: ${task}`, async () => {
const { code } = await make({ task, config: path, log: () => null, exit: false, stdio: "null" }) 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) expect(code).to.equal(0)
} catch (error) {
console.log(...stdio)
throw error
}
}) })
} }
} }

1
tests/deno_bundle.jsonc Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -4,7 +4,8 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno cache tests/mod.ts" "task": "deno cache mod.ts",
"cwd": "tests"
} }
} }
} }

View File

@@ -4,15 +4,26 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno check tests/mod.ts" "task": "deno check mod.ts",
"cwd": "tests"
}, },
"flags:all": { "flags:boolean_true": {
"task": "deno check tests/mod.ts", "task": "deno check mod.ts",
"cwd": "tests",
"deno": { "deno": {
"check": { "check": {
"all": true "all": true
} }
} }
},
"flags:boolean_false": {
"task": "deno check mod.ts",
"cwd": "tests",
"deno": {
"check": {
"all": false
}
}
} }
} }
} }

View File

@@ -3,42 +3,47 @@
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0" "make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
}, },
"+tasks": { "+tasks": {
"flags:general": { "flags:general:boolean": {
"task": "deno run tests/mod.ts", "task": "deno help",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"unstable": true, "unstable": true,
"quiet": true, "quiet": true,
"seed": 0, "certificateErrors": true
"ignoreCertificateErrors": true },
"test": {
"unstable": false,
"quiet": false,
"certificateErrors": false
} }
} }
}, },
"flags:resolution": { "flags:general:string": {
"task": "deno run tests/mod.ts", "task": "deno help",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"importMap": "tests/.imports.json", "importMap": "imports.json",
"cert": "/dev/null",
"location": "https://deno.test" "location": "https://deno.test"
} }
} }
}, },
"flags:config": { "flags:general:number": {
"task": "deno run tests/mod.ts", "task": "deno help",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"config": "tests/deno_common.jsonc" "seed": 0
},
"lint": {
"config": false
},
"fmt": {
"config": true
} }
} }
}, },
"flags:v8_flags": { "flags:general:array": {
"task": "deno run tests/mod.ts", "task": "deno help",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"v8Flags": ["--print-code"] "v8Flags": ["--print-code"]
@@ -47,17 +52,298 @@
"v8Flags": [] "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}'` : ""),
})
*/

1
tests/deno_compile.jsonc Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -4,10 +4,30 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno coverage tests/.coverage" "task": "deno coverage .coverage",
"cwd": "tests"
}, },
"flags:filters": { "flags:boolean_true": {
"task": "deno coverage tests/.coverage", "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": { "deno": {
"coverage": { "coverage": {
"include": "^file:", "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": { "flags:lcov": {
"task": "deno coverage tests/.coverage", "task": "deno coverage .coverage",
"cwd": "tests",
"deno": { "deno": {
"coverage": { "coverage": {
"lcov": true, "lcov": true,
"output": "tests/.coverage.report" "output": ".coverage.report"
} }
} }
} }

View File

@@ -4,16 +4,28 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno doc tests/mod.ts" "task": "deno doc mod.ts",
"cwd": "tests"
}, },
"flags:options": { "flags:boolean_true": {
"task": "deno doc tests/mod.ts", "task": "deno doc mod.ts",
"cwd": "tests",
"deno": { "deno": {
"doc": { "doc": {
"private": true, "private": true,
"json": true "json": true
} }
} }
},
"flags:boolean_false": {
"task": "deno doc mod.ts",
"cwd": "tests",
"deno": {
"doc": {
"private": false,
"json": false
}
}
} }
} }
} }

1
tests/deno_eval.jsonc Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -4,23 +4,70 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno check tests/mod.ts" "task": "deno fmt mod.ts",
"cwd": "tests"
}, },
"flags:fmt": { "flags:boolean_true": {
"task": "deno check tests/mod.ts", "task": "deno fmt mod.ts",
"cwd": "tests",
"deno": { "deno": {
"fmt": { "fmt": {
"check": true, "check": true,
"tabs": true, "tabs": true,
"lineWidth": 80,
"indentWidth": 2,
"singleQuote": true, "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", "proseWrap": "always",
"ignore": ["*"],
"ext": "js" "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": []
}
}
} }
} }
} }

View File

@@ -4,29 +4,24 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno info"
},
"flags:lock_1": {
"task": "deno info", "task": "deno info",
"cwd": "tests"
},
"flags:boolean_true": {
"task": "deno info",
"cwd": "tests",
"deno": { "deno": {
"info": { "info": {
"lock": true "json": true
} }
} }
}, },
"flags:lock_2": { "flags:boolean_false": {
"task": "deno info", "task": "deno info",
"cwd": "tests",
"deno": { "deno": {
"info": { "info": {
"lock": false "json": false
}
}
},
"flags:lock_3": {
"task": "deno info",
"deno": {
"info": {
"lock": "deno.lock"
} }
} }
} }

1
tests/deno_install.jsonc Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -4,10 +4,50 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno types"
},
"flags:rules_1": {
"task": "deno lint", "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": { "deno": {
"lint": { "lint": {
"rules": { "rules": {
@@ -18,8 +58,9 @@
} }
} }
}, },
"flags:rules_2": { "flags:rules_empty": {
"task": "deno lint", "task": "deno lint",
"cwd": "tests",
"deno": { "deno": {
"lint": { "lint": {
"rules": { "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": []
}
}
} }
} }
} }

View File

@@ -4,22 +4,30 @@
}, },
"+tasks": { "+tasks": {
"make": { "make": {
"task": "exit 1",
"description": "🦕 test",
"env": {
"DINOSAUR": "🦖"
}
},
"make:no_description": {
"task": "exit 1" "task": "exit 1"
}, },
"make:description": {
"task": "exit 1",
"description": "🦕 test"
},
"make:deno": { "make:deno": {
"task": "deno quiet", "task": "deno info",
"deno": { "deno": {
"info": { "info": {
"quiet": true "quiet": true
} }
} }
},
"make:env": {
"task": "exit 1",
"env": {
"DINOSAUR": "🦖",
"INHERIT": true
}
},
"make:cwd": {
"task": "cwd",
"cwd": "tests"
} }
} }
} }

View File

@@ -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": [] }
}
}
}
}
}
}

1
tests/deno_repl.jsonc Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -4,60 +4,17 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno run tests/mod.ts" "task": "deno run mod.ts",
"cwd": "tests"
}, },
"flags:ext": { "flags:string": {
"task": "deno run tests/mod.ts", "task": "deno run mod.ts",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"ext": "ts" "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"
}
}
} }
} }
} }

View File

@@ -4,20 +4,15 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno test tests/mod_test.ts" "task": "deno test mod_test.ts",
"cwd": "tests"
}, },
"flags:doc": { "flags:boolean_true": {
"task": "deno test tests/mod_test.ts", "task": "deno test mod_test.ts",
"deno": { "cwd": "tests",
"test": {
"doc": true
}
}
},
"flags:execution_1": {
"task": "deno test tests/mod_test.ts",
"deno": { "deno": {
"test": { "test": {
"doc": true,
"traceOps": true, "traceOps": true,
"failFast": true, "failFast": true,
"shuffle": true, "shuffle": true,
@@ -27,10 +22,12 @@
} }
} }
}, },
"flags:execution_2": { "flags:boolean_false": {
"task": "deno test tests/mod_test.ts", "task": "deno test mod_test.ts",
"cwd": "tests",
"deno": { "deno": {
"test": { "test": {
"doc": false,
"traceOps": false, "traceOps": false,
"failFast": false, "failFast": false,
"shuffle": false, "shuffle": false,
@@ -40,8 +37,9 @@
} }
} }
}, },
"flags:execution_number": { "flags:number": {
"task": "deno test tests/mod_test.ts", "task": "deno test mod_test.ts",
"cwd": "tests",
"deno": { "deno": {
"test": { "test": {
"failFast": 1, "failFast": 1,
@@ -49,39 +47,35 @@
} }
} }
}, },
"flags:reporter": { "flags:string": {
"task": "deno test tests/mod_test.ts", "task": "deno test tests/mod_test.ts",
"cwd": "tests",
"deno": { "deno": {
"test": { "test": {
"coverage": "tests/.coverage", "coverage": ".coverage",
"reporter": "junit", "reporter": "junit",
"filter": "junit",
"junitPath": "tests/.junit.xml" "junitPath": "tests/.junit.xml"
} }
} }
}, },
"flags:ignore_1": { "flags:array": {
"task": "deno test tests/mod_test.ts", "task": "deno test tests/mod_test.ts",
"cwd": "tests",
"deno": { "deno": {
"test": { "test": {
"ignore": ["*_test.ts"] "ignore": ["*_test.ts"]
} }
} }
}, },
"flags:ignore_2": { "flags:array_empty": {
"task": "deno test tests/mod_test.ts", "task": "deno test tests/mod_test.ts",
"cwd": "tests",
"deno": { "deno": {
"test": { "test": {
"ignore": [] "ignore": []
} }
} }
},
"flags:filter": {
"task": "deno test tests/mod_test.ts",
"deno": {
"test": {
"filter": "dummy"
}
}
} }
} }
} }

View File

@@ -4,7 +4,8 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno types" "task": "deno types",
"cwd": "tests"
} }
} }
} }

View File

@@ -0,0 +1 @@
{}

View File

@@ -4,10 +4,12 @@
}, },
"+tasks": { "+tasks": {
"flags:none": { "flags:none": {
"task": "deno vendor 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'" "task": "deno vendor mod.ts",
"cwd": "tests"
}, },
"flags:output_1": { "flags:output_1": {
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", "task": "deno run mod.ts",
"cwd": "tests",
"deno": { "deno": {
"vendor": { "vendor": {
"output": "vendor" "output": "vendor"
@@ -15,7 +17,8 @@
} }
}, },
"flags:output_2": { "flags:output_2": {
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", "task": "deno run mod.ts",
"cwd": "tests",
"deno": { "deno": {
"vendor": { "vendor": {
"output": { "output": {
@@ -26,7 +29,8 @@
} }
}, },
"flags:output_3": { "flags:output_3": {
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", "task": "deno run mod.ts",
"cwd": "tests",
"deno": { "deno": {
"vendor": { "vendor": {
"output": { "output": {
@@ -36,7 +40,8 @@
} }
}, },
"flags:lock": { "flags:lock": {
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'", "task": "deno run mod.ts",
"cwd": "tests",
"deno": { "deno": {
"vendor": { "vendor": {
"lock": "deno.lock" "lock": "deno.lock"

1
tests/imports.json Normal file
View File

@@ -0,0 +1 @@
{}