@restormel/testing-report 0.1.0 → 0.1.1
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/read-artifacts.d.ts +3 -2
- package/dist/read-artifacts.d.ts.map +1 -1
- package/dist/read-artifacts.js +12 -6
- package/dist/read-artifacts.js.map +1 -1
- package/dist/write-artifacts.d.ts +7 -3
- package/dist/write-artifacts.d.ts.map +1 -1
- package/dist/write-artifacts.js +13 -7
- package/dist/write-artifacts.js.map +1 -1
- package/package.json +6 -6
package/LICENSE
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -10,5 +10,5 @@ export { buildMvpJsonReport, MVP_REPORT_SCHEMA_VERSION, serializeMvpJsonReport,
|
|
|
10
10
|
export { formatRunSummary, formatRunSummaryLines } from "./terminal-summary.js";
|
|
11
11
|
export { readRunArtifacts } from "./read-artifacts.js";
|
|
12
12
|
export type { LoadedRunArtifacts } from "./read-artifacts.js";
|
|
13
|
-
export { writeRunArtifacts, writeRunReportBundle, type RunArtifactPayload, type RunReportBundleInput, } from "./write-artifacts.js";
|
|
13
|
+
export { writeRunArtifacts, writeRunReportBundle, type ArtifactIoOptions, type RunArtifactPayload, type RunReportBundleInput, } from "./write-artifacts.js";
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAA6B,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAA6B,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAA+B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GAIrB,MAAM,sBAAsB,CAAC"}
|
package/dist/read-artifacts.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RunRecord, type TraceEvent } from "@restormel/testing-core";
|
|
2
|
+
import { type ArtifactIoOptions } from "./write-artifacts.js";
|
|
2
3
|
export interface LoadedRunArtifacts {
|
|
3
4
|
run: RunRecord;
|
|
4
5
|
traces: TraceEvent[];
|
|
@@ -10,7 +11,7 @@ export interface LoadedRunArtifacts {
|
|
|
10
11
|
* Load `run.json` (+ optional `traces.json`, `warnings.txt`) from a run directory,
|
|
11
12
|
* or from a direct path to `run.json`.
|
|
12
13
|
*/
|
|
13
|
-
export declare function readRunArtifacts(path: string): Promise<LoadedRunArtifacts | {
|
|
14
|
+
export declare function readRunArtifacts(path: string, options?: ArtifactIoOptions): Promise<LoadedRunArtifacts | {
|
|
14
15
|
ok: false;
|
|
15
16
|
message: string;
|
|
16
17
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-artifacts.d.ts","sourceRoot":"","sources":["../src/read-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-artifacts.d.ts","sourceRoot":"","sources":["../src/read-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAuC,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEnG,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,kBAAkB,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA2D9D"}
|
package/dist/read-artifacts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
|
-
import { isRunRecord, isTraceEvent } from "@restormel/testing-core";
|
|
3
|
+
import { isRunRecord, isTraceEvent, resolvePathUnderRoot, } from "@restormel/testing-core";
|
|
4
4
|
import { RUN_JSON, TRACES_JSON, WARNINGS_TXT } from "./write-artifacts.js";
|
|
5
5
|
function isTraceEventArray(value) {
|
|
6
6
|
return Array.isArray(value) && value.every((x) => isTraceEvent(x));
|
|
@@ -9,13 +9,19 @@ function isTraceEventArray(value) {
|
|
|
9
9
|
* Load `run.json` (+ optional `traces.json`, `warnings.txt`) from a run directory,
|
|
10
10
|
* or from a direct path to `run.json`.
|
|
11
11
|
*/
|
|
12
|
-
export async function readRunArtifacts(path) {
|
|
13
|
-
const
|
|
12
|
+
export async function readRunArtifacts(path, options) {
|
|
13
|
+
const root = options?.allowedRoot ?? process.cwd();
|
|
14
|
+
const resolved = resolvePathUnderRoot(root, path);
|
|
15
|
+
if (!resolved.ok) {
|
|
16
|
+
return { ok: false, message: resolved.reason };
|
|
17
|
+
}
|
|
18
|
+
const safePath = resolved.path;
|
|
19
|
+
const st = await stat(safePath).catch(() => undefined);
|
|
14
20
|
if (st === undefined) {
|
|
15
|
-
return { ok: false, message: `Not found: ${
|
|
21
|
+
return { ok: false, message: `Not found: ${safePath}` };
|
|
16
22
|
}
|
|
17
|
-
const runJsonPath = st.isDirectory() ? join(
|
|
18
|
-
const artifactDir = st.isDirectory() ?
|
|
23
|
+
const runJsonPath = st.isDirectory() ? join(safePath, RUN_JSON) : safePath;
|
|
24
|
+
const artifactDir = st.isDirectory() ? safePath : dirname(safePath);
|
|
19
25
|
let runRaw;
|
|
20
26
|
try {
|
|
21
27
|
runRaw = await readFile(runJsonPath, "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-artifacts.js","sourceRoot":"","sources":["../src/read-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"read-artifacts.js","sourceRoot":"","sources":["../src/read-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RunRecord, type TraceEvent } from "@restormel/testing-core";
|
|
2
2
|
import type { SuiteReportSlice } from "@restormel/testing-core";
|
|
3
3
|
export { GITHUB_SUMMARY_MD, JUNIT_XML, REPORT_JSON, RUN_JSON, SUMMARY_MD, TRACES_JSON, WARNINGS_TXT, } from "./artifact-filenames.js";
|
|
4
4
|
export interface RunArtifactPayload {
|
|
@@ -13,13 +13,17 @@ export interface RunReportBundleInput extends RunArtifactPayload {
|
|
|
13
13
|
notes?: string;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
export type ArtifactIoOptions = {
|
|
17
|
+
/** Directory tree `dir` must stay within (default: `process.cwd()`). */
|
|
18
|
+
allowedRoot?: string;
|
|
19
|
+
};
|
|
16
20
|
/**
|
|
17
21
|
* Write raw run record, traces, warnings only (legacy / minimal).
|
|
18
22
|
*/
|
|
19
|
-
export declare function writeRunArtifacts(dir: string, payload: RunArtifactPayload): Promise<void>;
|
|
23
|
+
export declare function writeRunArtifacts(dir: string, payload: RunArtifactPayload, options?: ArtifactIoOptions): Promise<void>;
|
|
20
24
|
/**
|
|
21
25
|
* Full MVP artefact set: run.json, traces.json, warnings.txt, report.json, summary.md,
|
|
22
26
|
* github-summary.md (generic), junit.xml.
|
|
23
27
|
*/
|
|
24
|
-
export declare function writeRunReportBundle(dir: string, input: RunReportBundleInput): Promise<void>;
|
|
28
|
+
export declare function writeRunReportBundle(dir: string, input: RunReportBundleInput, options?: ArtifactIoOptions): Promise<void>;
|
|
25
29
|
//# sourceMappingURL=write-artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-artifacts.d.ts","sourceRoot":"","sources":["../src/write-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"write-artifacts.d.ts","sourceRoot":"","sources":["../src/write-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAchG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,oBAAoB,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
package/dist/write-artifacts.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { resolvePathUnderRoot } from "@restormel/testing-core";
|
|
3
4
|
import { GITHUB_SUMMARY_MD, JUNIT_XML, REPORT_JSON, RUN_JSON, SUMMARY_MD, TRACES_JSON, WARNINGS_TXT, } from "./artifact-filenames.js";
|
|
4
5
|
import { buildGithubStepSummaryMarkdown } from "./github-summary.js";
|
|
5
6
|
import { buildJUnitXml } from "./junit.js";
|
|
@@ -9,24 +10,29 @@ export { GITHUB_SUMMARY_MD, JUNIT_XML, REPORT_JSON, RUN_JSON, SUMMARY_MD, TRACES
|
|
|
9
10
|
/**
|
|
10
11
|
* Write raw run record, traces, warnings only (legacy / minimal).
|
|
11
12
|
*/
|
|
12
|
-
export async function writeRunArtifacts(dir, payload) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
export async function writeRunArtifacts(dir, payload, options) {
|
|
14
|
+
const root = options?.allowedRoot ?? process.cwd();
|
|
15
|
+
const resolved = resolvePathUnderRoot(root, dir);
|
|
16
|
+
if (!resolved.ok)
|
|
17
|
+
throw new Error(resolved.reason);
|
|
18
|
+
const safeDir = resolved.path;
|
|
19
|
+
await mkdir(safeDir, { recursive: true });
|
|
20
|
+
await writeFile(join(safeDir, RUN_JSON), `${JSON.stringify(payload.run, null, 2)}\n`, "utf8");
|
|
21
|
+
await writeFile(join(safeDir, TRACES_JSON), `${JSON.stringify(payload.traces, null, 2)}\n`, "utf8");
|
|
16
22
|
if (payload.warnings !== undefined && payload.warnings.length > 0) {
|
|
17
|
-
await writeFile(join(
|
|
23
|
+
await writeFile(join(safeDir, WARNINGS_TXT), `${payload.warnings.join("\n")}\n`, "utf8");
|
|
18
24
|
}
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
21
27
|
* Full MVP artefact set: run.json, traces.json, warnings.txt, report.json, summary.md,
|
|
22
28
|
* github-summary.md (generic), junit.xml.
|
|
23
29
|
*/
|
|
24
|
-
export async function writeRunReportBundle(dir, input) {
|
|
30
|
+
export async function writeRunReportBundle(dir, input, options) {
|
|
25
31
|
await writeRunArtifacts(dir, {
|
|
26
32
|
run: input.run,
|
|
27
33
|
traces: input.traces,
|
|
28
34
|
warnings: input.warnings,
|
|
29
|
-
});
|
|
35
|
+
}, options);
|
|
30
36
|
const mvp = buildMvpJsonReport({
|
|
31
37
|
run: input.run,
|
|
32
38
|
suite: input.suite,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-artifacts.js","sourceRoot":"","sources":["../src/write-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"write-artifacts.js","sourceRoot":"","sources":["../src/write-artifacts.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restormel/testing-report",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Run artefacts (JSON) and terminal-friendly summaries for Restormel / Testing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/Allotment-Technology-Ltd/restormel-
|
|
9
|
-
"directory": "packages/report"
|
|
8
|
+
"url": "https://github.com/Allotment-Technology-Ltd/restormel-keys.git",
|
|
9
|
+
"directory": "packages/testing-report"
|
|
10
10
|
},
|
|
11
11
|
"bugs": {
|
|
12
|
-
"url": "https://github.com/Allotment-Technology-Ltd/restormel-
|
|
12
|
+
"url": "https://github.com/Allotment-Technology-Ltd/restormel-keys/issues"
|
|
13
13
|
},
|
|
14
|
-
"homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/report#readme",
|
|
14
|
+
"homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/testing-report#readme",
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"node": ">=20"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@restormel/testing-core": "0.1.
|
|
34
|
+
"@restormel/testing-core": "0.1.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"typescript": "^5.7.0"
|