bingo-testers 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +20 -0
- package/README.md +13 -0
- package/lib/createMockFetchers.d.ts +4 -0
- package/lib/createMockFetchers.d.ts.map +1 -0
- package/lib/createMockFetchers.js +9 -0
- package/lib/createMockFetchers.js.map +1 -0
- package/lib/createMockFileSystem.d.ts +3 -0
- package/lib/createMockFileSystem.d.ts.map +1 -0
- package/lib/createMockFileSystem.js +11 -0
- package/lib/createMockFileSystem.js.map +1 -0
- package/lib/createMockSystems.d.ts +9 -0
- package/lib/createMockSystems.d.ts.map +1 -0
- package/lib/createMockSystems.js +13 -0
- package/lib/createMockSystems.js.map +1 -0
- package/lib/diffCreatedDirectory.d.ts +11 -0
- package/lib/diffCreatedDirectory.d.ts.map +1 -0
- package/lib/diffCreatedDirectory.js +90 -0
- package/lib/diffCreatedDirectory.js.map +1 -0
- package/lib/diffCreatedDirectory.test.d.ts +2 -0
- package/lib/diffCreatedDirectory.test.d.ts.map +1 -0
- package/lib/diffCreatedDirectory.test.js +140 -0
- package/lib/diffCreatedDirectory.test.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/testInput.d.ts +10 -0
- package/lib/testInput.d.ts.map +1 -0
- package/lib/testInput.js +10 -0
- package/lib/testInput.js.map +1 -0
- package/lib/testInput.test.d.ts +2 -0
- package/lib/testInput.test.d.ts.map +1 -0
- package/lib/testInput.test.js +19 -0
- package/lib/testInput.test.js.map +1 -0
- package/lib/testTemplate.d.ts +9 -0
- package/lib/testTemplate.d.ts.map +1 -0
- package/lib/testTemplate.js +7 -0
- package/lib/testTemplate.js.map +1 -0
- package/lib/testTemplate.test.d.ts +2 -0
- package/lib/testTemplate.test.d.ts.map +1 -0
- package/lib/testTemplate.test.js +29 -0
- package/lib/testTemplate.test.js.map +1 -0
- package/lib/types.d.ts +10 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +7 -0
- package/lib/utils.js.map +1 -0
- package/package.json +43 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# MIT License
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<h1 align="center">bingo-testers</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">Test utilities for composable, testable, type-safe templates. โ๏ธ</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://github.com/JoshuaKGoldberg/bingo/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="๐ค Code of Conduct: Kept" src="https://img.shields.io/badge/%F0%9F%A4%9D_code_of_conduct-kept-21bb42" /></a>
|
|
7
|
+
<a href="https://codecov.io/gh/JoshuaKGoldberg/bingo" target="_blank"><img alt="๐งช Coverage" src="https://img.shields.io/codecov/c/github/JoshuaKGoldberg/bingo?label=%F0%9F%A7%AA%20coverage" /></a>
|
|
8
|
+
<a href="https://github.com/JoshuaKGoldberg/bingo/blob/main/LICENSE.md" target="_blank"><img alt="๐ License: MIT" src="https://img.shields.io/badge/%F0%9F%93%9D_license-MIT-21bb42.svg"></a>
|
|
9
|
+
<a href="http://npmjs.com/package/bingo-testers"><img alt="๐ฆ npm version" src="https://img.shields.io/npm/v/bingo-testers?color=21bb42&label=%F0%9F%93%A6%20npm" /></a>
|
|
10
|
+
<img alt="๐ช TypeScript: Strict" src="https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg" />
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
See **[create.bingo > Building Templates > Packages > bingo-testers](https://create.bingo/build/packages/bingo-testers)** for documentation.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockFetchers.d.ts","sourceRoot":"","sources":["../src/createMockFetchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,wBAAgB,kBAAkB,CACjC,KAAK,GAAE,KAAkD,GACvD,cAAc,CAKhB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Octokit } from "octokit";
|
|
2
|
+
import { createFailingFunction } from "./utils.js";
|
|
3
|
+
export function createMockFetchers(fetch = createFailingFunction("fetch", "an input")) {
|
|
4
|
+
return {
|
|
5
|
+
fetch,
|
|
6
|
+
octokit: new Octokit({ request: fetch }),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=createMockFetchers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockFetchers.js","sourceRoot":"","sources":["../src/createMockFetchers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,UAAU,kBAAkB,CACjC,QAAe,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEzD,OAAO;QACN,KAAK;QACL,OAAO,EAAE,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACxC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockFileSystem.d.ts","sourceRoot":"","sources":["../src/createMockFileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIlD,wBAAgB,oBAAoB,CACnC,EAAE,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC7B,iBAAiB,CAQnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFailingFunction } from "./utils.js";
|
|
2
|
+
export function createMockFileSystem(fs) {
|
|
3
|
+
return {
|
|
4
|
+
readDirectory: createFailingFunction("fs.readDirectory", "an input"),
|
|
5
|
+
readFile: createFailingFunction("fs.readFile", "an input"),
|
|
6
|
+
writeDirectory: createFailingFunction("fs.writeDirectory", "an input"),
|
|
7
|
+
writeFile: createFailingFunction("fs.writeFile", "an input"),
|
|
8
|
+
...fs,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=createMockFileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockFileSystem.js","sourceRoot":"","sources":["../src/createMockFileSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CACnC,EAA+B;IAE/B,OAAO;QACN,aAAa,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,CAAC;QACpE,QAAQ,EAAE,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC;QAC1D,cAAc,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,UAAU,CAAC;QACtE,SAAS,EAAE,qBAAqB,CAAC,cAAc,EAAE,UAAU,CAAC;QAC5D,GAAG,EAAE;KACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TakeInput } from "bingo";
|
|
2
|
+
import { BingoSystem } from "bingo-systems";
|
|
3
|
+
import { MockSystemOptions } from "./types.js";
|
|
4
|
+
export interface MockSystems {
|
|
5
|
+
system: BingoSystem;
|
|
6
|
+
take: TakeInput;
|
|
7
|
+
}
|
|
8
|
+
export declare function createMockSystems(settings?: MockSystemOptions): MockSystems;
|
|
9
|
+
//# sourceMappingURL=createMockSystems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockSystems.d.ts","sourceRoot":"","sources":["../src/createMockSystems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAChC,QAAQ,GAAE,iBAAsB,GAC9B,WAAW,CAYb"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createMockFetchers } from "./createMockFetchers.js";
|
|
2
|
+
import { createMockFileSystem } from "./createMockFileSystem.js";
|
|
3
|
+
import { createFailingFunction } from "./utils.js";
|
|
4
|
+
export function createMockSystems(settings = {}) {
|
|
5
|
+
const fetchers = settings.fetchers ?? createMockFetchers(fetch);
|
|
6
|
+
const fs = createMockFileSystem(settings.fs);
|
|
7
|
+
const runner = settings.runner ?? createFailingFunction("runner", "an input");
|
|
8
|
+
const system = { fetchers, fs, runner };
|
|
9
|
+
const take = settings.take ??
|
|
10
|
+
((input, args) => input({ args, take, ...system }));
|
|
11
|
+
return { system, take };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=createMockSystems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMockSystems.js","sourceRoot":"","sources":["../src/createMockSystems.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAOnD,MAAM,UAAU,iBAAiB,CAChC,WAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAExC,MAAM,IAAI,GACT,QAAQ,CAAC,IAAI;QACZ,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAe,CAAC;IAEpE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CreatedDirectory, CreatedFileEntry } from "bingo-fs";
|
|
2
|
+
export interface DiffedCreatedDirectory {
|
|
3
|
+
[i: string]: DiffedCreatedDirectory | DiffedCreatedFileEntry | undefined;
|
|
4
|
+
}
|
|
5
|
+
export type DiffedCreatedFileEntry = [string] | [string | undefined, DiffedCreatedFileOptions?] | CreatedFileEntry | DiffedCreatedDirectory | string;
|
|
6
|
+
export interface DiffedCreatedFileOptions {
|
|
7
|
+
executable?: string;
|
|
8
|
+
}
|
|
9
|
+
export type ProcessText = (text: string, filePath: string) => string;
|
|
10
|
+
export declare function diffCreatedDirectory(actual: CreatedDirectory, created: CreatedDirectory, processText: ProcessText): DiffedCreatedDirectory | undefined;
|
|
11
|
+
//# sourceMappingURL=diffCreatedDirectory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffCreatedDirectory.d.ts","sourceRoot":"","sources":["../src/diffCreatedDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,sBAAsB;IACtC,CAAC,CAAC,EAAE,MAAM,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,SAAS,CAAC;CACzE;AAED,MAAM,MAAM,sBAAsB,GAC/B,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,GAAG,SAAS,EAAE,wBAAwB,CAAC,CAAC,GAC/C,gBAAgB,GAChB,sBAAsB,GACtB,MAAM,CAAC;AAEV,MAAM,WAAW,wBAAwB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAErE,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,WAAW,GACtB,sBAAsB,GAAG,SAAS,CAIpC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { createTwoFilesPatch } from "diff";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { withoutUndefinedProperties } from "without-undefined-properties";
|
|
4
|
+
export function diffCreatedDirectory(actual, created, processText) {
|
|
5
|
+
const result = diffCreatedDirectoryWorker(actual, created, ".", processText);
|
|
6
|
+
return result && withoutUndefinedProperties(result);
|
|
7
|
+
}
|
|
8
|
+
function diffCreatedDirectoryChild(childActual, childCreated, pathToChild, processText) {
|
|
9
|
+
if (childActual === undefined) {
|
|
10
|
+
return childCreated;
|
|
11
|
+
}
|
|
12
|
+
if (childCreated === undefined) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
if (typeof childActual === "string") {
|
|
16
|
+
if (typeof childCreated === "string") {
|
|
17
|
+
return diffCreatedFileText(childActual, childCreated, pathToChild, processText);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(childActual)) {
|
|
21
|
+
if (Array.isArray(childCreated)) {
|
|
22
|
+
const fileDiff = diffCreatedFileText(childActual[0], childCreated[0], pathToChild, processText);
|
|
23
|
+
const optionsDiff = diffCreatedFileOptions(childActual[1], childCreated[1], pathToChild);
|
|
24
|
+
return (fileDiff ?? optionsDiff) ? [fileDiff, optionsDiff] : undefined;
|
|
25
|
+
}
|
|
26
|
+
if (typeof childCreated === "string") {
|
|
27
|
+
return diffCreatedFileText(childActual[0], childCreated, pathToChild, processText);
|
|
28
|
+
}
|
|
29
|
+
return `Mismatched ${pathToChild}: actual is created file; created is ${typeof childCreated}.`;
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(childCreated)) {
|
|
32
|
+
if (typeof childActual === "string") {
|
|
33
|
+
return diffCreatedFileText(childActual, childCreated[0], pathToChild, processText);
|
|
34
|
+
}
|
|
35
|
+
return `Mismatched ${pathToChild}: actual is ${typeof childActual}; created is created file.`;
|
|
36
|
+
}
|
|
37
|
+
if (typeof childActual === "object") {
|
|
38
|
+
if (typeof childCreated === "object") {
|
|
39
|
+
return diffCreatedDirectoryWorker(childActual, childCreated, pathToChild, processText);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return `Mismatched ${pathToChild}: actual is ${typeof childActual}; created is ${typeof childCreated}.`;
|
|
43
|
+
}
|
|
44
|
+
function diffCreatedDirectoryWorker(actual, created, pathTo, processText) {
|
|
45
|
+
const result = {};
|
|
46
|
+
for (const [childName, childCreated] of Object.entries(created)) {
|
|
47
|
+
if (!(childName in actual)) {
|
|
48
|
+
result[childName] = undefinedIfEmpty(childCreated);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const childActual = actual[childName];
|
|
52
|
+
const pathToChild = path.join(pathTo, childName);
|
|
53
|
+
const childDiffed = diffCreatedDirectoryChild(childActual, childCreated, pathToChild, processText);
|
|
54
|
+
if (childDiffed !== undefined) {
|
|
55
|
+
result[childName] = childDiffed;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return undefinedIfEmpty(withoutUndefinedProperties(result));
|
|
59
|
+
}
|
|
60
|
+
function diffCreatedFileText(actual, created, pathToFile, processText) {
|
|
61
|
+
const actualProcessed = processText(created, pathToFile);
|
|
62
|
+
const createdProcessed = processText(actual, pathToFile);
|
|
63
|
+
return actualProcessed === createdProcessed
|
|
64
|
+
? undefined
|
|
65
|
+
: createTwoFilesPatch(pathToFile, pathToFile, createdProcessed, actualProcessed).replace(/^Index: .+\n=+\n-{3} .+\n\+{3} .+\n/gmu, "");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @todo
|
|
69
|
+
* Unclear yet how to represent a diff in the mode...
|
|
70
|
+
* Should a DiffedFileEntry type replace CreatedFileOptions.mode with string?
|
|
71
|
+
*/
|
|
72
|
+
function diffCreatedFileOptions(actual, created, pathToFile) {
|
|
73
|
+
if (actual?.executable === undefined ||
|
|
74
|
+
created?.executable === undefined ||
|
|
75
|
+
actual.executable === created.executable) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
executable: diffCreatedFileText(actual.executable.toString(), created.executable.toString(), pathToFile, (text) => text),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function undefinedIfEmpty(value) {
|
|
83
|
+
return !!value &&
|
|
84
|
+
typeof value === "object" &&
|
|
85
|
+
!Array.isArray(value) &&
|
|
86
|
+
Object.keys(value).length === 0
|
|
87
|
+
? undefined
|
|
88
|
+
: value;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=diffCreatedDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffCreatedDirectory.js","sourceRoot":"","sources":["../src/diffCreatedDirectory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAmB1E,MAAM,UAAU,oBAAoB,CACnC,MAAwB,EACxB,OAAyB,EACzB,WAAwB;IAExB,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IAE7E,OAAO,MAAM,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,yBAAyB,CACjC,WAAyC,EACzC,YAA0C,EAC1C,WAAmB,EACnB,WAAwB;IAExB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,mBAAmB,CACzB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,CACX,CAAC;QACH,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,mBAAmB,CACnC,WAAW,CAAC,CAAC,CAAC,EACd,YAAY,CAAC,CAAC,CAAC,EACf,WAAW,EACX,WAAW,CACX,CAAC;YACF,MAAM,WAAW,GAAG,sBAAsB,CACzC,WAAW,CAAC,CAAC,CAAC,EACd,YAAY,CAAC,CAAC,CAAC,EACf,WAAW,CACX,CAAC;YAEF,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,CAAC;QAED,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,mBAAmB,CACzB,WAAW,CAAC,CAAC,CAAC,EACd,YAAY,EACZ,WAAW,EACX,WAAW,CACX,CAAC;QACH,CAAC;QAED,OAAO,cAAc,WAAW,wCAAwC,OAAO,YAAY,GAAG,CAAC;IAChG,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACzB,WAAW,EACX,YAAY,CAAC,CAAC,CAAC,EACf,WAAW,EACX,WAAW,CACX,CAAC;QACH,CAAC;QAED,OAAO,cAAc,WAAW,eAAe,OAAO,WAAW,4BAA4B,CAAC;IAC/F,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,0BAA0B,CAChC,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,CACX,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,cAAc,WAAW,eAAe,OAAO,WAAW,gBAAgB,OAAO,YAAY,GAAG,CAAC;AACzG,CAAC;AAED,SAAS,0BAA0B,CAClC,MAAwB,EACxB,OAAyB,EACzB,MAAc,EACd,WAAwB;IAExB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACnD,SAAS;QACV,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,yBAAyB,CAC5C,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,CACX,CAAC;QAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QACjC,CAAC;IACF,CAAC;IAED,OAAO,gBAAgB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAC3B,MAAc,EACd,OAAe,EACf,UAAkB,EAClB,WAAwB;IAExB,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEzD,OAAO,eAAe,KAAK,gBAAgB;QAC1C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,mBAAmB,CACnB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,CACf,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC9B,MAAsC,EACtC,OAAuC,EACvC,UAAkB;IAElB,IACC,MAAM,EAAE,UAAU,KAAK,SAAS;QAChC,OAAO,EAAE,UAAU,KAAK,SAAS;QACjC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EACvC,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,UAAU,EAAE,mBAAmB,CAC9B,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAC5B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAC7B,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CACd;KACD,CAAC;AACH,CAAC;AACD,SAAS,gBAAgB,CAAI,KAAQ;IACpC,OAAO,CAAC,CAAC,KAAK;QACb,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffCreatedDirectory.test.d.ts","sourceRoot":"","sources":["../src/diffCreatedDirectory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { diffCreatedDirectory, } from "./diffCreatedDirectory.js";
|
|
3
|
+
describe("diffCreatedDirectory", () => {
|
|
4
|
+
test.each([
|
|
5
|
+
[{}, {}, undefined],
|
|
6
|
+
[{}, { a: "" }, { a: "" }],
|
|
7
|
+
[{}, { a: { b: "" } }, { a: { b: "" } }],
|
|
8
|
+
[{ a: "" }, { a: "" }, undefined],
|
|
9
|
+
[
|
|
10
|
+
{ a: "" },
|
|
11
|
+
{ a: "b\n" },
|
|
12
|
+
{
|
|
13
|
+
a: `@@ -0,0 +1,1 @@
|
|
14
|
+
+b
|
|
15
|
+
`,
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
[{ a: "b\n" }, { a: "b\n" }, undefined],
|
|
19
|
+
[
|
|
20
|
+
{ a: "abc\n" },
|
|
21
|
+
{ a: "bbc\n" },
|
|
22
|
+
{
|
|
23
|
+
a: `@@ -1,1 +1,1 @@
|
|
24
|
+
-abc
|
|
25
|
+
+bbc
|
|
26
|
+
`,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
[{ a: "b\n" }, {}, undefined],
|
|
30
|
+
[{ a: "" }, { a: [""] }, undefined],
|
|
31
|
+
[{ a: "" }, { a: ["", { executable: undefined }] }, undefined],
|
|
32
|
+
[{ a: "" }, { a: ["", { executable: true }] }, undefined],
|
|
33
|
+
[{ a: [""] }, { a: ["", { executable: true }] }, undefined],
|
|
34
|
+
[
|
|
35
|
+
{ a: ["", { executable: undefined }] },
|
|
36
|
+
{ a: ["", { executable: undefined }] },
|
|
37
|
+
undefined,
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
{ a: ["", { executable: undefined }] },
|
|
41
|
+
{ a: ["", { executable: true }] },
|
|
42
|
+
undefined,
|
|
43
|
+
],
|
|
44
|
+
[
|
|
45
|
+
{ a: ["", { executable: true }] },
|
|
46
|
+
{ a: ["", { executable: true }] },
|
|
47
|
+
undefined,
|
|
48
|
+
],
|
|
49
|
+
[{ a: ["", { executable: true }] }, { a: [""] }, undefined],
|
|
50
|
+
[{ a: ["", { executable: true }] }, { a: ["", {}] }, undefined],
|
|
51
|
+
[
|
|
52
|
+
{ a: ["", { executable: true }] },
|
|
53
|
+
{ a: ["", { executable: undefined }] },
|
|
54
|
+
undefined,
|
|
55
|
+
],
|
|
56
|
+
[
|
|
57
|
+
{ a: ["", { executable: true }] },
|
|
58
|
+
{ a: ["", { executable: false }] },
|
|
59
|
+
{
|
|
60
|
+
a: [
|
|
61
|
+
undefined,
|
|
62
|
+
{
|
|
63
|
+
executable: `@@ -1,1 +1,1 @@
|
|
64
|
+
-true
|
|
65
|
+
\
|
|
66
|
+
+false
|
|
67
|
+
\
|
|
68
|
+
`,
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
{ a: "" },
|
|
75
|
+
{ a: { b: {} } },
|
|
76
|
+
{ a: "Mismatched a: actual is string; created is object." },
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
{ a: [""] },
|
|
80
|
+
{ a: { b: {} } },
|
|
81
|
+
{ a: "Mismatched a: actual is created file; created is object." },
|
|
82
|
+
],
|
|
83
|
+
[{ a: [""] }, { a: "" }, undefined],
|
|
84
|
+
[
|
|
85
|
+
{ a: ["b\n"] },
|
|
86
|
+
{ a: "" },
|
|
87
|
+
{
|
|
88
|
+
a: `@@ -1,1 +0,0 @@
|
|
89
|
+
-b
|
|
90
|
+
`,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
[
|
|
94
|
+
{ a: { b: {} } },
|
|
95
|
+
{ a: "" },
|
|
96
|
+
{ a: "Mismatched a: actual is object; created is string." },
|
|
97
|
+
],
|
|
98
|
+
[
|
|
99
|
+
{ a: { b: {} } },
|
|
100
|
+
{ a: [""] },
|
|
101
|
+
{ a: "Mismatched a: actual is object; created is created file." },
|
|
102
|
+
],
|
|
103
|
+
[{ a: "" }, { a: [""] }, undefined],
|
|
104
|
+
[{ a: { b: "c\n" } }, {}, undefined],
|
|
105
|
+
[{ a: { b: "c\n" } }, { b: {} }, undefined],
|
|
106
|
+
[{ a: { b: "c\n" } }, { a: { b: "c\n" } }, undefined],
|
|
107
|
+
[
|
|
108
|
+
{ a: { b: "c\n" } },
|
|
109
|
+
{ a: { b: "d\n" } },
|
|
110
|
+
{
|
|
111
|
+
a: {
|
|
112
|
+
b: `@@ -1,1 +1,1 @@
|
|
113
|
+
-c
|
|
114
|
+
+d
|
|
115
|
+
`,
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
[{ a: { b: "c\n" } }, { a: { d: "e\n" } }, { a: { d: "e\n" } }],
|
|
120
|
+
[
|
|
121
|
+
{ a: { b: { c: undefined } } },
|
|
122
|
+
{ a: { b: { c: { d: "e\n" } } } },
|
|
123
|
+
{ a: { b: { c: { d: "e\n" } } } },
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
{ a: { b: { c: { d: "e\n" } } } },
|
|
127
|
+
{ a: { b: { c: undefined } } },
|
|
128
|
+
undefined,
|
|
129
|
+
],
|
|
130
|
+
[{ a: { b: "c\n" } }, { a: { d: "e\n" } }, { a: { d: "e\n" } }],
|
|
131
|
+
[
|
|
132
|
+
{ a: { b: { c: { d: "e\n" } } } },
|
|
133
|
+
{ a: { b: { f: "g\n" } } },
|
|
134
|
+
{ a: { b: { f: "g\n" } } },
|
|
135
|
+
],
|
|
136
|
+
])("%j and %j", (actual, created, expected) => {
|
|
137
|
+
expect(diffCreatedDirectory(actual, created, (text) => text)).toEqual(expected);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=diffCreatedDirectory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffCreatedDirectory.test.js","sourceRoot":"","sources":["../src/diffCreatedDirectory.test.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createMockFetchers } from "./createMockFetchers.js";
|
|
2
|
+
export { createMockFileSystem } from "./createMockFileSystem.js";
|
|
3
|
+
export { createMockSystems } from "./createMockSystems.js";
|
|
4
|
+
export { diffCreatedDirectory } from "./diffCreatedDirectory.js";
|
|
5
|
+
export { testInput } from "./testInput.js";
|
|
6
|
+
export { testTemplate } from "./testTemplate.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createMockFetchers } from "./createMockFetchers.js";
|
|
2
|
+
export { createMockFileSystem } from "./createMockFileSystem.js";
|
|
3
|
+
export { createMockSystems } from "./createMockSystems.js";
|
|
4
|
+
export { diffCreatedDirectory } from "./diffCreatedDirectory.js";
|
|
5
|
+
export { testInput } from "./testInput.js";
|
|
6
|
+
export { testTemplate } from "./testTemplate.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AnyShape, InferredObject, Input, TakeInput } from "bingo";
|
|
2
|
+
import { MockSystemOptions } from "./types.js";
|
|
3
|
+
export interface InputContextSettingsWithArgs<Args extends object> extends InputContextSettingsWithoutArgs {
|
|
4
|
+
args: Args;
|
|
5
|
+
}
|
|
6
|
+
export interface InputContextSettingsWithoutArgs extends MockSystemOptions {
|
|
7
|
+
take?: TakeInput;
|
|
8
|
+
}
|
|
9
|
+
export declare function testInput<Result, ArgsShape extends AnyShape>(input: Input<Result, ArgsShape>, settings?: Partial<InputContextSettingsWithArgs<InferredObject<ArgsShape>>>): Result;
|
|
10
|
+
//# sourceMappingURL=testInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testInput.d.ts","sourceRoot":"","sources":["../src/testInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,4BAA4B,CAAC,IAAI,SAAS,MAAM,CAChE,SAAQ,+BAA+B;IACvC,IAAI,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,+BAAgC,SAAQ,iBAAiB;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,SAAS,QAAQ,EAC3D,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,QAAQ,GAAE,OAAO,CAChB,4BAA4B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAClD,UASN"}
|
package/lib/testInput.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createMockSystems } from "./createMockSystems.js";
|
|
2
|
+
export function testInput(input, settings = {}) {
|
|
3
|
+
const { system, take } = createMockSystems(settings);
|
|
4
|
+
return input({
|
|
5
|
+
...settings,
|
|
6
|
+
...system,
|
|
7
|
+
take,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=testInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testInput.js","sourceRoot":"","sources":["../src/testInput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAY3D,MAAM,UAAU,SAAS,CACxB,KAA+B,EAC/B,WAEI,EAAE;IAEN,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO,KAAK,CAAC;QACZ,GAAI,QAAoE;QACxE,GAAG,MAAM;QACT,IAAI;KACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testInput.test.d.ts","sourceRoot":"","sources":["../src/testInput.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createInput } from "bingo";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { testInput } from "./testInput.js";
|
|
5
|
+
const inputDoubler = createInput({
|
|
6
|
+
args: {
|
|
7
|
+
value: z.number(),
|
|
8
|
+
},
|
|
9
|
+
produce({ args }) {
|
|
10
|
+
return args.value * 2;
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
describe("testInput", () => {
|
|
14
|
+
it("forwards args to the input", () => {
|
|
15
|
+
const actual = testInput(inputDoubler, { args: { value: 2 } });
|
|
16
|
+
expect(actual).toEqual(4);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=testInput.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testInput.test.js","sourceRoot":"","sources":["../src/testInput.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,YAAY,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB;IACD,OAAO,CAAC,EAAE,IAAI,EAAE;QACf,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACvB,CAAC;CACD,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AnyShape, InferredObject, SystemContext, Template } from "bingo";
|
|
2
|
+
export interface TestProductionSettingsBase {
|
|
3
|
+
system?: Omit<Partial<SystemContext>, "take">;
|
|
4
|
+
}
|
|
5
|
+
export interface TestTemplateProductionSettings<OptionsShape extends AnyShape> extends TestProductionSettingsBase {
|
|
6
|
+
options: InferredObject<OptionsShape>;
|
|
7
|
+
}
|
|
8
|
+
export declare function testTemplate<OptionsShape extends AnyShape>(template: Template<OptionsShape>, settings: TestTemplateProductionSettings<OptionsShape>): Promise<Partial<import("bingo").Creation>>;
|
|
9
|
+
//# sourceMappingURL=testTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTemplate.d.ts","sourceRoot":"","sources":["../src/testTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,cAAc,EAEd,aAAa,EACb,QAAQ,EACR,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,0BAA0B;IAC1C,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,8BAA8B,CAAC,YAAY,SAAS,QAAQ,CAC5E,SAAQ,0BAA0B;IAClC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;CACtC;AAED,wBAAsB,YAAY,CAAC,YAAY,SAAS,QAAQ,EAC/D,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,QAAQ,EAAE,8BAA8B,CAAC,YAAY,CAAC,8CAKtD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { produceTemplate, } from "bingo";
|
|
2
|
+
import { createMockSystems } from "./createMockSystems.js";
|
|
3
|
+
export async function testTemplate(template, settings) {
|
|
4
|
+
const { system } = createMockSystems(settings.system);
|
|
5
|
+
return await produceTemplate(template, { ...settings, ...system });
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=testTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTemplate.js","sourceRoot":"","sources":["../src/testTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,eAAe,GAGf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAW3D,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,QAAgC,EAChC,QAAsD;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,MAAM,eAAe,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTemplate.test.d.ts","sourceRoot":"","sources":["../src/testTemplate.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createTemplate } from "bingo";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { testTemplate } from "./testTemplate.js";
|
|
5
|
+
describe("testTemplate", () => {
|
|
6
|
+
describe("options", () => {
|
|
7
|
+
const template = createTemplate({
|
|
8
|
+
options: {
|
|
9
|
+
value: z.string(),
|
|
10
|
+
},
|
|
11
|
+
produce({ options }) {
|
|
12
|
+
return {
|
|
13
|
+
files: {
|
|
14
|
+
"value.txt": options.value,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
it("passes options to the block when provided via options", async () => {
|
|
20
|
+
const actual = await testTemplate(template, {
|
|
21
|
+
options: { value: "abc" },
|
|
22
|
+
});
|
|
23
|
+
expect(actual).toEqual({
|
|
24
|
+
files: { "value.txt": "abc" },
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=testTemplate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTemplate.test.js","sourceRoot":"","sources":["../src/testTemplate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC/B,OAAO,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB;YACD,OAAO,CAAC,EAAE,OAAO,EAAE;gBAClB,OAAO;oBACN,KAAK,EAAE;wBACN,WAAW,EAAE,OAAO,CAAC,KAAK;qBAC1B;iBACD,CAAC;YACH,CAAC;SACD,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE;gBAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;aACzB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACtB,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;aAC7B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TakeInput } from "bingo";
|
|
2
|
+
import { SystemFetchers, SystemRunner, WritingFileSystem } from "bingo-systems";
|
|
3
|
+
export type Fetch = typeof fetch;
|
|
4
|
+
export interface MockSystemOptions {
|
|
5
|
+
fetchers?: SystemFetchers;
|
|
6
|
+
fs?: Partial<WritingFileSystem>;
|
|
7
|
+
runner?: SystemRunner;
|
|
8
|
+
take?: TakeInput;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB"}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/lib/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAEhE"}
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function createFailingFunction(label, user) {
|
|
2
|
+
return () => failingFunction(label, user);
|
|
3
|
+
}
|
|
4
|
+
function failingFunction(label, user) {
|
|
5
|
+
throw new Error(`Context property '${label}' was used by ${user} but not provided.`);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,IAAY;IAChE,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY;IACnD,MAAM,IAAI,KAAK,CACd,qBAAqB,KAAK,iBAAiB,IAAI,oBAAoB,CACnE,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bingo-testers",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Test utilities for composable, testable, type-safe templates. โ๏ธ",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/JoshuaKGoldberg/bingo",
|
|
8
|
+
"directory": "packages/bingo-testers"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": {
|
|
12
|
+
"name": "Josh Goldberg โจ",
|
|
13
|
+
"email": "npm@joshuakgoldberg.com"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./lib/index.js",
|
|
17
|
+
"files": [
|
|
18
|
+
"lib/",
|
|
19
|
+
"package.json",
|
|
20
|
+
"LICENSE.md",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"diff": "^7.0.0",
|
|
25
|
+
"octokit": "^4.1.2",
|
|
26
|
+
"without-undefined-properties": "^0.1.1"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/diff": "7.0.1",
|
|
30
|
+
"zod": "3.24.2"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"bingo": "^0.3.0",
|
|
34
|
+
"bingo-fs": "^0.2.0",
|
|
35
|
+
"bingo-systems": "^0.2.0"
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=18"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc"
|
|
42
|
+
}
|
|
43
|
+
}
|