puter/tools/api-tester/apitest.js

113 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-01-10 04:51:50 +08:00
const YAML = require('yaml');
const TestSDK = require('./lib/TestSDK');
const log_error = require('./lib/log_error');
const TestRegistry = require('./lib/TestRegistry');
const fs = require('node:fs');
const { parseArgs } = require('node:util');
const args = process.argv.slice(2);
let config, report;
try {
({ values: {
config,
report,
bench,
unit,
}, positionals: [id] } = parseArgs({
options: {
config: {
type: 'string',
},
report: {
type: 'string',
},
bench: { type: 'boolean' },
unit: { type: 'boolean' },
},
allowPositionals: true,
}));
} catch (e) {
if ( args.length < 1 ) {
console.error(
'Usage: apitest [OPTIONS]\n' +
'\n' +
'Options:\n' +
' --config=<path> (required) Path to configuration file\n' +
' --report=<path> (optional) Output file for full test results\n' +
''
);
process.exit(1);
}
}
const conf = YAML.parse(fs.readFileSync(config).toString());
const main = async () => {
const ts = new TestSDK(conf);
try {
await ts.delete('api_test', { recursive: true });
} catch (e) {
}
await ts.mkdir('api_test', { overwrite: true });
ts.cd('api_test');
const registry = new TestRegistry(ts);
registry.add_test_sdk('puter-rest.v1', require('./test_sdks/puter-rest')({
config: conf,
}));
require('./tests/__entry__.js')(registry);
require('./benches/simple.js')(registry);
if ( id ) {
if ( unit ) {
await registry.run_test(id);
} else if ( bench ) {
await registry.run_bench(id);
} else {
await registry.run(id);
}
return;
}
if ( unit ) {
await registry.run_all_tests();
} else if ( bench ) {
await registry.run_all_benches();
} else {
await registry.run_all();
}
// await ts.runTestPackage(require('./tests/write_cart'));
// await ts.runTestPackage(require('./tests/move_cart'));
// await ts.runTestPackage(require('./tests/copy_cart'));
// await ts.runTestPackage(require('./tests/write_and_read'));
// await ts.runTestPackage(require('./tests/move'));
// await ts.runTestPackage(require('./tests/stat'));
// await ts.runTestPackage(require('./tests/readdir'));
// await ts.runTestPackage(require('./tests/mkdir'));
// await ts.runTestPackage(require('./tests/batch'));
// await ts.runTestPackage(require('./tests/delete'));
const all = unit && bench;
if ( all || unit ) ts.printTestResults();
if ( all || bench ) ts.printBenchmarkResults();
}
const main_e = async () => {
try {
await main();
} catch (e) {
log_error(e);
}
}
main_e();