Initial commit
This commit is contained in:
2
src/index.ts
Normal file
2
src/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export { myFunction } from "./myFunction";
|
||||
export { myObject } from "./myObject";
|
3
src/myFunction.ts
Normal file
3
src/myFunction.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export function myFunction() {
|
||||
return Promise.resolve(["a", "b", "c"]);
|
||||
}
|
3
src/myObject.ts
Normal file
3
src/myObject.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { toUpperCase } from "./tools/toUpperCase";
|
||||
|
||||
export const myObject = { "p": toUpperCase("foo") };
|
5
src/test/getProjectRoot.ts
Normal file
5
src/test/getProjectRoot.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import { getProjectRoot } from "../tools/getProjectRoot";
|
||||
|
||||
console.log(
|
||||
`Project root path: ${getProjectRoot()} does it seems right ? If yes then PASS`,
|
||||
);
|
41
src/test/index.ts
Normal file
41
src/test/index.ts
Normal file
@ -0,0 +1,41 @@
|
||||
//This will not run on deno, we need a separate test runner for Deno (./mod.ts).
|
||||
|
||||
import * as child_process from "child_process";
|
||||
import * as path from "path";
|
||||
import { Deferred } from "evt/tools/Deferred";
|
||||
|
||||
const names = ["myFunction", "myObject", "getProjectRoot"];
|
||||
|
||||
(async () => {
|
||||
if (!!process.env.FORK) {
|
||||
process.once("unhandledRejection", error => {
|
||||
throw error;
|
||||
});
|
||||
|
||||
require(process.env.FORK);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
console.log(`Running: ${name}`);
|
||||
|
||||
const dExitCode = new Deferred<number>();
|
||||
|
||||
child_process
|
||||
.fork(__filename, undefined, {
|
||||
"env": { "FORK": path.join(__dirname, name) },
|
||||
})
|
||||
.on("message", console.log)
|
||||
.once("exit", code => dExitCode.resolve(code ?? 1));
|
||||
|
||||
const exitCode = await dExitCode.pr;
|
||||
|
||||
if (exitCode !== 0) {
|
||||
console.log(`${name} exited with error code: ${exitCode}`);
|
||||
process.exit(exitCode);
|
||||
}
|
||||
|
||||
console.log("\n");
|
||||
}
|
||||
})();
|
16
src/test/myFunction.ts
Normal file
16
src/test/myFunction.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import { myFunction } from "..";
|
||||
import { getPromiseAssertionApi } from "evt/tools/testing";
|
||||
|
||||
const { mustResolve } = getPromiseAssertionApi({
|
||||
"takeIntoAccountArraysOrdering": true,
|
||||
});
|
||||
|
||||
(async () => {
|
||||
await mustResolve({
|
||||
"promise": myFunction(),
|
||||
"expectedData": ["a", "b", "c"],
|
||||
"delay": 0,
|
||||
});
|
||||
|
||||
console.log("PASS");
|
||||
})();
|
7
src/test/myObject.ts
Normal file
7
src/test/myObject.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { assert } from "evt/tools/typeSafety";
|
||||
import * as inDepth from "evt/tools/inDepth";
|
||||
import { myObject } from "..";
|
||||
|
||||
assert(inDepth.same(myObject, { "p": "FOO" }));
|
||||
|
||||
console.log("PASS");
|
19
src/tools/getProjectRoot.ts
Normal file
19
src/tools/getProjectRoot.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import * as fs from "fs";
|
||||
import * as path from "path";
|
||||
|
||||
function getProjectRootRec(dirPath: string): string {
|
||||
if (fs.existsSync(path.join(dirPath, "package.json"))) {
|
||||
return dirPath;
|
||||
}
|
||||
return getProjectRootRec(path.join(dirPath, ".."));
|
||||
}
|
||||
|
||||
let result: string | undefined = undefined;
|
||||
|
||||
export function getProjectRoot(): string {
|
||||
if (result !== undefined) {
|
||||
return result;
|
||||
}
|
||||
|
||||
return (result = getProjectRootRec(__dirname));
|
||||
}
|
3
src/tools/toUpperCase.ts
Normal file
3
src/tools/toUpperCase.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export function toUpperCase(str: string): string {
|
||||
return str.toUpperCase();
|
||||
}
|
Reference in New Issue
Block a user