testeranto 0.219.12 → 0.219.13

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.
Files changed (126) hide show
  1. package/dist/common/src/Types.js +61 -0
  2. package/dist/common/src/esbuildConfigs/index.js +2 -1
  3. package/dist/common/src/server/runtimes/node/docker.js +7 -6
  4. package/dist/common/src/server/runtimes/node/esbuild.js +18 -18
  5. package/dist/common/src/server/runtimes/node/node.js +12 -9
  6. package/dist/common/src/server/serverClasees/Server_Base.js +2 -1
  7. package/dist/common/src/server/serverClasees/Server_Docker.js +81 -99
  8. package/dist/common/src/testeranto.js +29 -31
  9. package/dist/common/testeranto/runtimes/node/node.js +2 -1
  10. package/dist/common/testeranto/testeranto.js +70 -0
  11. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  12. package/dist/module/src/Types.js +61 -0
  13. package/dist/module/src/esbuildConfigs/index.js +2 -1
  14. package/dist/module/src/server/runtimes/node/docker.js +7 -6
  15. package/dist/module/src/server/runtimes/node/esbuild.js +18 -18
  16. package/dist/module/src/server/runtimes/node/node.js +12 -9
  17. package/dist/module/src/server/serverClasees/Server_Base.js +2 -1
  18. package/dist/module/src/server/serverClasees/Server_Docker.js +81 -99
  19. package/dist/module/src/testeranto.js +29 -28
  20. package/dist/module/testeranto/runtimes/node/node.js +2 -1
  21. package/dist/module/testeranto/testeranto.js +68 -0
  22. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  23. package/dist/prebuild/{chunk-MU5PJQAO.mjs → chunk-QLT7PNPK.mjs} +3 -3
  24. package/dist/prebuild/server/runtimes/node/node.mjs +20 -22
  25. package/dist/prebuild/server/runtimes/web/web.mjs +1 -1
  26. package/dist/prebuild/testeranto-6SAYRVSE.mjs +72 -0
  27. package/dist/prebuild/testeranto.mjs +75 -108
  28. package/dist/types/{Types.d.ts → src/Types.d.ts} +14 -79
  29. package/dist/types/src/esbuildConfigs/index.d.ts +3 -0
  30. package/dist/types/{server → src/server}/runtimes/golang/docker.d.ts +2 -2
  31. package/dist/types/src/server/runtimes/node/docker.d.ts +14 -0
  32. package/dist/types/src/server/runtimes/node/esbuild.d.ts +4 -0
  33. package/dist/types/{server → src/server}/serverClasees/Server.d.ts +2 -2
  34. package/dist/types/{server → src/server}/serverClasees/Server_Base.d.ts +3 -3
  35. package/dist/types/{server → src/server}/serverClasees/Server_Docker.d.ts +2 -2
  36. package/dist/types/{server → src/server}/serverClasees/Server_HTTP.d.ts +2 -2
  37. package/dist/types/{server → src/server}/serverClasees/Server_WS.d.ts +2 -2
  38. package/dist/types/testeranto/testeranto.d.ts +3 -0
  39. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  40. package/package.json +1 -1
  41. package/src/Types.ts +132 -69
  42. package/src/esbuildConfigs/index.ts +4 -3
  43. package/src/lib/pitono/pyproject.toml +1 -1
  44. package/src/server/runtimes/golang/docker.ts +2 -2
  45. package/src/server/runtimes/node/docker.ts +10 -7
  46. package/src/server/runtimes/node/esbuild.ts +21 -19
  47. package/src/server/runtimes/node/node.ts +14 -10
  48. package/src/server/serverClasees/Server.ts +3 -2
  49. package/src/server/serverClasees/Server_Base.ts +7 -6
  50. package/src/server/serverClasees/Server_Docker.ts +105 -111
  51. package/src/server/serverClasees/Server_HTTP.ts +2 -2
  52. package/src/server/serverClasees/Server_WS.ts +2 -2
  53. package/src/testeranto.ts +37 -32
  54. package/testeranto/bundles/allTests/node/{Node-JOOBJDHW.mjs → Node-MSIIDKGC.mjs} +64 -28
  55. package/testeranto/docker-compose.yml +34 -74
  56. package/testeranto/runtimes/node/node.Dockerfile +0 -1
  57. package/testeranto/runtimes/node/node.ts +2 -1
  58. package/testeranto/testeranto.ts +90 -0
  59. package/tsconfig.json +1 -1
  60. package/allTests.ts +0 -52
  61. package/dist/common/allTests.js +0 -39
  62. package/dist/module/allTests.js +0 -37
  63. package/dist/types/esbuildConfigs/index.d.ts +0 -4
  64. package/dist/types/server/runtimes/node/docker.d.ts +0 -14
  65. package/dist/types/server/runtimes/node/esbuild.d.ts +0 -4
  66. /package/dist/types/{Init.d.ts → src/Init.d.ts} +0 -0
  67. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/consoleDetectorPlugin.d.ts +0 -0
  68. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/eslint-formatter-testeranto.d.ts +0 -0
  69. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/featuresPlugin.d.ts +0 -0
  70. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +0 -0
  71. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/nativeImportDetectorPlugin.d.ts +0 -0
  72. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/rebuildPlugin.d.ts +0 -0
  73. /package/dist/types/{init-docs.d.ts → src/init-docs.d.ts} +0 -0
  74. /package/dist/types/{lib → src/lib}/tiposkripto/BaseGiven.d.ts +0 -0
  75. /package/dist/types/{lib → src/lib}/tiposkripto/BaseSuite.d.ts +0 -0
  76. /package/dist/types/{lib → src/lib}/tiposkripto/BaseThen.d.ts +0 -0
  77. /package/dist/types/{lib → src/lib}/tiposkripto/BaseTiposkripto.d.ts +0 -0
  78. /package/dist/types/{lib → src/lib}/tiposkripto/BaseWhen.d.ts +0 -0
  79. /package/dist/types/{lib → src/lib}/tiposkripto/CoreTypes.d.ts +0 -0
  80. /package/dist/types/{lib → src/lib}/tiposkripto/Node.d.ts +0 -0
  81. /package/dist/types/{lib → src/lib}/tiposkripto/Tiposkripto.d.ts +0 -0
  82. /package/dist/types/{lib → src/lib}/tiposkripto/Types.d.ts +0 -0
  83. /package/dist/types/{lib → src/lib}/tiposkripto/Web.d.ts +0 -0
  84. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/MockGiven.d.ts +0 -0
  85. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/MockThen.d.ts +0 -0
  86. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/MockWhen.d.ts +0 -0
  87. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/adapter.d.ts +0 -0
  88. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/implementation.d.ts +0 -0
  89. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/index.d.ts +0 -0
  90. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/specification.d.ts +0 -0
  91. /package/dist/types/{lib → src/lib}/tiposkripto/abstractBase.test/types.d.ts +0 -0
  92. /package/dist/types/{lib → src/lib}/tiposkripto/index.d.ts +0 -0
  93. /package/dist/types/{runtimes.d.ts → src/runtimes.d.ts} +0 -0
  94. /package/dist/types/{server → src/server}/aider/configParser.d.ts +0 -0
  95. /package/dist/types/{server → src/server}/aider/docker.d.ts +0 -0
  96. /package/dist/types/{server → src/server}/getRunnables.d.ts +0 -0
  97. /package/dist/types/{server → src/server}/htmlTemplate.d.ts +0 -0
  98. /package/dist/types/{server → src/server}/nodeVersion.d.ts +0 -0
  99. /package/dist/types/{server → src/server}/runtimes/common.d.ts +0 -0
  100. /package/dist/types/{server → src/server}/runtimes/java/docker.d.ts +0 -0
  101. /package/dist/types/{server → src/server}/runtimes/node/node.d.ts +0 -0
  102. /package/dist/types/{server → src/server}/runtimes/python/docker.d.ts +0 -0
  103. /package/dist/types/{server → src/server}/runtimes/ruby/docker.d.ts +0 -0
  104. /package/dist/types/{server → src/server}/runtimes/rust/docker.d.ts +0 -0
  105. /package/dist/types/{server → src/server}/runtimes/web/docker.d.ts +0 -0
  106. /package/dist/types/{server → src/server}/runtimes/web/esbuild.d.ts +0 -0
  107. /package/dist/types/{server → src/server}/runtimes/web/hoist.d.ts +0 -0
  108. /package/dist/types/{server → src/server}/runtimes/web/web.d.ts +0 -0
  109. /package/dist/types/{server → src/server}/serverClasees/Server_FS.d.ts +0 -0
  110. /package/dist/types/{server → src/server}/serverManagers/DockerManager.d.ts +0 -0
  111. /package/dist/types/{server → src/server}/serverManagers/HttpManager.d.ts +0 -0
  112. /package/dist/types/{server → src/server}/serverManagers/WsManager.d.ts +0 -0
  113. /package/dist/types/{server → src/server}/serverManagers/fs.d.ts +0 -0
  114. /package/dist/types/{server → src/server}/serverManagers/tcp.d.ts +0 -0
  115. /package/dist/types/{server → src/server}/types.d.ts +0 -0
  116. /package/dist/types/{testeranto.d.ts → src/testeranto.d.ts} +0 -0
  117. /package/dist/types/{vscode → src/vscode}/TerminalManager.d.ts +0 -0
  118. /package/dist/types/{vscode → src/vscode}/TestTreeItem.d.ts +0 -0
  119. /package/dist/types/{vscode → src/vscode}/extension.d.ts +0 -0
  120. /package/dist/types/{vscode → src/vscode}/providers/FeaturesTreeDataProvider.d.ts +0 -0
  121. /package/dist/types/{vscode → src/vscode}/providers/FileTreeDataProvider.d.ts +0 -0
  122. /package/dist/types/{vscode → src/vscode}/providers/ProcessesTreeDataProvider.d.ts +0 -0
  123. /package/dist/types/{vscode → src/vscode}/providers/ResultsTreeDataProvider.d.ts +0 -0
  124. /package/dist/types/{vscode → src/vscode}/providers/TestTreeDataProvider.d.ts +0 -0
  125. /package/dist/types/{vscode → src/vscode}/types.d.ts +0 -0
  126. /package/testeranto/{testeranto.yml → testeranto-deprecateed.yml} +0 -0
@@ -1 +1,62 @@
1
1
  export {};
2
+ // export type ITestconfig = {
3
+ // httpPort: number;
4
+ // featureIngestor: (s: string) => Promise<string>;
5
+ // importPlugins: IPluginFactory[];
6
+ // ports: string[];
7
+ // src: string;
8
+ // check: string;
9
+ // java: {
10
+ // plugins: any[];
11
+ // tests: Record<string, { ports: number }>;
12
+ // loaders: Record<string, string>;
13
+ // checks: IChecks;
14
+ // dockerfile: string;
15
+ // };
16
+ // rust: {
17
+ // plugins: any[];
18
+ // tests: Record<string, { ports: number }>;
19
+ // loaders: Record<string, string>;
20
+ // checks: IChecks;
21
+ // dockerfile: string;
22
+ // };
23
+ // ruby: {
24
+ // plugins: any[];
25
+ // tests: Record<string, { ports: number }>;
26
+ // loaders: Record<string, string>;
27
+ // checks: IChecks;
28
+ // dockerfile: string;
29
+ // };
30
+ // golang: {
31
+ // plugins: any[];
32
+ // tests: Record<string, { ports: number }>;
33
+ // loaders: Record<string, string>;
34
+ // checks: IChecks;
35
+ // dockerfile: string;
36
+ // };
37
+ // python: {
38
+ // plugins: any[];
39
+ // tests: Record<string, { ports: number }>;
40
+ // loaders: Record<string, string>;
41
+ // checks: IChecks;
42
+ // dockerfile: string;
43
+ // };
44
+ // node: {
45
+ // plugins: any[];
46
+ // tests: Record<string, { ports: number }>;
47
+ // loaders: Record<string, string>;
48
+ // externals: string[];
49
+ // checks: IChecks;
50
+ // dockerfile: string;
51
+ // };
52
+ // web: {
53
+ // plugins: any[];
54
+ // tests: Record<string, { ports: number }>;
55
+ // loaders: Record<string, string>;
56
+ // externals: string[];
57
+ // checks: IChecks;
58
+ // dockerfile: string;
59
+ // };
60
+ // };
61
+ // export type IBuiltConfig = { buildDir: string } & ITestconfig;
62
+ // export type IConfig = Map<string, [IRunTime, string, string, { tests: string[] }]>
@@ -1,3 +1,4 @@
1
+ // import { ITestconfig } from "../Types";
1
2
  export default (config) => {
2
3
  return {
3
4
  // packages: "external",
@@ -8,7 +9,7 @@ export default (config) => {
8
9
  outbase: ".",
9
10
  jsx: "transform",
10
11
  bundle: true,
11
- minify: config.minify === true,
12
+ // minify: config.minify === true,
12
13
  write: true,
13
14
  loader: {
14
15
  ".js": "jsx",
@@ -1,4 +1,4 @@
1
- export const nodeDockerComposeFile = (config, container_name, fpath) => {
1
+ export const nodeDockerComposeFile = (config, container_name, projectConfigPath, nodeConfigPath, testName) => {
2
2
  return {
3
3
  build: {
4
4
  context: process.cwd(),
@@ -13,21 +13,22 @@ export const nodeDockerComposeFile = (config, container_name, fpath) => {
13
13
  `${process.cwd()}/dist:/workspace/dist`,
14
14
  `${process.cwd()}/testeranto:/workspace/testeranto`,
15
15
  ],
16
- command: nodeBuildCommand(fpath),
16
+ command: nodeBuildCommand(projectConfigPath, nodeConfigPath, testName),
17
17
  };
18
18
  };
19
19
  const externalTests = true;
20
- export const nodeBuildCommand = (fpath) => {
20
+ export const nodeBuildCommand = (projectConfigPath, nodeConfigPath, testName) => {
21
21
  if (externalTests) {
22
- console.log("external tests", process.cwd());
22
+ console.log("external tests", testName);
23
23
  // return `cat node_modules/testeranto/src/server/runtimes/node/esbuild.ts`
24
- return `yarn tsx node_modules/testeranto/src/server/runtimes/node/node.ts ${fpath} testeranto/testeranto.yml`;
24
+ return `yarn tsx node_modules/testeranto/src/server/runtimes/node/node.ts /workspace/testeranto/testeranto.ts ${nodeConfigPath} ${testName}`;
25
25
  // return `cat node_modules/testeranto/src/server/runtimes/node/node.ts`
26
26
  // return ["sh", "-c", "cd /workspace && javac -cp \".:lib/*\" src/server/runtimes/java/main.java && java -cp \"src/server/runtimes/java:.\" main"]
27
27
  }
28
28
  else {
29
29
  console.log("not external tests");
30
- return `yarn tsx src/server/runtimes/node/node.ts /workspace/${fpath}`;
30
+ // return `yarn tsx src/server/runtimes/node/node.ts /workspace/${fpath}`;
31
+ return `yarn tsx src/server/runtimes/node/node.ts /workspace/testeranto/testeranto.ts /workspace/${nodeConfigPath} ${testName}`;
31
32
  }
32
33
  };
33
34
  export const nodeBddCommand = (fpath) => {
@@ -2,34 +2,34 @@ import featuresPlugin from "../../../esbuildConfigs/featuresPlugin.js";
2
2
  import baseEsBuildConfig from "../../../esbuildConfigs/index.js";
3
3
  import inputFilesPlugin from "../../../esbuildConfigs/inputFilesPlugin.js";
4
4
  import rebuildPlugin from "../../../esbuildConfigs/rebuildPlugin.js";
5
- const absoluteBundlesDir = (c) => {
5
+ const absoluteBundlesDir = () => {
6
6
  return "./testeranto/bundles/allTests/node/";
7
7
  };
8
- export default (projectConfig, testName) => {
9
- var _a, _b, _c;
10
- console.log("mark77", projectConfig);
8
+ export default (nodeConfig, testName, projectConfig) => {
9
+ var _a;
10
+ console.log("esbuild", testName, projectConfig);
11
+ const entryPoints = projectConfig.runtimes[testName].tests;
11
12
  // Get entry points from config, or use a default
12
- let entrypoints = [];
13
- if ((_a = projectConfig.node) === null || _a === void 0 ? void 0 : _a.tests) {
14
- entrypoints = Object.keys(projectConfig.node.tests);
15
- }
16
- else {
17
- // console.log(projectConfig)
18
- throw "projectConfig.node.tests should exist";
19
- // Fallback to a reasonable default
20
- // entrypoints = ["./example/Calculator.test.ts"];
21
- // console.warn(`No node.tests found in config, using default entry point: ${entrypoints[0]}`);
22
- }
13
+ // let entrypoints: string[] = [];
14
+ // if (nodeConfig) {
15
+ // entrypoints = (projectConfig.tests);
16
+ // } else {
17
+ // // console.log(projectConfig)
18
+ // throw "projectConfig.node.tests should exist"
19
+ // // Fallback to a reasonable default
20
+ // // entrypoints = ["./example/Calculator.test.ts"];
21
+ // // console.warn(`No node.tests found in config, using default entry point: ${entrypoints[0]}`);
22
+ // }
23
23
  const { inputFilesPluginFactory, register } = inputFilesPlugin("node", testName);
24
- return Object.assign(Object.assign({}, baseEsBuildConfig(projectConfig)), { outdir: absoluteBundlesDir(projectConfig), outbase: ".", metafile: true, supported: {
24
+ return Object.assign(Object.assign({}, baseEsBuildConfig(nodeConfig)), { outdir: absoluteBundlesDir(), outbase: ".", metafile: true, supported: {
25
25
  "dynamic-import": true,
26
26
  }, define: {
27
27
  "process.env.FLUENTFFMPEG_COV": "0",
28
28
  ENV: `"node"`,
29
- }, bundle: true, format: "esm", absWorkingDir: process.cwd(), platform: "node", packages: "external", entryPoints: entrypoints, plugins: [
29
+ }, bundle: true, format: "esm", absWorkingDir: process.cwd(), platform: "node", packages: "external", entryPoints, plugins: [
30
30
  featuresPlugin,
31
31
  inputFilesPluginFactory,
32
32
  rebuildPlugin("node"),
33
- ...(((_c = (_b = projectConfig.node) === null || _b === void 0 ? void 0 : _b.plugins) === null || _c === void 0 ? void 0 : _c.map((p) => p(register, entrypoints))) || []),
33
+ ...(((_a = nodeConfig.plugins) === null || _a === void 0 ? void 0 : _a.map((p) => p(register, entryPoints))) || []),
34
34
  ] });
35
35
  };
@@ -1,20 +1,22 @@
1
1
  import esbuild from "esbuild";
2
- import nodeConfiger from "./esbuild";
3
2
  import { processMetafile } from "../common";
3
+ import nodeConfiger from "./esbuild";
4
4
  console.log(`[NODE BUILDER] hello: ${process.argv}`);
5
- const nodeConfigPath = process.argv[2];
6
- const projectConfigPath = process.argv[3];
7
- const testName = 'idk';
5
+ const projectConfigPath = process.argv[2];
6
+ const nodeConfigPath = process.argv[3];
7
+ const testName = process.argv[4];
8
+ console.log(`[NODE BUILDER] projectConfigPath: ${projectConfigPath}`);
8
9
  console.log(`[NODE BUILDER] nodeConfig: ${nodeConfigPath}`);
10
+ console.log(`[NODE BUILDER] testName: ${testName}`);
9
11
  // run esbuild in watch mode using esbuildConfigs. Write to fs the bundle and metafile
10
- async function startBundling(config) {
12
+ async function startBundling(nodeConfigs, projectConfig) {
11
13
  console.log(`[NODE BUILDER] is now bundling: ${testName}`);
12
- const n = nodeConfiger(config, testName);
14
+ const n = nodeConfiger(nodeConfigs, testName, projectConfig);
13
15
  const buildResult = await esbuild.build(n);
14
16
  // const metafilesDir =
15
17
  // process.env.METAFILES_DIR || "/workspace/testeranto/metafiles/node";
16
18
  if (buildResult.metafile) {
17
- await processMetafile(config, buildResult.metafile, 'node');
19
+ await processMetafile(projectConfig, buildResult.metafile, 'node');
18
20
  }
19
21
  else {
20
22
  console.warn("No metafile generated by esbuild");
@@ -22,8 +24,9 @@ async function startBundling(config) {
22
24
  }
23
25
  async function main() {
24
26
  try {
25
- const config = (await import(nodeConfigPath)).default;
26
- await startBundling(config);
27
+ const nodeConfigs = (await import(nodeConfigPath)).default;
28
+ const projectConfigs = (await import(projectConfigPath)).default;
29
+ await startBundling(nodeConfigs, projectConfigs);
27
30
  }
28
31
  catch (error) {
29
32
  console.error("NODE BUILDER: Error importing config:", nodeConfigPath, error);
@@ -2,9 +2,10 @@ export class Server_Base {
2
2
  constructor(configs, mode) {
3
3
  this.configs = configs;
4
4
  this.mode = mode;
5
+ console.log(`[Base] ${this.configs}`);
5
6
  }
6
7
  async start() {
7
- console.log(`[Server_Base] start()`);
8
+ // console.log(`[Server_Base] start()`)
8
9
  }
9
10
  async stop() {
10
11
  console.log(`[Server_Base] stop()`);
@@ -36,15 +36,15 @@ export class Server_Docker extends Server_WS {
36
36
  staticTestDockerComposeFile(runtime, container_name, command) {
37
37
  // Find the dockerfile path from configs
38
38
  let dockerfilePath = '';
39
- for (const [key, value] of this.configs.entries()) {
40
- if (value[0] === runtime) {
41
- dockerfilePath = value[1];
39
+ for (const [key, value] of Object.entries(this.configs.runtimes)) {
40
+ if (value.runtime === runtime) {
41
+ dockerfilePath = value.dockerfile;
42
42
  break;
43
43
  }
44
44
  }
45
45
  // If no dockerfile found, use a default based on runtime
46
46
  if (!dockerfilePath) {
47
- throw (`no dockerfile found for ${dockerfilePath}`);
47
+ throw (`[Docker] [staticTestDockerComposeFile] no dockerfile found for ${dockerfilePath}, ${Object.entries(this.configs)}`);
48
48
  }
49
49
  return {
50
50
  build: {
@@ -65,15 +65,15 @@ export class Server_Docker extends Server_WS {
65
65
  bddTestDockerComposeFile(runtime, container_name, command) {
66
66
  // Find the dockerfile path from configs
67
67
  let dockerfilePath = '';
68
- for (const [key, value] of this.configs.entries()) {
69
- if (value[0] === runtime) {
70
- dockerfilePath = value[1];
68
+ for (const [key, value] of Object.entries(this.configs.runtimes)) {
69
+ if (value.runtime === runtime) {
70
+ dockerfilePath = value.dockerfile;
71
71
  break;
72
72
  }
73
73
  }
74
74
  // If no dockerfile found, use a default based on runtime
75
75
  if (!dockerfilePath) {
76
- throw (`no dockerfile found for ${dockerfilePath}`);
76
+ throw (`[Docker] [bddTestDockerComposeFile] no dockerfile found for ${dockerfilePath}, ${Object.entries(this.configs)}`);
77
77
  }
78
78
  const service = {
79
79
  build: {
@@ -119,6 +119,7 @@ export class Server_Docker extends Server_WS {
119
119
  // config: IBuiltConfig,
120
120
  ) {
121
121
  const services = {};
122
+ console.log("mark1");
122
123
  // // Add browser service
123
124
  // services['browser'] = {
124
125
  // build:
@@ -153,89 +154,66 @@ export class Server_Docker extends Server_WS {
153
154
  "java": [javaDockerComposeFile, javaBuildCommand, javaBddCommand]
154
155
  };
155
156
  // Iterate through each entry in the config Map
156
- for (const [runtimeTestsName, runtimeTests] of this.configs.entries()) {
157
- const runtime = runtimeTests[0];
158
- const dockerfile = runtimeTests[1];
159
- const runtimeConfig = runtimeTests[2];
160
- const testsObj = runtimeTests[3];
161
- const buildCommand = runTimeToCompose[runtime][1](runtimeConfig);
162
- if (RUN_TIMES.includes(runtime)) {
163
- // Add builder service for this runtime
164
- const builderServiceName = `${runtime}-builder`;
165
- // Ensure dockerfile path is valid and exists
166
- let dockerfilePath = dockerfile;
167
- const fullDockerfilePath = path.join(process.cwd(), dockerfilePath);
168
- if (!fs.existsSync(fullDockerfilePath)) {
169
- throw (`[Server_Docker] Dockerfile not found at ${fullDockerfilePath}`);
170
- }
171
- services[builderServiceName] = {
172
- build: {
173
- context: process.cwd(),
174
- dockerfile: dockerfilePath,
175
- },
176
- container_name: builderServiceName,
177
- environment: {},
178
- working_dir: "/workspace",
179
- volumes: [
180
- `${process.cwd()}/src:/workspace/src`,
181
- `${process.cwd()}/example:/workspace/example`,
182
- `${process.cwd()}/dist:/workspace/dist`,
183
- `${process.cwd()}/testeranto:/workspace/testeranto`,
184
- ],
185
- command: buildCommand,
186
- networks: ["allTests_network"],
187
- };
188
- }
189
- else {
190
- throw `unknown runtime ${runtime}`;
191
- }
192
- const testEntries = testsObj.tests.map(test => {
193
- if (typeof test === 'string') {
194
- return { name: test, config: {} };
195
- }
196
- else if (test && typeof test === 'object') {
197
- return {
198
- name: test.name || test.testName || 'unknown',
199
- config: test
200
- };
201
- }
202
- else {
203
- return { name: String(test), config: {} };
204
- }
205
- });
206
- for (const { name: testName, config: testConfig } of testEntries) {
207
- // Clean the test name for use in container names
208
- // Handle numeric test names (like '0') by converting to string
209
- const testNameStr = String(testName);
210
- const cleanTestName = testNameStr.toLowerCase()
211
- .replaceAll("/", "_")
212
- .replaceAll(".", "-")
213
- .replace(/[^a-z0-9_-]/g, '');
214
- // Generate UID using the runtimeTestsName (e.g., 'nodeTests') and clean test name
215
- const uid = `${runtimeTestsName}-${cleanTestName}`;
216
- // Add BDD service for this test
217
- const bddCommandFunc = runTimeToCompose[runtime][2];
218
- // TODO find filepath
219
- // const filePath = "testeranto/bundles/allTests/ruby/example/Calculator.test.rb"
220
- console.log("mark8", testName);
221
- const filePath = `testeranto/bundles/allTests/${runtime}/${testName}`;
222
- console.log("mark4", filePath);
223
- const command = bddCommandFunc(filePath);
224
- // // Determine the file path to pass to bddCommandFunc
225
- // let filePath = "";
226
- // if (typeof testConfig === 'string') {
227
- // filePath = testConfig;
228
- // } else if (testConfig && typeof testConfig === 'object') {
229
- // // Try to get path or entryPoint from test config
230
- // filePath = testConfig.path || testConfig.entryPoint || "";
231
- // }
232
- // const command = bddCommandFunc ? bddCommandFunc(filePath) : "";
233
- // Only add BDD service if we have a command
234
- if (command) {
235
- services[`${uid}-bdd`] = this.bddTestDockerComposeFile(runtime, `${uid}-bdd`, command);
157
+ for (const [runtimeTestsName, runtimeTests] of Object.entries(this.configs.runtimes)) {
158
+ const runtime = runtimeTests.runtime;
159
+ const dockerfile = runtimeTests.dockerfile;
160
+ const buildOptions = runtimeTests.buildOptions;
161
+ const testsObj = runtimeTests.tests;
162
+ // loop over all suites which are of the right runtime
163
+ for (const [t, c] of Object.entries(this.configs.runtimes)) {
164
+ if (c.runtime === runtime) {
165
+ if (RUN_TIMES.includes(runtime)) {
166
+ const buildCommand = runTimeToCompose[runtime][1](buildOptions, c.buildOptions, runtimeTestsName);
167
+ // Add builder service for this runtime
168
+ const builderServiceName = `${runtime}-builder`;
169
+ // Ensure dockerfile path is valid and exists
170
+ let dockerfilePath = dockerfile;
171
+ const fullDockerfilePath = path.join(process.cwd(), dockerfilePath);
172
+ if (!fs.existsSync(fullDockerfilePath)) {
173
+ throw (`[Server_Docker] Dockerfile not found at ${fullDockerfilePath}`);
174
+ }
175
+ services[builderServiceName] = {
176
+ build: {
177
+ context: process.cwd(),
178
+ dockerfile: dockerfilePath,
179
+ },
180
+ container_name: builderServiceName,
181
+ environment: {},
182
+ working_dir: "/workspace",
183
+ volumes: [
184
+ `${process.cwd()}/src:/workspace/src`,
185
+ `${process.cwd()}/example:/workspace/example`,
186
+ `${process.cwd()}/dist:/workspace/dist`,
187
+ `${process.cwd()}/testeranto:/workspace/testeranto`,
188
+ ],
189
+ command: buildCommand,
190
+ networks: ["allTests_network"],
191
+ };
192
+ for (const tName of testsObj) {
193
+ // Clean the test name for use in container names
194
+ // Handle numeric test names (like '0') by converting to string
195
+ // const testNameStr = String(testName);
196
+ const cleanTestName = tName.toLowerCase()
197
+ .replaceAll("/", "_")
198
+ .replaceAll(".", "-")
199
+ .replace(/[^a-z0-9_-]/g, '');
200
+ // Generate UID using the runtimeTestsName (e.g., 'nodeTests') and clean test name
201
+ const uid = `${runtimeTestsName.toLowerCase()}-${cleanTestName}`;
202
+ // Add BDD service for this test
203
+ const bddCommandFunc = runTimeToCompose[runtime][2];
204
+ // TODO find filepath
205
+ // const filePath = "testeranto/bundles/allTests/ruby/example/Calculator.test.rb"
206
+ const filePath = `testeranto/bundles/allTests/${runtime}/${tName}`;
207
+ const command = bddCommandFunc(filePath);
208
+ console.log("wtf command", command);
209
+ services[`${uid}-bdd`] = this.bddTestDockerComposeFile(runtime, `${uid}-bdd`, command);
210
+ services[`${uid}-aider`] = this.aiderDockerComposeFile(`${uid}-aider`);
211
+ }
212
+ }
213
+ else {
214
+ throw `unknown runtime ${runtime}`;
215
+ }
236
216
  }
237
- // Always add aider service
238
- services[`${uid}-aider`] = this.aiderDockerComposeFile(`${uid}-aider`);
239
217
  }
240
218
  }
241
219
  // Ensure all services use the same network configuration
@@ -463,10 +441,10 @@ ${x}
463
441
  console.log(`[Server_Docker] Waiting for browser container to be healthy...`);
464
442
  await this.waitForContainerHealthy('browser-allTests', 60000); // 60 seconds max
465
443
  // Start aider services
466
- for (const [configKey, configValue] of this.configs.entries()) {
467
- const runtime = configValue[0];
468
- const testsObj = configValue[3];
469
- const tests = (testsObj === null || testsObj === void 0 ? void 0 : testsObj.tests) || {};
444
+ for (const [configKey, configValue] of Object.entries(this.configs.runtimes)) {
445
+ const runtime = configValue.runtime;
446
+ // const testsObj = configValue[3];
447
+ const tests = configValue.tests;
470
448
  console.log(`[Server_Docker] Found tests for ${runtime}:`, (JSON.stringify(tests)));
471
449
  for (const testName of tests) {
472
450
  // Generate the UID exactly as DockerManager does
@@ -488,10 +466,14 @@ ${x}
488
466
  }
489
467
  // Start BDD test services
490
468
  // TODO these logs from these services should be saved into reports
491
- for (const [configKey, configValue] of this.configs.entries()) {
492
- const runtime = configValue[0];
493
- const testsObj = configValue[3];
494
- const tests = (testsObj === null || testsObj === void 0 ? void 0 : testsObj.tests) || {};
469
+ for (const [configKey, configValue] of Object.entries(this.configs.runtimes)) {
470
+ const runtime = configValue.runtime;
471
+ // const testsObj = configValue[3];
472
+ const tests = configValue.tests;
473
+ console.log(`[Server_Docker] Found tests for ${runtime}:`, (JSON.stringify(tests)));
474
+ // const runtime = configValue[0];
475
+ // const testsObj = configValue[3];
476
+ // const tests = testsObj?.tests || {};
495
477
  for (const testName of tests) {
496
478
  const uid = `${configKey}-${testName.toLowerCase().replaceAll("/", "_").replaceAll(".", "-")}`;
497
479
  const bddServiceName = `${uid}-bdd`;
@@ -517,7 +499,7 @@ ${x}
517
499
  }
518
500
  // Start static test services
519
501
  // TODO these logs from these services should be saved into reports
520
- for (const [configKey, configValue] of this.configs.entries()) {
502
+ for (const [configKey, configValue] of Object.entries(this.configs)) {
521
503
  const runtime = configValue[0];
522
504
  const testsObj = configValue[3];
523
505
  const tests = (testsObj === null || testsObj === void 0 ? void 0 : testsObj.tests) || {};
@@ -1,6 +1,6 @@
1
1
  const fs = await import('fs/promises');
2
- const yaml = await import('yaml');
3
- import path from "path";
2
+ // const yaml = await import('yaml');
3
+ // import path from "path";
4
4
  import { Server } from "./server/serverClasees/Server";
5
5
  const mode = process.argv[3];
6
6
  if (mode !== "once" && mode !== "dev") {
@@ -8,32 +8,33 @@ if (mode !== "once" && mode !== "dev") {
8
8
  process.exit(-1);
9
9
  }
10
10
  const main = async () => {
11
- const yamlPath = path.join(process.cwd(), 'testeranto/testeranto.yml');
12
- const yamlContent = await fs.readFile(yamlPath, 'utf-8');
13
- const parsed = yaml.parse(yamlContent);
14
- const config = new Map();
15
- for (const [key, value] of Object.entries(parsed)) {
16
- if (Array.isArray(value) && value.length >= 4) {
17
- // The first three elements are runtime, dockerfile, script
18
- const runtime = String(value[0]);
19
- const dockerfile = String(value[1]);
20
- const script = String(value[2]);
21
- // The fourth element should be an object with tests
22
- let testsObj = { tests: [] };
23
- const fourth = value[3];
24
- if (fourth && typeof fourth === 'object' && fourth !== null) {
25
- const testsData = fourth;
26
- if (testsData.tests && Array.isArray(testsData.tests)) {
27
- testsObj.tests = testsData.tests.map((t) => String(t));
28
- }
29
- }
30
- config.set(key, [runtime, dockerfile, script, testsObj]);
31
- }
32
- else {
33
- console.warn(`Skipping entry ${key}: expected array with at least 4 elements, got`, value);
34
- }
35
- }
36
- console.log('Parsed config:', Array.from(config.entries()));
11
+ // const yamlPath = path.join(process.cwd(), 'testeranto/testeranto.yml');
12
+ // const yamlContent = await fs.readFile(yamlPath, 'utf-8');
13
+ // const parsed = yaml.parse(yamlContent);
14
+ // const config: ITestconfigV2 = new Map();
15
+ // for (const [key, value] of Object.entries(parsed)) {
16
+ // if (Array.isArray(value) && value.length >= 4) {
17
+ // // The first three elements are runtime, dockerfile, script
18
+ // const runtime = String(value[0]) as IRunTime;
19
+ // const dockerfile = String(value[1]);
20
+ // const script = String(value[2]);
21
+ // // The fourth element should be an object with tests
22
+ // let testsObj = { tests: [] as string[] };
23
+ // const fourth = value[3];
24
+ // if (fourth && typeof fourth === 'object' && fourth !== null) {
25
+ // const testsData = fourth as any;
26
+ // if (testsData.tests && Array.isArray(testsData.tests)) {
27
+ // testsObj.tests = testsData.tests.map((t: any) => String(t));
28
+ // }
29
+ // }
30
+ // config.set(key, [runtime, dockerfile, script, testsObj]);
31
+ // } else {
32
+ // console.warn(`Skipping entry ${key}: expected array with at least 4 elements, got`, value);
33
+ // }
34
+ // }
35
+ // console.log('Parsed config:', Array.from(config.entries()));
36
+ const config = (await import('../testeranto/testeranto.ts')).default;
37
+ console.log("mark123", config);
37
38
  await new Server(config, mode).start();
38
39
  };
39
40
  main();
@@ -1,4 +1,5 @@
1
1
  // the esbuild configuration for testeranto/node
2
2
  export default {
3
- loaders: []
3
+ loaders: [],
4
+ plugins: []
4
5
  };
@@ -0,0 +1,68 @@
1
+ const config = {
2
+ featureIngestor: function (s) {
3
+ throw new Error("Function not implemented.");
4
+ },
5
+ runtimes: {
6
+ nodetests: ({
7
+ runtime: "node",
8
+ tests: ["example/Calculator.test.ts"],
9
+ checks: [
10
+ (x) => `yarn eslint`,
11
+ (x) => `yarn tsc --noEmit`,
12
+ ],
13
+ dockerfile: `testeranto/runtimes/node/node.Dockerfile`,
14
+ buildOptions: `testeranto/runtimes/node/node.ts`
15
+ }),
16
+ webtests: ({
17
+ runtime: "web",
18
+ tests: ["example/Calculator.test.ts"],
19
+ checks: [
20
+ (x) => `yarn eslint`,
21
+ (x) => `yarn tsc --noEmit`,
22
+ ],
23
+ dockerfile: `testeranto/runtimes/web/web.Dockerfile`,
24
+ buildOptions: `testeranto/runtimes/web/web.ts`
25
+ }),
26
+ pythontests: ({
27
+ runtime: "python",
28
+ tests: ["example/Calculator.test.py"],
29
+ checks: [
30
+ (x) => `yarn eslint`,
31
+ (x) => `yarn tsc --noEmit`,
32
+ ],
33
+ dockerfile: `testeranto/runtimes/python/python.Dockerfile`,
34
+ buildOptions: `testeranto/runtimes/python/python.ts`
35
+ }),
36
+ golangtests: ({
37
+ runtime: "golang",
38
+ tests: ["example/Calculator.test.go"],
39
+ checks: [
40
+ (x) => `yarn eslint`,
41
+ (x) => `yarn tsc --noEmit`,
42
+ ],
43
+ dockerfile: `testeranto/runtimes/golang/golang.Dockerfile`,
44
+ buildOptions: `testeranto/runtimes/golang/golang.ts`
45
+ }),
46
+ rusttests: ({
47
+ runtime: "rust",
48
+ tests: ["example/Calculator.test.rs"],
49
+ checks: [
50
+ (x) => `yarn eslint`,
51
+ (x) => `yarn tsc --noEmit`,
52
+ ],
53
+ dockerfile: `testeranto/runtimes/rust/rust.Dockerfile`,
54
+ buildOptions: `testeranto/runtimes/rust/rust.ts`
55
+ }),
56
+ rubytests: ({
57
+ runtime: "ruby",
58
+ tests: ["example/Calculator.test.rb"],
59
+ checks: [
60
+ (x) => `yarn eslint`,
61
+ (x) => `yarn tsc --noEmit`,
62
+ ],
63
+ dockerfile: `testeranto/runtimes/ruby/ruby.Dockerfile`,
64
+ buildOptions: `testeranto/runtimes/ruby/ruby.ts`
65
+ }),
66
+ },
67
+ };
68
+ export default config;