@azure-tools/typespec-python 0.61.2 → 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.
- package/README.md +4 -4
- package/dist/{scripts/eng → eng/scripts/ci}/format.d.ts.map +1 -1
- package/dist/eng/scripts/ci/format.js +140 -0
- package/dist/eng/scripts/ci/format.js.map +1 -0
- package/dist/eng/scripts/ci/lint.d.ts +2 -0
- package/dist/eng/scripts/ci/lint.d.ts.map +1 -0
- package/dist/eng/scripts/ci/lint.js +96 -0
- package/dist/eng/scripts/ci/lint.js.map +1 -0
- package/dist/eng/scripts/ci/run-tests.d.ts.map +1 -0
- package/dist/eng/scripts/ci/run-tests.js +226 -0
- package/dist/eng/scripts/ci/run-tests.js.map +1 -0
- package/dist/{scripts/eng → eng/scripts}/regenerate-common.d.ts +1 -0
- package/dist/eng/scripts/regenerate-common.d.ts.map +1 -0
- package/dist/{scripts/eng → eng/scripts}/regenerate-common.js +15 -14
- package/dist/{scripts/eng → eng/scripts}/regenerate-common.js.map +1 -1
- package/dist/eng/scripts/regenerate.d.ts +8 -0
- package/dist/eng/scripts/regenerate.d.ts.map +1 -0
- package/dist/eng/scripts/regenerate.js +288 -0
- package/dist/eng/scripts/regenerate.js.map +1 -0
- package/dist/eng/scripts/setup/run-python3.d.ts.map +1 -0
- package/dist/eng/scripts/setup/run-python3.js.map +1 -0
- package/dist/eng/scripts/setup/system-requirements.d.ts.map +1 -0
- package/dist/{scripts → eng/scripts/setup}/system-requirements.js +6 -2
- package/dist/eng/scripts/setup/system-requirements.js.map +1 -0
- package/{scripts → eng/scripts/setup}/__pycache__/package_manager.cpython-310.pyc +0 -0
- package/{scripts → eng/scripts/setup}/__pycache__/venvtools.cpython-310.pyc +0 -0
- package/{scripts → eng/scripts/setup}/prepare.py +1 -1
- package/{scripts → eng/scripts/setup}/run_tsp.py +7 -7
- package/{scripts → eng/scripts/setup}/system-requirements.ts +6 -2
- package/package.json +52 -49
- package/dist/scripts/eng/format.js +0 -4
- package/dist/scripts/eng/format.js.map +0 -1
- package/dist/scripts/eng/lint.d.ts +0 -5
- package/dist/scripts/eng/lint.d.ts.map +0 -1
- package/dist/scripts/eng/lint.js +0 -95
- package/dist/scripts/eng/lint.js.map +0 -1
- package/dist/scripts/eng/regenerate-common.d.ts.map +0 -1
- package/dist/scripts/eng/regenerate.d.ts +0 -2
- package/dist/scripts/eng/regenerate.d.ts.map +0 -1
- package/dist/scripts/eng/regenerate.js +0 -123
- package/dist/scripts/eng/regenerate.js.map +0 -1
- package/dist/scripts/eng/run-tests.d.ts.map +0 -1
- package/dist/scripts/eng/run-tests.js +0 -91
- package/dist/scripts/eng/run-tests.js.map +0 -1
- package/dist/scripts/eng/utils.d.ts +0 -3
- package/dist/scripts/eng/utils.d.ts.map +0 -1
- package/dist/scripts/eng/utils.js +0 -39
- package/dist/scripts/eng/utils.js.map +0 -1
- package/dist/scripts/run-python3.d.ts.map +0 -1
- package/dist/scripts/run-python3.js.map +0 -1
- package/dist/scripts/system-requirements.d.ts.map +0 -1
- package/dist/scripts/system-requirements.js.map +0 -1
- package/scripts/eng/format.ts +0 -5
- package/scripts/eng/lint.ts +0 -102
- package/scripts/eng/mypy.ini +0 -40
- package/scripts/eng/pylintrc +0 -59
- package/scripts/eng/pyrightconfig.json +0 -7
- package/scripts/eng/regenerate-common.ts +0 -449
- package/scripts/eng/regenerate.ts +0 -159
- package/scripts/eng/run-tests.ts +0 -101
- package/scripts/eng/utils.ts +0 -38
- /package/dist/{scripts/eng → eng/scripts/ci}/format.d.ts +0 -0
- /package/dist/{scripts/eng → eng/scripts/ci}/run-tests.d.ts +0 -0
- /package/dist/{scripts → eng/scripts/setup}/run-python3.d.ts +0 -0
- /package/dist/{scripts → eng/scripts/setup}/run-python3.js +0 -0
- /package/dist/{scripts → eng/scripts/setup}/system-requirements.d.ts +0 -0
- /package/{scripts → eng/scripts/setup}/install.py +0 -0
- /package/{scripts → eng/scripts/setup}/package_manager.py +0 -0
- /package/{scripts → eng/scripts/setup}/run-python3.ts +0 -0
- /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
|
-
|
|
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
|
-
|
|
30
|
+
- "@azure-tools/typespec-python"
|
|
31
31
|
options:
|
|
32
|
-
|
|
33
|
-
|
|
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":["
|
|
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 @@
|
|
|
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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"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
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
|
-
|
|
352
|
-
|
|
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
|
-
|
|
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
|