@azure-tools/typespec-python 0.61.1 → 0.61.3

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 (70) hide show
  1. package/README.md +4 -4
  2. package/dist/{scripts/eng → eng/scripts/ci}/format.d.ts.map +1 -1
  3. package/dist/eng/scripts/ci/format.js +140 -0
  4. package/dist/eng/scripts/ci/format.js.map +1 -0
  5. package/dist/eng/scripts/ci/lint.d.ts +2 -0
  6. package/dist/eng/scripts/ci/lint.d.ts.map +1 -0
  7. package/dist/eng/scripts/ci/lint.js +96 -0
  8. package/dist/eng/scripts/ci/lint.js.map +1 -0
  9. package/dist/eng/scripts/ci/run-tests.d.ts.map +1 -0
  10. package/dist/eng/scripts/ci/run-tests.js +226 -0
  11. package/dist/eng/scripts/ci/run-tests.js.map +1 -0
  12. package/dist/{scripts/eng → eng/scripts}/regenerate-common.d.ts +1 -0
  13. package/dist/eng/scripts/regenerate-common.d.ts.map +1 -0
  14. package/dist/{scripts/eng → eng/scripts}/regenerate-common.js +15 -14
  15. package/dist/{scripts/eng → eng/scripts}/regenerate-common.js.map +1 -1
  16. package/dist/eng/scripts/regenerate.d.ts +8 -0
  17. package/dist/eng/scripts/regenerate.d.ts.map +1 -0
  18. package/dist/eng/scripts/regenerate.js +288 -0
  19. package/dist/eng/scripts/regenerate.js.map +1 -0
  20. package/dist/eng/scripts/setup/run-python3.d.ts.map +1 -0
  21. package/dist/eng/scripts/setup/run-python3.js.map +1 -0
  22. package/dist/eng/scripts/setup/system-requirements.d.ts.map +1 -0
  23. package/dist/{scripts → eng/scripts/setup}/system-requirements.js +6 -2
  24. package/dist/eng/scripts/setup/system-requirements.js.map +1 -0
  25. package/{scripts → eng/scripts/setup}/__pycache__/package_manager.cpython-310.pyc +0 -0
  26. package/{scripts → eng/scripts/setup}/__pycache__/venvtools.cpython-310.pyc +0 -0
  27. package/{scripts → eng/scripts/setup}/prepare.py +1 -1
  28. package/{scripts → eng/scripts/setup}/run_tsp.py +7 -7
  29. package/{scripts → eng/scripts/setup}/system-requirements.ts +6 -2
  30. package/package.json +52 -49
  31. package/dist/scripts/eng/format.js +0 -4
  32. package/dist/scripts/eng/format.js.map +0 -1
  33. package/dist/scripts/eng/lint.d.ts +0 -5
  34. package/dist/scripts/eng/lint.d.ts.map +0 -1
  35. package/dist/scripts/eng/lint.js +0 -95
  36. package/dist/scripts/eng/lint.js.map +0 -1
  37. package/dist/scripts/eng/regenerate-common.d.ts.map +0 -1
  38. package/dist/scripts/eng/regenerate.d.ts +0 -2
  39. package/dist/scripts/eng/regenerate.d.ts.map +0 -1
  40. package/dist/scripts/eng/regenerate.js +0 -123
  41. package/dist/scripts/eng/regenerate.js.map +0 -1
  42. package/dist/scripts/eng/run-tests.d.ts.map +0 -1
  43. package/dist/scripts/eng/run-tests.js +0 -91
  44. package/dist/scripts/eng/run-tests.js.map +0 -1
  45. package/dist/scripts/eng/utils.d.ts +0 -3
  46. package/dist/scripts/eng/utils.d.ts.map +0 -1
  47. package/dist/scripts/eng/utils.js +0 -39
  48. package/dist/scripts/eng/utils.js.map +0 -1
  49. package/dist/scripts/run-python3.d.ts.map +0 -1
  50. package/dist/scripts/run-python3.js.map +0 -1
  51. package/dist/scripts/system-requirements.d.ts.map +0 -1
  52. package/dist/scripts/system-requirements.js.map +0 -1
  53. package/scripts/eng/format.ts +0 -5
  54. package/scripts/eng/lint.ts +0 -102
  55. package/scripts/eng/mypy.ini +0 -40
  56. package/scripts/eng/pylintrc +0 -59
  57. package/scripts/eng/pyrightconfig.json +0 -7
  58. package/scripts/eng/regenerate-common.ts +0 -449
  59. package/scripts/eng/regenerate.ts +0 -159
  60. package/scripts/eng/run-tests.ts +0 -101
  61. package/scripts/eng/utils.ts +0 -38
  62. /package/dist/{scripts/eng → eng/scripts/ci}/format.d.ts +0 -0
  63. /package/dist/{scripts/eng → eng/scripts/ci}/run-tests.d.ts +0 -0
  64. /package/dist/{scripts → eng/scripts/setup}/run-python3.d.ts +0 -0
  65. /package/dist/{scripts → eng/scripts/setup}/run-python3.js +0 -0
  66. /package/dist/{scripts → eng/scripts/setup}/system-requirements.d.ts +0 -0
  67. /package/{scripts → eng/scripts/setup}/install.py +0 -0
  68. /package/{scripts → eng/scripts/setup}/package_manager.py +0 -0
  69. /package/{scripts → eng/scripts/setup}/run-python3.ts +0 -0
  70. /package/{scripts → eng/scripts/setup}/venvtools.py +0 -0
package/README.md CHANGED
@@ -20,17 +20,17 @@ tsp compile . --emit=@azure-tools/typespec-python
20
20
 
21
21
  ```yaml
22
22
  emit:
23
- - "@azure-tools/typespec-python"
23
+ - "@azure-tools/typespec-python"
24
24
  ```
25
25
 
26
26
  The config can be extended with options as follows:
27
27
 
28
28
  ```yaml
29
29
  emit:
30
- - "@azure-tools/typespec-python"
30
+ - "@azure-tools/typespec-python"
31
31
  options:
32
- "@azure-tools/typespec-python":
33
- option: value
32
+ "@azure-tools/typespec-python":
33
+ option: value
34
34
  ```
35
35
 
36
36
  ## Emitter options
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../scripts/eng/format.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../eng/scripts/ci/format.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ /* eslint-disable no-console */
2
+ import { spawn } from "child_process";
3
+ import fs from "fs";
4
+ import { dirname, join } from "path";
5
+ import pc from "picocolors";
6
+ import { fileURLToPath } from "url";
7
+ import { parseArgs } from "util";
8
+ const root = join(dirname(fileURLToPath(import.meta.url)), "../../../");
9
+ // Get Python venv path
10
+ function getVenvPython() {
11
+ const venvPath = join(root, "venv");
12
+ if (fs.existsSync(join(venvPath, "bin"))) {
13
+ return join(venvPath, "bin", "python");
14
+ }
15
+ else if (fs.existsSync(join(venvPath, "Scripts"))) {
16
+ return join(venvPath, "Scripts", "python.exe");
17
+ }
18
+ throw new Error("Virtual environment not found. Run 'npm run install' first.");
19
+ }
20
+ const argv = parseArgs({
21
+ args: process.argv.slice(2),
22
+ options: {
23
+ typescript: { type: "boolean", short: "t" },
24
+ python: { type: "boolean", short: "p" },
25
+ check: { type: "boolean", short: "c" },
26
+ help: { type: "boolean", short: "h" },
27
+ },
28
+ });
29
+ if (argv.values.help) {
30
+ console.log(`
31
+ ${pc.bold("Usage:")} tsx format.ts [options]
32
+
33
+ ${pc.bold("Description:")}
34
+ Format code using Prettier (TypeScript) and Black (Python).
35
+
36
+ ${pc.bold("Options:")}
37
+ ${pc.cyan("-t, --typescript")}
38
+ Format TypeScript code with Prettier.
39
+
40
+ ${pc.cyan("-p, --python")}
41
+ Format Python scripts with Black.
42
+
43
+ ${pc.cyan("-c, --check")}
44
+ Check formatting without making changes (exit with error if unformatted).
45
+
46
+ ${pc.cyan("-h, --help")}
47
+ Show this help message.
48
+
49
+ ${pc.bold("Examples:")}
50
+ ${pc.dim("# Format all code (default)")}
51
+ tsx format.ts
52
+
53
+ ${pc.dim("# Format only TypeScript")}
54
+ tsx format.ts --typescript
55
+
56
+ ${pc.dim("# Check formatting without making changes")}
57
+ tsx format.ts --check
58
+ `);
59
+ process.exit(0);
60
+ }
61
+ function runCommand(command, args) {
62
+ // Add node_modules/.bin to PATH
63
+ const pathSep = process.platform === "win32" ? ";" : ":";
64
+ const binPath = join(root, "node_modules", ".bin");
65
+ const env = {
66
+ ...process.env,
67
+ PATH: `${binPath}${pathSep}${process.env.PATH}`,
68
+ };
69
+ return new Promise((resolve) => {
70
+ console.log(`${pc.cyan("[RUN]")} ${command} ${args.join(" ")}`);
71
+ const proc = spawn(command, args, {
72
+ cwd: root,
73
+ stdio: "inherit",
74
+ shell: true,
75
+ env,
76
+ });
77
+ proc.on("close", (code) => {
78
+ if (code === 0) {
79
+ console.log(`${pc.green("[PASS]")} ${command} completed successfully`);
80
+ resolve(true);
81
+ }
82
+ else {
83
+ console.log(`${pc.red("[FAIL]")} ${command} failed with code ${code}`);
84
+ resolve(false);
85
+ }
86
+ });
87
+ proc.on("error", (err) => {
88
+ console.log(`${pc.red("[ERROR]")} ${command}: ${err.message}`);
89
+ resolve(false);
90
+ });
91
+ });
92
+ }
93
+ async function formatTypeScript(check) {
94
+ console.log(`\n${pc.bold("=== Formatting TypeScript ===")}\n`);
95
+ const args = check ? ["--check", "src/", "eng/", "*.json", "*.md"] : ["--write", "src/", "eng/", "*.json", "*.md"];
96
+ return runCommand("prettier", args);
97
+ }
98
+ async function formatPython(check) {
99
+ console.log(`\n${pc.bold("=== Formatting Python Scripts ===")}\n`);
100
+ let pythonPath;
101
+ try {
102
+ pythonPath = getVenvPython();
103
+ }
104
+ catch (error) {
105
+ console.error(pc.red(error.message));
106
+ return false;
107
+ }
108
+ const args = ["-m", "black", "eng/scripts/setup/"];
109
+ if (check) {
110
+ args.push("--check");
111
+ }
112
+ return runCommand(pythonPath, args);
113
+ }
114
+ async function main() {
115
+ const runTypeScript = argv.values.typescript;
116
+ const runPython = argv.values.python;
117
+ const check = argv.values.check || false;
118
+ // Default: format both
119
+ const runBoth = !runTypeScript && !runPython;
120
+ let success = true;
121
+ if (runTypeScript || runBoth) {
122
+ const result = await formatTypeScript(check);
123
+ if (!result)
124
+ success = false;
125
+ }
126
+ if (runPython || runBoth) {
127
+ const result = await formatPython(check);
128
+ if (!result)
129
+ success = false;
130
+ }
131
+ if (!success) {
132
+ process.exit(1);
133
+ }
134
+ console.log(`\n${pc.green(pc.bold(`All formatting ${check ? "checks passed" : "complete"}!`))}\n`);
135
+ }
136
+ main().catch((error) => {
137
+ console.error(`${pc.red("Unexpected error:")}`, error);
138
+ process.exit(1);
139
+ });
140
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../eng/scripts/ci/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../../eng/scripts/ci/lint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ /* eslint-disable no-console */
2
+ import { spawn } from "child_process";
3
+ import { dirname, join } from "path";
4
+ import pc from "picocolors";
5
+ import { fileURLToPath } from "url";
6
+ import { parseArgs } from "util";
7
+ const root = join(dirname(fileURLToPath(import.meta.url)), "../../../");
8
+ const argv = parseArgs({
9
+ args: process.argv.slice(2),
10
+ options: {
11
+ help: { type: "boolean", short: "h" },
12
+ command: { type: "string" },
13
+ skipWarning: { type: "string" },
14
+ },
15
+ });
16
+ if (argv.values.help) {
17
+ console.log(`
18
+ ${pc.bold("Usage:")} tsx lint.ts [options]
19
+
20
+ ${pc.bold("Description:")}
21
+ Run linting checks on the codebase.
22
+
23
+ ${pc.bold("Options:")}
24
+ ${pc.cyan("-h, --help")}
25
+ Show this help message.
26
+ ${pc.cyan("--command <eslint|pylint>")}
27
+ Specify which linter to run (default: eslint).
28
+ ${pc.cyan("--skipWarning <true|false>")}
29
+ Skip warnings in output (default: false).
30
+
31
+ ${pc.bold("Examples:")}
32
+ ${pc.dim("# Lint TypeScript code")}
33
+ tsx lint.ts
34
+
35
+ ${pc.dim("# Run eslint only")}
36
+ tsx lint.ts --command eslint
37
+ `);
38
+ process.exit(0);
39
+ }
40
+ function runCommand(command, args, displayName) {
41
+ const name = displayName || `${command} ${args.join(" ")}`;
42
+ // Add node_modules/.bin to PATH so eslint can be found
43
+ const pathSep = process.platform === "win32" ? ";" : ":";
44
+ const binPath = join(root, "node_modules", ".bin");
45
+ const env = {
46
+ ...process.env,
47
+ PATH: `${binPath}${pathSep}${process.env.PATH}`,
48
+ };
49
+ return new Promise((resolve) => {
50
+ console.log(`${pc.cyan("[RUN]")} ${name}`);
51
+ const proc = spawn(command, args, {
52
+ cwd: root,
53
+ stdio: "inherit",
54
+ shell: true,
55
+ env,
56
+ });
57
+ proc.on("close", (code) => {
58
+ if (code === 0) {
59
+ console.log(`${pc.green("[PASS]")} ${name} completed successfully`);
60
+ resolve(true);
61
+ }
62
+ else {
63
+ console.log(`${pc.red("[FAIL]")} ${name} failed with code ${code}`);
64
+ resolve(false);
65
+ }
66
+ });
67
+ proc.on("error", (err) => {
68
+ console.log(`${pc.red("[ERROR]")} ${name}: ${err.message}`);
69
+ resolve(false);
70
+ });
71
+ });
72
+ }
73
+ async function main() {
74
+ const command = argv.values.command || "eslint";
75
+ const skipWarning = argv.values.skipWarning === "true";
76
+ // Only run eslint for now (pylint is handled by tox)
77
+ if (command !== "eslint") {
78
+ console.log(`${pc.yellow("[SKIP]")} ${command} is handled by tox, skipping...`);
79
+ process.exit(0);
80
+ }
81
+ console.log(`\n${pc.bold("=== Linting TypeScript ===")}\n`);
82
+ const eslintArgs = ["."];
83
+ if (!skipWarning) {
84
+ eslintArgs.push("--max-warnings=0");
85
+ }
86
+ const success = await runCommand("eslint", eslintArgs, `eslint .${skipWarning ? "" : " --max-warnings=0"}`);
87
+ if (!success) {
88
+ process.exit(1);
89
+ }
90
+ console.log(`\n${pc.green(pc.bold("All linting checks passed!"))}\n`);
91
+ }
92
+ main().catch((error) => {
93
+ console.error(`${pc.red("Unexpected error:")}`, error);
94
+ process.exit(1);
95
+ });
96
+ //# sourceMappingURL=lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../../eng/scripts/ci/lint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../../../eng/scripts/ci/run-tests.ts"],"names":[],"mappings":""}
@@ -0,0 +1,226 @@
1
+ /* eslint-disable no-console */
2
+ import { spawn } from "child_process";
3
+ import fs from "fs";
4
+ import { cpus } from "os";
5
+ import { dirname, join } from "path";
6
+ import pc from "picocolors";
7
+ import { fileURLToPath } from "url";
8
+ import { parseArgs } from "util";
9
+ const root = join(dirname(fileURLToPath(import.meta.url)), "../../../");
10
+ const testsDir = join(root, "tests");
11
+ const argv = parseArgs({
12
+ args: process.argv.slice(2),
13
+ options: {
14
+ flavor: { type: "string", short: "f", default: "all" },
15
+ env: { type: "string", short: "e" },
16
+ name: { type: "string", short: "n" },
17
+ jobs: { type: "string", short: "j" },
18
+ quiet: { type: "boolean", short: "q", default: false },
19
+ help: { type: "boolean", short: "h", default: false },
20
+ },
21
+ });
22
+ if (argv.values.help) {
23
+ console.log(`
24
+ ${pc.bold("Usage:")} run-tests.ts [options]
25
+
26
+ ${pc.bold("Options:")}
27
+ -f, --flavor <azure|unbranded> SDK flavor to test
28
+ If not specified, tests both flavors
29
+ -e, --env <env1,env2,...> Specific tox environments to run
30
+ Available: test, lint, mypy, pyright, docs, ci
31
+ -n, --name <pattern> Filter tests by name pattern
32
+ -j, --jobs <n> Number of parallel jobs (default: CPU cores - 2)
33
+ -q, --quiet Suppress test output (only show pass/fail summary)
34
+ -h, --help Show this help message
35
+
36
+ ${pc.bold("Environments:")}
37
+ test Run pytest tests for generated packages
38
+ lint Run pylint on generated packages
39
+ mypy Run mypy type checking on generated packages
40
+ pyright Run pyright type checking on generated packages
41
+ docs Run documentation validation (apiview, sphinx)
42
+ ci Run all checks (test + lint + mypy + pyright)
43
+
44
+ ${pc.bold("Examples:")}
45
+ run-tests.ts # Run test for all flavors
46
+ run-tests.ts --flavor=azure # Run test for azure only
47
+ run-tests.ts -f azure -e lint # Run lint for azure only
48
+ run-tests.ts -e mypy,pyright # Run mypy and pyright for all flavors
49
+ run-tests.ts -e docs -f azure # Run docs validation for azure
50
+ `);
51
+ process.exit(0);
52
+ }
53
+ // Get Python venv path
54
+ function getVenvPython() {
55
+ const venvPath = join(root, "venv");
56
+ if (fs.existsSync(join(venvPath, "bin"))) {
57
+ return join(venvPath, "bin", "python");
58
+ }
59
+ else if (fs.existsSync(join(venvPath, "Scripts"))) {
60
+ return join(venvPath, "Scripts", "python.exe");
61
+ }
62
+ throw new Error("Virtual environment not found. Run 'npm run install' first.");
63
+ }
64
+ async function runToxEnv(env, pythonPath, name) {
65
+ const startTime = Date.now();
66
+ console.log(`${pc.blue("[START]")} ${env}`);
67
+ const toxIniPath = join(testsDir, "tox.ini");
68
+ const args = ["-m", "tox", "-c", toxIniPath, "-e", env];
69
+ if (name) {
70
+ args.push("--", "-k", name);
71
+ }
72
+ // Set FLAVOR environment variable
73
+ const flavor = env.split("-")[1] || "azure";
74
+ const envVars = {
75
+ ...process.env,
76
+ FLAVOR: flavor,
77
+ };
78
+ return new Promise((resolve) => {
79
+ const proc = spawn(pythonPath, args, {
80
+ cwd: testsDir,
81
+ stdio: !argv.values.quiet ? "inherit" : "pipe",
82
+ env: envVars,
83
+ });
84
+ let stderr = "";
85
+ if (argv.values.quiet && proc.stderr) {
86
+ proc.stderr.on("data", (data) => {
87
+ stderr += data.toString();
88
+ });
89
+ }
90
+ proc.on("close", (code) => {
91
+ const duration = (Date.now() - startTime) / 1000;
92
+ const success = code === 0;
93
+ if (success) {
94
+ console.log(`${pc.green("[PASS]")} ${env} (${duration.toFixed(1)}s)`);
95
+ }
96
+ else {
97
+ console.log(`${pc.red("[FAIL]")} ${env} (${duration.toFixed(1)}s)`);
98
+ }
99
+ resolve({
100
+ env,
101
+ success,
102
+ duration,
103
+ error: success ? undefined : stderr || `Exit code: ${code}`,
104
+ });
105
+ });
106
+ proc.on("error", (err) => {
107
+ const duration = (Date.now() - startTime) / 1000;
108
+ console.log(`${pc.red("[ERROR]")} ${env}: ${err.message}`);
109
+ resolve({
110
+ env,
111
+ success: false,
112
+ duration,
113
+ error: err.message,
114
+ });
115
+ });
116
+ });
117
+ }
118
+ async function runParallel(envs, pythonPath, maxJobs, name) {
119
+ const results = [];
120
+ const running = new Map();
121
+ for (const env of envs) {
122
+ // Wait if we're at max capacity
123
+ if (running.size >= maxJobs) {
124
+ const completed = await Promise.race(running.values());
125
+ results.push(completed);
126
+ running.delete(completed.env);
127
+ }
128
+ // Start new task
129
+ const task = runToxEnv(env, pythonPath, name);
130
+ running.set(env, task);
131
+ }
132
+ // Wait for remaining tasks
133
+ const remaining = await Promise.all(running.values());
134
+ results.push(...remaining);
135
+ return results;
136
+ }
137
+ function printSummary(results) {
138
+ console.log("\n" + pc.bold("═".repeat(60)));
139
+ console.log(pc.bold(" Test Results Summary"));
140
+ console.log(pc.bold("═".repeat(60)) + "\n");
141
+ const passed = results.filter((r) => r.success);
142
+ const failed = results.filter((r) => !r.success);
143
+ const totalDuration = results.reduce((sum, r) => sum + r.duration, 0);
144
+ for (const result of results) {
145
+ const status = result.success ? pc.green("PASS") : pc.red("FAIL");
146
+ console.log(` ${status} ${result.env} (${result.duration.toFixed(1)}s)`);
147
+ }
148
+ console.log("\n" + "─".repeat(60));
149
+ console.log(` ${pc.green(`Passed: ${passed.length}`)} ` +
150
+ `${pc.red(`Failed: ${failed.length}`)} ` +
151
+ `Total: ${results.length} ` +
152
+ `Duration: ${totalDuration.toFixed(1)}s`);
153
+ console.log("─".repeat(60) + "\n");
154
+ if (failed.length > 0) {
155
+ console.log(pc.red("Failed environments:"));
156
+ for (const result of failed) {
157
+ console.log(` - ${result.env}`);
158
+ }
159
+ console.log();
160
+ }
161
+ }
162
+ async function main() {
163
+ const startTime = Date.now();
164
+ // Header
165
+ console.log(pc.cyan("\n╔══════════════════════════════════════════════════════════╗"));
166
+ console.log(pc.cyan("║") + pc.bold(" TypeSpec Python SDK Tests ") + pc.cyan("║"));
167
+ console.log(pc.cyan("╚══════════════════════════════════════════════════════════╝") + "\n");
168
+ // Get Python path
169
+ let pythonPath;
170
+ try {
171
+ pythonPath = getVenvPython();
172
+ }
173
+ catch (error) {
174
+ console.error(pc.red(error.message));
175
+ process.exit(1);
176
+ }
177
+ // Determine flavors
178
+ const flavors = argv.values.flavor === "all" ? ["azure", "unbranded"] : [argv.values.flavor];
179
+ // Determine environments
180
+ let baseEnvs;
181
+ if (argv.values.env) {
182
+ baseEnvs = argv.values.env.split(",").map((e) => e.trim());
183
+ }
184
+ else {
185
+ // Default: run test environments
186
+ baseEnvs = ["test"];
187
+ }
188
+ // Build full environment list (env-flavor format)
189
+ const envs = [];
190
+ for (const env of baseEnvs) {
191
+ for (const flavor of flavors) {
192
+ envs.push(`${env}-${flavor}`);
193
+ }
194
+ }
195
+ // Determine parallelism
196
+ // Test environments must run sequentially because they each start a mock server on port 3000
197
+ const hasTestEnvs = envs.some((e) => e.startsWith("test-"));
198
+ const maxJobs = argv.values.jobs
199
+ ? parseInt(argv.values.jobs, 10)
200
+ : hasTestEnvs
201
+ ? 1
202
+ : Math.max(2, cpus().length - 2);
203
+ console.log(` Flavors: ${flavors.join(", ")}`);
204
+ console.log(` Environments: ${envs.join(", ")}`);
205
+ console.log(` Jobs: ${maxJobs}${hasTestEnvs && !argv.values.jobs ? " (sequential for test envs)" : ""}`);
206
+ if (argv.values.name) {
207
+ console.log(` Filter: ${argv.values.name}`);
208
+ }
209
+ console.log();
210
+ // Run tests
211
+ const results = await runParallel(envs, pythonPath, maxJobs, argv.values.name);
212
+ // Print summary
213
+ printSummary(results);
214
+ const totalDuration = (Date.now() - startTime) / 1000;
215
+ console.log(`Total execution time: ${totalDuration.toFixed(1)}s\n`);
216
+ // Exit with appropriate code
217
+ const failed = results.filter((r) => !r.success);
218
+ if (failed.length > 0) {
219
+ process.exit(1);
220
+ }
221
+ }
222
+ main().catch((error) => {
223
+ console.error(`${pc.red("Unexpected error:")}`, error);
224
+ process.exit(1);
225
+ });
226
+ //# sourceMappingURL=run-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../../../eng/scripts/ci/run-tests.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface RegenerateFlagsInput {
11
11
  debug?: boolean;
12
12
  name?: string;
13
13
  pyodide?: boolean;
14
+ jobs?: number;
14
15
  }
15
16
  export interface RegenerateFlags {
16
17
  flavor: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerate-common.d.ts","sourceRoot":"","sources":["../../../eng/scripts/regenerate-common.ts"],"names":[],"mappings":"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"}
@@ -328,7 +328,8 @@ export function buildOptions(spec, generatedFolder, flags, config) {
328
328
  }
329
329
  if (options["emitter-output-dir"] === undefined) {
330
330
  const packageName = options["package-name"] || defaultPackageName(spec, config);
331
- options["emitter-output-dir"] = toPosix(`${generatedFolder}/test/${flags.flavor}/generated/${packageName}`);
331
+ // Output to new tests/generated/<flavor>/<package> structure
332
+ options["emitter-output-dir"] = toPosix(`${generatedFolder}/../tests/generated/${flags.flavor}/${packageName}`);
332
333
  }
333
334
  if (flags.debug) {
334
335
  options["debug"] = "true";
@@ -342,20 +343,18 @@ export function buildOptions(spec, generatedFolder, flags, config) {
342
343
  return results;
343
344
  }
344
345
  export async function runTaskPool(tasks, poolLimit) {
345
- async function worker(start, end) {
346
- while (start < end) {
347
- await tasks[start]();
348
- start++;
346
+ const executing = new Set();
347
+ for (const task of tasks) {
348
+ // Start the task and remove from set when done
349
+ const p = task().finally(() => executing.delete(p));
350
+ executing.add(p);
351
+ // If at capacity, wait for one to complete
352
+ if (executing.size >= poolLimit) {
353
+ await Promise.race(executing);
349
354
  }
350
355
  }
351
- const workers = [];
352
- let start = 0;
353
- while (start < tasks.length) {
354
- const end = Math.min(start + poolLimit, tasks.length);
355
- workers.push((async () => await worker(start, end))());
356
- start = end;
357
- }
358
- await Promise.all(workers);
356
+ // Wait for remaining tasks
357
+ await Promise.all(executing);
359
358
  }
360
359
  export async function regenerate(flags, config) {
361
360
  if (flags.flavor === undefined) {
@@ -376,7 +375,9 @@ export async function regenerate(flags, config) {
376
375
  return () => config.executeCommand(tspCommand);
377
376
  });
378
377
  // Run tasks with a concurrency limit
379
- await runTaskPool(tasks, 30);
378
+ // Default: 30 jobs, or use provided value
379
+ const poolLimit = flags.jobs ?? 30;
380
+ await runTaskPool(tasks, poolLimit);
380
381
  }
381
382
  }
382
383
  //# sourceMappingURL=regenerate-common.js.map