testeranto
Version:
the AI powered BDD test framework for typescript projects
82 lines (73 loc) • 2.08 kB
text/typescript
import Testeranto from "./lib/core.js";
import {
defaultTestResourceRequirement,
ITTestResourceRequest,
} from "./lib/index.js";
import { PM_Node } from "./PM/node.js";
import {
ITestSpecification,
ITestImplementation,
ITestAdapter,
Ibdd_in_any,
Ibdd_out_any,
Ibdd_out,
} from "./CoreTypes.js";
let ipcfile;
export class NodeTesteranto<
I extends Ibdd_in_any,
O extends Ibdd_out_any,
M
> extends Testeranto<I, O, M> {
constructor(
input: I["iinput"],
testSpecification: ITestSpecification<I, O>,
testImplementation: ITestImplementation<I, O, M>,
testResourceRequirement: ITTestResourceRequest,
testAdapter: Partial<ITestAdapter<I>>
) {
super(
input,
testSpecification,
testImplementation,
testResourceRequirement,
testAdapter,
() => {
// no-op
}
);
}
async receiveTestResourceConfig(partialTestResource: string) {
return await this.testJobs[0].receiveTestResourceConfig(
new PM_Node(JSON.parse(partialTestResource), ipcfile)
);
}
}
const testeranto = async <I extends Ibdd_in_any, O extends Ibdd_out, M>(
input: I["iinput"],
testSpecification: ITestSpecification<I, O>,
testImplementation: ITestImplementation<I, O, M>,
testAdapter: Partial<ITestAdapter<I>>,
testResourceRequirement: ITTestResourceRequest = defaultTestResourceRequirement
): Promise<Testeranto<I, O, M>> => {
try {
const t = new NodeTesteranto<I, O, M>(
input,
testSpecification,
testImplementation,
testResourceRequirement,
testAdapter
);
process.on("unhandledRejection", (reason, promise) => {
console.error("Unhandled Rejection at:", promise, "reason:", reason);
// Optionally, terminate the process or perform cleanup
// t.registerUncaughtPromise(reason, promise);
});
ipcfile = process.argv[3];
process.exit((await t.receiveTestResourceConfig(process.argv[2])).fails);
} catch (e) {
console.error(e);
console.error(e.stack);
process.exit(-1);
}
};
export default testeranto;