Skip to content
Prev Previous commit
Next Next commit
add azure-sdk/emitter-package-json-pinning test
  • Loading branch information
cperaltah committed Jan 16, 2025
commit f2d966b7a60e288c709b3d514039780b53983e15
4 changes: 2 additions & 2 deletions tools/tsp-client/src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,10 +434,10 @@ export async function generateConfigFilesCommand(argv: any) {
delete overrideJson[packageJson["name"]];
const devDependencies: Record<string, any> = {};
const peerDependencies = packageJson["peerDependencies"] ?? {};
const possiblyPinnedPackages =
const possiblyPinnedPackages: Array<string> =
packageJson["azure-sdk/emitter-package-json-pinning"] ?? Object.keys(peerDependencies);

for (const pinnedPackage of possiblyPinnedPackages) {
for (const pinnedPackage in possiblyPinnedPackages) {
const pinnedVersion = packageJson["devDependencies"][pinnedPackage];
if (pinnedVersion && !overrideJson[pinnedPackage]) {
Logger.info(`Pinning ${pinnedPackage} to ${pinnedVersion}`);
Expand Down
20 changes: 20 additions & 0 deletions tools/tsp-client/test/commands.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
assert.isUndefined(emitterJson["overrides"]);
assert.isTrue(await doesFileExist(joinPaths(repoRoot, "eng", "emitter-package-lock.json")));
} catch (error: any) {
assert.fail("Failed to generate tsp-client config files. Error: " + error);

Check failure on line 260 in tools/tsp-client/test/commands.spec.ts

View workflow job for this annotation

GitHub Actions / tsp-client (ubuntu-latest, 18)

test/commands.spec.ts > Verify commands > Generate config files

AssertionError: Failed to generate tsp-client config files. Error: TypeError: Cannot read properties of undefined (reading '@typespec/compiler') ❯ test/commands.spec.ts:260:14
}
});

Expand All @@ -281,4 +281,24 @@
assert.fail("Failed to generate tsp-client config files. Error: " + error);
}
});

it("Generate config files using azure-sdk/emitter-package-json-pinning", async () => {
try {
const args = {
"package-json": joinPaths(cwd(), "test", "examples", "package-sdk-pinning.json"),
};
repoRoot = await getRepoRoot(cwd());
await generateConfigFilesCommand(args);
assert.isTrue(await doesFileExist(joinPaths(repoRoot, "eng", "emitter-package.json")));
const emitterJson = JSON.parse(
await readFile(joinPaths(repoRoot, "eng", "emitter-package.json"), "utf8"),
);
assert.equal(emitterJson["dependencies"]["@azure-tools/typespec-python"], "0.37.3");
assert.equal(Object.keys(emitterJson["devDependencies"]).length, 1);
assert.equal(emitterJson["devDependencies"]["@typespec/compiler"], "~0.64.0");
assert.isTrue(await doesFileExist(joinPaths(repoRoot, "eng", "emitter-package-lock.json")));
} catch (error: any) {
assert.fail("Failed to generate tsp-client config files. Error: " + error);

Check failure on line 301 in tools/tsp-client/test/commands.spec.ts

View workflow job for this annotation

GitHub Actions / tsp-client (ubuntu-latest, 18)

test/commands.spec.ts > Verify commands > Generate config files using azure-sdk/emitter-package-json-pinning

AssertionError: Failed to generate tsp-client config files. Error: Error: npm install failed exited with code 1 ❯ test/commands.spec.ts:301:14
}
});
});
Loading