apitest.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. const YAML = require('yaml');
  2. const TestSDK = require('./lib/TestSDK');
  3. const log_error = require('./lib/log_error');
  4. const TestRegistry = require('./lib/TestRegistry');
  5. const fs = require('node:fs');
  6. const { parseArgs } = require('node:util');
  7. const args = process.argv.slice(2);
  8. let config, report;
  9. try {
  10. const parsed = parseArgs({
  11. options: {
  12. config: {
  13. type: 'string',
  14. },
  15. report: {
  16. type: 'string',
  17. },
  18. onlycase: { type: 'string' },
  19. bench: { type: 'boolean' },
  20. unit: { type: 'boolean' },
  21. },
  22. allowPositionals: true,
  23. });
  24. ({ values: {
  25. config,
  26. report,
  27. onlycase,
  28. bench,
  29. unit,
  30. }, positionals: [id] } = parsed);
  31. onlycase = onlycase !== undefined ? Number.parseInt(onlycase) : undefined;
  32. } catch (e) {
  33. console.error(e);
  34. console.error(
  35. 'Usage: apitest [OPTIONS]\n' +
  36. '\n' +
  37. 'Options:\n' +
  38. ' --config=<path> (required) Path to configuration file\n' +
  39. ' --report=<path> (optional) Output file for full test results\n' +
  40. ''
  41. );
  42. process.exit(1);
  43. }
  44. const conf = YAML.parse(fs.readFileSync(config).toString());
  45. const main = async () => {
  46. const context = {
  47. options: {
  48. onlycase,
  49. }
  50. };
  51. const ts = new TestSDK(conf, context);
  52. try {
  53. await ts.delete('api_test', { recursive: true });
  54. } catch (e) {
  55. }
  56. await ts.mkdir('api_test', { overwrite: true });
  57. ts.cd('api_test');
  58. const registry = new TestRegistry(ts);
  59. registry.add_test_sdk('puter-rest.v1', require('./test_sdks/puter-rest')({
  60. config: conf,
  61. }));
  62. require('./tests/__entry__.js')(registry);
  63. require('./benches/simple.js')(registry);
  64. if ( id ) {
  65. if ( unit ) {
  66. await registry.run_test(id);
  67. } else if ( bench ) {
  68. await registry.run_bench(id);
  69. } else {
  70. await registry.run(id);
  71. }
  72. return;
  73. }
  74. if ( unit ) {
  75. await registry.run_all_tests();
  76. } else if ( bench ) {
  77. await registry.run_all_benches();
  78. } else {
  79. await registry.run_all();
  80. }
  81. // await ts.runTestPackage(require('./tests/write_cart'));
  82. // await ts.runTestPackage(require('./tests/move_cart'));
  83. // await ts.runTestPackage(require('./tests/copy_cart'));
  84. // await ts.runTestPackage(require('./tests/write_and_read'));
  85. // await ts.runTestPackage(require('./tests/move'));
  86. // await ts.runTestPackage(require('./tests/stat'));
  87. // await ts.runTestPackage(require('./tests/readdir'));
  88. // await ts.runTestPackage(require('./tests/mkdir'));
  89. // await ts.runTestPackage(require('./tests/batch'));
  90. // await ts.runTestPackage(require('./tests/delete'));
  91. const all = unit && bench;
  92. if ( all || unit ) ts.printTestResults();
  93. if ( all || bench ) ts.printBenchmarkResults();
  94. }
  95. const main_e = async () => {
  96. try {
  97. await main();
  98. } catch (e) {
  99. log_error(e);
  100. }
  101. }
  102. main_e();