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 &&", "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" "rm -rf tests/.coverage tests/.coverage.report tests/.deno.lock tests/.junit.xml tests/.mod.bin tests/.mod.bin.exe tests/*.exe"
], ],
"deno": { "deno": {
"test": { "test": {
@@ -18,6 +18,7 @@
"traceOps": true, "traceOps": true,
"permissions": { "permissions": {
"read": true, "read": true,
"env": ["TEST_INHERIT"],
"write": [".deno-make.json"], "write": [".deno-make.json"],
"run": ["deno"] "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/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_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3",
"https://deno.land/std@0.204.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d", "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/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea",
"https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", "https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef",
"https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", "https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe",

31
mod.ts
View File

@@ -1,8 +1,8 @@
// Imports // 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 { 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 { 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 ========================================================================================================= // Structure flags =========================================================================================================
@@ -162,7 +162,7 @@ const modules = {
/** Inspect flags */ /** Inspect flags */
const inspect = is.union([ const inspect = is.union([
is.string().transform((v) => v ? `--inspect='${v}'` : ""), is.string().min(1).transform((v) => `--inspect='${v}'`),
is.object({ is.object({
listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""), listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""),
break: is.string().min(1).optional().transform((v) => v ? `--inspect-brk='${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({ 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())]).default("").transform((v) =>
.default(""), Array.isArray(v) ? v.join(" ") : v
),
env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform(( env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform((
v, v,
) => ) =>
@@ -411,7 +412,7 @@ export async function make(
config = "deno.jsonc", config = "deno.jsonc",
log = console.log, log = console.log,
exit = true, exit = true,
stdio = "inherit" as "inherit" | "null", stdio = "inherit" as "inherit" | "piped" | "null",
} = {}, } = {},
) { ) {
const { "+tasks": _tasks = {} } = JSONC.parse( const { "+tasks": _tasks = {} } = JSONC.parse(
@@ -429,27 +430,33 @@ export async function make(
}), }),
) )
if (task) { if (task) {
const temp = ".deno-make.json"
const { task: raw, env, deno, cwd } = tasks[task] const { task: raw, env, deno, cwd } = tasks[task]
const temp = ".deno-make.json"
const decoder = new TextDecoder()
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 } }))
const process = new Deno.Command("deno", { const process = new Deno.Command("deno", {
args: ["task", "--config", temp, "make"], args: ["task", ...(cwd ? ["--cwd", cwd] : []), "--config", temp, "make"],
stdout: stdio, stdout: stdio,
stderr: stdio, stderr: stdio,
stdin: stdio, stdin: stdio,
env, env,
cwd,
windowsRawArguments: true, windowsRawArguments: true,
}) }).spawn()
const { code } = await process.output() 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) { if (exit) {
Deno.exit(code) Deno.exit(code)
} }
return { code } return { code }
} finally { } finally {
await Deno.remove(temp) await Deno.remove(temp).catch(() => null)
} }
} else if (Object.keys(tasks).length) { } else if (Object.keys(tasks).length) {
for ( for (

View File

@@ -15,9 +15,9 @@ for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
const { code } = await make({ const { code } = await make({
task, task,
config: path, config: path,
stdio: "piped",
log: (message) => stdio.push(message), log: (message) => stdio.push(message),
exit: false, exit: false,
stdio: "null",
}) })
try { try {
expect(code).to.equal(0) 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": { "flags:general:number": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"seed": 0 "seed": 0
@@ -43,7 +42,6 @@
"flags:general:array": { "flags:general:array": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"v8Flags": ["--print-code"] "v8Flags": ["--print-code"]
@@ -71,7 +69,6 @@
"flags:lock:string": { "flags:lock:string": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"vendor": { "vendor": {
"lock": "deno.lock" "lock": "deno.lock"
@@ -87,7 +84,6 @@
"flags:lock:boolean": { "flags:lock:boolean": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"info": { "info": {
"lock": false "lock": false
@@ -100,7 +96,6 @@
"flags:lock:object": { "flags:lock:object": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"lock": { "lock": {
@@ -118,17 +113,16 @@
"flags:permissions:all": { "flags:permissions:all": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"permissions": { "permissions": {
"allow": true, "all": true,
"prompt": true "prompt": true
} }
}, },
"test": { "test": {
"permissions": { "permissions": {
"allow": false "all": false
} }
} }
} }
@@ -136,7 +130,6 @@
"flags:permissions:boolean": { "flags:permissions:boolean": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"permissions": { "permissions": {
@@ -169,7 +162,6 @@
"flags:permissions:array": { "flags:permissions:array": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"permissions": { "permissions": {
@@ -198,7 +190,6 @@
"flags:permissions:allow_deny_object": { "flags:permissions:allow_deny_object": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"permissions": { "permissions": {
@@ -227,55 +218,61 @@
"flags:modules:boolean": { "flags:modules:boolean": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"cached": true, "modules": {
"remote": true, "cached": true,
"npm": true, "remote": true,
"check": true, "npm": true,
"reload": true, "check": true,
"node_modules": true, "reload": true,
"vendor": true "node_modules": true,
"vendor": true
}
}, },
"test": { "test": {
"cached": false, "modules": {
"remote": false, "cached": false,
"npm": false, "remote": false,
"check": false, "npm": false,
"reload": false, "check": false,
"node_modules": false, "reload": false,
"vendor": false "node_modules": false,
"vendor": false
}
} }
} }
}, },
"flags:modules:string": { "flags:modules:string": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"check": "all" "modules": {
"check": "all"
}
} }
} }
}, },
"flags:modules:array": { "flags:modules:array": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"reload": ["npm:"] "modules": {
"reload": ["npm:"]
}
}, },
"test": { "test": {
"reload": [] "modules": {
"reload": []
}
} }
} }
}, },
"flags:inspect:string": { "flags:inspect:string": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"inspect": "127.0.0.1:9229" "inspect": "127.0.0.1:9229"
@@ -284,14 +281,12 @@
}, },
"flags:inspect:object": { "flags:inspect:object": {
"task": "deno help", "task": "deno help",
"cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"inspect": { "inspect": {
"listen": "127.0.0.1:9229", "listen": "127.0.0.1:9229",
"break": "127.0.0.1:9230", "break": "127.0.0.1:9230",
"wait:": "127.0.0.1:9229" "wait:": "127.0.0.1:9231"
} }
}, },
"test": { "test": {
@@ -303,7 +298,6 @@
"flags:watch:boolean": { "flags:watch:boolean": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"watch": true "watch": true
@@ -316,7 +310,6 @@
"flags:watch:array": { "flags:watch:array": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"watch": ["mod.ts"] "watch": ["mod.ts"]
@@ -329,7 +322,6 @@
"flags:watch:object": { "flags:watch:object": {
"task": "deno help", "task": "deno help",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"run": { "run": {
"watch": { "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", "task": "deno coverage .coverage",
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"coverage": { "coverage": {
"ignore": ["foo"] "ignore": ["../.coverage"]
} }
} }
}, },*/
"flags:array_empty": { "flags:array_empty": {
"task": "deno coverage .coverage", "task": "deno coverage .coverage",
"cwd": "tests", "cwd": "tests",

View File

@@ -14,7 +14,6 @@
"fmt": { "fmt": {
"check": true, "check": true,
"tabs": true, "tabs": true,
"singleQuote": true,
"semicolons": 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": { "flags:string": {
"task": "deno fmt mod.ts", "task": "deno fmt mod.ts",
"cwd": "tests", "cwd": "tests",
@@ -56,7 +65,7 @@
"cwd": "tests", "cwd": "tests",
"deno": { "deno": {
"fmt": { "fmt": {
"ignore": ["*"] "ignore": ["mod_test.ts"]
} }
} }
}, },

View File

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

View File

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

View File

@@ -6,6 +6,13 @@
"flags:none": { "flags:none": {
"task": "deno types", "task": "deno types",
"cwd": "tests" "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"
}
}
}
}
}