1
0

run npm install to generate a package lock

This commit is contained in:
sashinexists
2024-12-07 13:18:31 +11:00
parent e7d08a91b5
commit 23437d228e
2501 changed files with 290663 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
/**
* A simple test runner for the browser to run the subset of the Node.s test
* runner used by the project.
*/
export default function assert(condition) {
if (!condition) {
throw new Error("Assertion failed");
}
}
assert.equal = (actual, expected) => {
if (Number.isNaN(actual) && Number.isNaN(expected)) {
return;
} else if (actual == expected) {
return;
} else {
throw new Error(`Expected ${expected} but got ${actual}`);
}
};
// This is a simplified deepEqual test that examines the conditions we care
// about. For reference, the actual Node assert.deepEqual is much more complex:
// see https://github.com/nodejs/node/blob/main/lib/internal/util/comparisons.js
assert.deepEqual = (actual, expected) => {
if (actual === expected) {
return;
} else if (
typeof actual === "object" &&
actual != null &&
typeof expected === "object" &&
expected != null &&
Object.keys(actual).length === Object.keys(expected).length
) {
for (const prop in actual) {
if (!expected.hasOwnProperty(prop)) {
break;
}
assert.deepEqual(actual[prop], expected[prop]);
}
return;
}
throw new Error(`Expected ${expected} but got ${actual}`);
};
assert.rejects = async (promise) => {
try {
await promise;
throw new Error("Expected promise to reject but it resolved");
} catch (error) {
return;
}
};

View File

@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<script type="importmap">
{
"imports": {
"node:assert": "./assert.js",
"node:test": "./testRunner.js"
}
}
</script>
<!-- Omit FileTree.test.js, which is Node.js only -->
<!-- Omit SiteTree.test.js, which requires mocks -->
<script type="module" src="../BrowserFileTree.test.js"></script>
<script type="module" src="../DeferredTree.test.js"></script>
<script type="module" src="../FunctionTree.test.js"></script>
<script type="module" src="../MapTree.test.js"></script>
<script type="module" src="../ObjectTree.test.js"></script>
<script type="module" src="../SetTree.test.js"></script>
<script type="module" src="../Tree.test.js"></script>
<script type="module" src="../operations/cache.test.js"></script>
<script type="module" src="../operations/merge.test.js"></script>
<script type="module" src="../operations/deepMerge.test.js"></script>
<script type="module" src="../transforms/cachedKeyMaps.test.js"></script>
<script
type="module"
src="../transforms/keyFunctionsForExtensions.test.js"
></script>
<script type="module" src="../transforms/mapFn.test.js"></script>
<script type="module" src="../utilities.test.js"></script>
</head>
<body></body>
</html>

View File

@@ -0,0 +1,51 @@
/**
* A simple test runner for the browser to run the subset of the Node.s test
* runner used by the project.
*/
let promises = {};
let currentSuite;
const markers = {
success: "✅",
skipped: "ー",
fail: "❌",
};
export async function describe(name, fn) {
promises[name] = [];
currentSuite = name;
await fn();
const results = await Promise.all(promises[name]);
const someFailed = results.some((result) => result.result === "fail");
const header = `${someFailed ? markers.fail : markers.success} ${name}`;
console[someFailed ? "group" : "groupCollapsed"](header);
for (const result of results) {
const marker = markers[result.result];
const name = result.name;
const message = result.result === "fail" ? `: ${result.message}` : "";
const skipped = result.result === "skipped" ? " [skipped]" : "";
console.log(`${marker} ${name}${message}${skipped}`);
}
console.groupEnd();
}
// Node test() calls can call an async function, but the test() function isn't
// declared async. We implicitly wrap the test call with a Promise and add it to
// the list of promises for the current suite.
export async function test(name, fn) {
promises[currentSuite].push(runTest(name, fn));
}
test.skip = (name, fn) => {
promises[currentSuite].push(Promise.resolve({ result: "skipped", name }));
};
async function runTest(name, fn) {
try {
await fn();
return { result: "success", name };
} catch (/** @type {any} */ error) {
return { result: "fail", name, message: error.message };
}
}