Extract from devtools project
This commit is contained in:
commit
f267b4c65a
9
.editorconfig
Normal file
9
.editorconfig
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{ts,json}]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
trim_trailing_whitespace = true
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
deno.d.ts
|
||||||
|
.vscode
|
||||||
|
.local
|
11
README.md
Normal file
11
README.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# typescript/system
|
||||||
|
|
||||||
|
[![Build Status](https://thunderk.visualstudio.com/typescript/_apis/build/status/system?branchName=master)](https://dev.azure.com/thunderk/typescript/_build?pipelineNameFilter=system)
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
Access to system ressources (files, network...).
|
||||||
|
|
||||||
|
The Sys object exposed is compatible with the
|
||||||
|
[Deno](https://doc.deno.land/builtin/stable) object, but its functions can be
|
||||||
|
replaced by mocks.
|
6
deps.testing.ts
Normal file
6
deps.testing.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
export {
|
||||||
|
describe,
|
||||||
|
expect,
|
||||||
|
it,
|
||||||
|
mock,
|
||||||
|
} from "https://js.thunderk.net/testing@1.0.0/mod.ts";
|
7
doc/about.md
Normal file
7
doc/about.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
## About
|
||||||
|
|
||||||
|
Access to system ressources (files, network...).
|
||||||
|
|
||||||
|
The Sys object exposed is compatible with the
|
||||||
|
[Deno](https://doc.deno.land/builtin/stable) object, but its functions can be
|
||||||
|
replaced by mocks.
|
19
run
Executable file
19
run
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Simplified run tool for deno commands
|
||||||
|
|
||||||
|
if test $# -eq 0
|
||||||
|
then
|
||||||
|
echo "Usage: $0 [file or command]"
|
||||||
|
exit 1
|
||||||
|
elif echo $1 | grep -q '.*.ts'
|
||||||
|
then
|
||||||
|
denocmd=run
|
||||||
|
denoargs=$1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
denocmd=$1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
denoargs="$(cat config/$denocmd.flags 2> /dev/null) $denoargs $@"
|
||||||
|
exec deno $denocmd $denoargs
|
20
src/deno.test.ts
Normal file
20
src/deno.test.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import { Sys } from "./deno.ts";
|
||||||
|
import { describe, expect, it, mock } from "../deps.testing.ts";
|
||||||
|
|
||||||
|
describe("Sys", () => {
|
||||||
|
it("is mockable", () => {
|
||||||
|
function runSomething() {
|
||||||
|
Sys.run({ cmd: ["echo", "test"] });
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(runSomething).toThrow(
|
||||||
|
'Requires run access to "echo", run again with the --allow-run flag',
|
||||||
|
);
|
||||||
|
|
||||||
|
mock(Sys, "run", undefined, (run) => {
|
||||||
|
runSomething();
|
||||||
|
expect(run).toHaveBeenCalledTimes(1);
|
||||||
|
expect(run).toHaveBeenCalledWith({ cmd: ["echo", "test"] });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
10
src/deno.ts
Normal file
10
src/deno.ts
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// Mockable Deno proxy
|
||||||
|
export const Sys: typeof Deno = new Proxy({} as typeof Deno, {
|
||||||
|
get(obj: any, prop: keyof typeof Deno): any {
|
||||||
|
return obj.hasOwnProperty(prop) ? obj[prop] : Deno[prop];
|
||||||
|
},
|
||||||
|
set: function (obj: any, prop: keyof typeof Deno, value: any) {
|
||||||
|
obj[prop] = value;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
});
|
10
tsconfig.json
Normal file
10
tsconfig.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "esnext",
|
||||||
|
"target": "ESNext",
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"preserveConstEnums": true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue