tests: continue

This commit is contained in:
Simon Lecoq
2023-11-02 19:16:47 -04:00
parent 55d7b38586
commit 27528afe04
13 changed files with 141 additions and 68 deletions

View File

@@ -9,7 +9,7 @@
"rm -rf .coverage &&",
"deno test &&",
"deno coverage .coverage &&",
"rm -rf tests/.coverage tests/.coverage.report tests/.deno.lock tests/.junit.xml"
"rm -rf tests/.coverage tests/.coverage.report tests/.deno.lock tests/.junit.xml tests/.mod.bin tests/.mod.bin.exe tests/*.exe"
],
"deno": {
"test": {
@@ -18,6 +18,7 @@
"traceOps": true,
"permissions": {
"read": true,
"env": ["TEST_INHERIT"],
"write": [".deno-make.json"],
"run": ["deno"]
}

6
deno.lock generated
View File

@@ -175,6 +175,12 @@
"https://deno.land/std@0.204.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d",
"https://deno.land/std@0.204.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3",
"https://deno.land/std@0.204.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d",
"https://deno.land/std@0.205.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
"https://deno.land/std@0.205.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
"https://deno.land/std@0.205.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9",
"https://deno.land/std@0.205.0/json/common.ts": "ecd5e87d45b5f0df33238ed8b1746e1444da7f5c86ae53d0f0b04280f41a25bb",
"https://deno.land/std@0.205.0/jsonc/mod.ts": "b88dce28eb3645667caa856538ae2fe87af51410822544a0b45a4177ef3bd7dd",
"https://deno.land/std@0.205.0/jsonc/parse.ts": "c1096e2b7ffb4996d7ed841dfdb29a4fccc78edcc55299beaa20d6fe5facf7b6",
"https://deno.land/x/zod@v3.21.4/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea",
"https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef",
"https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe",

31
mod.ts
View File

@@ -1,8 +1,8 @@
// Imports
import * as JSONC from "https://deno.land/std@0.203.0/jsonc/mod.ts"
import * as JSONC from "https://deno.land/std@0.205.0/jsonc/mod.ts"
import { z as is } from "https://deno.land/x/zod@v3.21.4/mod.ts"
import { fromZodError } from "https://esm.sh/zod-validation-error@1.5.0?pin=v133"
import { bgBrightBlue, bold, gray, italic, underline, yellow } from "https://deno.land/std@0.203.0/fmt/colors.ts"
import { bgBrightBlue, bold, gray, italic, underline, yellow } from "https://deno.land/std@0.205.0/fmt/colors.ts"
// Structure flags =========================================================================================================
@@ -162,7 +162,7 @@ const modules = {
/** Inspect flags */
const inspect = is.union([
is.string().transform((v) => v ? `--inspect='${v}'` : ""),
is.string().min(1).transform((v) => `--inspect='${v}'`),
is.object({
listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""),
break: is.string().min(1).optional().transform((v) => v ? `--inspect-brk='${v}'` : ""),
@@ -355,8 +355,9 @@ const vendor = common.extend({
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(""),
description: is.union([is.string(), is.array(is.string())]).default("").transform((v) =>
Array.isArray(v) ? v.join(" ") : v
),
env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform((
v,
) =>
@@ -411,7 +412,7 @@ export async function make(
config = "deno.jsonc",
log = console.log,
exit = true,
stdio = "inherit" as "inherit" | "null",
stdio = "inherit" as "inherit" | "piped" | "null",
} = {},
) {
const { "+tasks": _tasks = {} } = JSONC.parse(
@@ -429,27 +430,33 @@ export async function make(
}),
)
if (task) {
const temp = ".deno-make.json"
const { task: raw, env, deno, cwd } = tasks[task]
const temp = ".deno-make.json"
const decoder = new TextDecoder()
try {
const make = command(raw, { deno })
await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } }))
const process = new Deno.Command("deno", {
args: ["task", "--config", temp, "make"],
args: ["task", ...(cwd ? ["--cwd", cwd] : []), "--config", temp, "make"],
stdout: stdio,
stderr: stdio,
stdin: stdio,
env,
cwd,
windowsRawArguments: true,
})
const { code } = await process.output()
}).spawn()
if (stdio === "piped") {
const { stdout, stderr } = await process.output()
log(decoder.decode(stdout))
log(decoder.decode(stderr))
await process.stdin?.close()
}
const { code } = await process.status
if (exit) {
Deno.exit(code)
}
return { code }
} finally {
await Deno.remove(temp)
await Deno.remove(temp).catch(() => null)
}
} else if (Object.keys(tasks).length) {
for (

View File

@@ -15,9 +15,9 @@ for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
const { code } = await make({
task,
config: path,
stdio: "piped",
log: (message) => stdio.push(message),
exit: false,
stdio: "null",
})
try {
expect(code).to.equal(0)

4
tests/.deno.lock generated
View File

@@ -1,4 +0,0 @@
{
"version": "3",
"remote": {}
}

View File

@@ -33,7 +33,6 @@
"flags:general:number": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"seed": 0
@@ -43,7 +42,6 @@
"flags:general:array": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"v8Flags": ["--print-code"]
@@ -71,7 +69,6 @@
"flags:lock:string": {
"task": "deno help",
"cwd": "tests",
"deno": {
"vendor": {
"lock": "deno.lock"
@@ -87,7 +84,6 @@
"flags:lock:boolean": {
"task": "deno help",
"cwd": "tests",
"deno": {
"info": {
"lock": false
@@ -100,7 +96,6 @@
"flags:lock:object": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"lock": {
@@ -118,17 +113,16 @@
"flags:permissions:all": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"permissions": {
"allow": true,
"all": true,
"prompt": true
}
},
"test": {
"permissions": {
"allow": false
"all": false
}
}
}
@@ -136,7 +130,6 @@
"flags:permissions:boolean": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"permissions": {
@@ -169,7 +162,6 @@
"flags:permissions:array": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"permissions": {
@@ -198,7 +190,6 @@
"flags:permissions:allow_deny_object": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"permissions": {
@@ -227,9 +218,9 @@
"flags:modules:boolean": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"modules": {
"cached": true,
"remote": true,
"npm": true,
@@ -237,8 +228,10 @@
"reload": true,
"node_modules": true,
"vendor": true
}
},
"test": {
"modules": {
"cached": false,
"remote": false,
"npm": false,
@@ -248,34 +241,38 @@
"vendor": false
}
}
}
},
"flags:modules:string": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"modules": {
"check": "all"
}
}
}
},
"flags:modules:array": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"modules": {
"reload": ["npm:"]
}
},
"test": {
"modules": {
"reload": []
}
}
}
},
"flags:inspect:string": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"inspect": "127.0.0.1:9229"
@@ -284,14 +281,12 @@
},
"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"
"wait:": "127.0.0.1:9231"
}
},
"test": {
@@ -303,7 +298,6 @@
"flags:watch:boolean": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"watch": true
@@ -316,7 +310,6 @@
"flags:watch:array": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"watch": ["mod.ts"]
@@ -329,7 +322,6 @@
"flags:watch:object": {
"task": "deno help",
"cwd": "tests",
"deno": {
"run": {
"watch": {

View File

@@ -1 +1,34 @@
{}
{
"tasks": {
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
},
"+tasks": {
"flags:none": {
"task": "deno compile mod.ts",
"cwd": "tests"
},
"flags:case_1": {
"task": "deno compile mod.ts",
"cwd": "tests",
"deno": {
"compile": {
"include": ["mod_test.ts"],
"output": ".mod.bin",
"target": "x86_64-unknown-linux-gnu"
}
}
},
"flags:case_2": {
"task": "deno compile mod.ts",
"cwd": "tests",
"deno": {
"compile": {
"include": [],
"output": ".mod.bin",
"target": "x86_64-pc-windows-msvc",
"terminal": false
}
}
}
}
}

View File

@@ -35,15 +35,15 @@
}
}
},
"flags:array": {
/*"flags:array": {
"task": "deno coverage .coverage",
"cwd": "tests",
"deno": {
"coverage": {
"ignore": ["foo"]
"ignore": ["../.coverage"]
}
}
},
},*/
"flags:array_empty": {
"task": "deno coverage .coverage",
"cwd": "tests",

View File

@@ -14,7 +14,6 @@
"fmt": {
"check": true,
"tabs": true,
"singleQuote": true,
"semicolons": true
}
}
@@ -31,6 +30,16 @@
}
}
},
"flags:single_quote": {
"task": "deno fmt mod.ts || true",
"cwd": "tests",
"deno": {
"fmt": {
"check": true,
"singleQuote": true
}
}
},
"flags:string": {
"task": "deno fmt mod.ts",
"cwd": "tests",
@@ -56,7 +65,7 @@
"cwd": "tests",
"deno": {
"fmt": {
"ignore": ["*"]
"ignore": ["mod_test.ts"]
}
}
},

View File

@@ -22,7 +22,7 @@
"task": "exit 1",
"env": {
"DINOSAUR": "🦖",
"INHERIT": true
"TEST_INHERIT": true
}
},
"make:cwd": {

View File

@@ -48,19 +48,19 @@
}
},
"flags:string": {
"task": "deno test tests/mod_test.ts",
"task": "deno test mod_test.ts",
"cwd": "tests",
"deno": {
"test": {
"coverage": ".coverage",
"reporter": "junit",
"filter": "junit",
"junitPath": "tests/.junit.xml"
"junitPath": ".junit.xml"
}
}
},
"flags:array": {
"task": "deno test tests/mod_test.ts",
"task": "deno test mod_test.ts",
"cwd": "tests",
"deno": {
"test": {
@@ -69,7 +69,7 @@
}
},
"flags:array_empty": {
"task": "deno test tests/mod_test.ts",
"task": "deno test mod_test.ts",
"cwd": "tests",
"deno": {
"test": {

View File

@@ -6,6 +6,13 @@
"flags:none": {
"task": "deno types",
"cwd": "tests"
},
"flags:common": {
"task": "deno types",
"cwd": "tests",
"types": {
"quiet": true
}
}
}
}

View File

@@ -1 +1,23 @@
{}
{
"tasks": {
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
},
"+tasks": {
"flags:none": {
"task": "deno help",
"cwd": "tests",
"deno": {
"uninstall": {}
}
},
"flags:root": {
"task": "deno help",
"cwd": "tests",
"deno": {
"uninstall": {
"root": "/tmp"
}
}
}
}
}