Files
git.stella-ops.org/scripts/api-compat-diff.test.mjs
StellaOps Bot ea970ead2a
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
sdk-generator-smoke / sdk-smoke (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
api-governance / spectral-lint (push) Has been cancelled
oas-ci / oas-validate (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
up
2025-11-27 07:46:56 +02:00

35 lines
1.4 KiB
JavaScript

import assert from 'assert';
import { fileURLToPath } from 'url';
import path from 'path';
import { execFileSync } from 'child_process';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const fixturesDir = path.join(__dirname, '__fixtures__', 'api-compat');
const oldSpec = path.join(fixturesDir, 'old.yaml');
const newSpec = path.join(fixturesDir, 'new.yaml');
const output = execFileSync('node', ['scripts/api-compat-diff.mjs', oldSpec, newSpec, '--output', 'json'], {
cwd: path.join(__dirname, '..'),
encoding: 'utf8',
});
const diff = JSON.parse(output);
assert.deepStrictEqual(diff.additive.operations, ['get /bar']);
assert.deepStrictEqual(diff.breaking.operations, []);
assert.deepStrictEqual(diff.additive.responses, ['get /foo -> 201']);
assert.deepStrictEqual(diff.breaking.responses, ['get /foo -> 200']);
assert.deepStrictEqual(diff.additive.parameters, []);
assert.deepStrictEqual(diff.breaking.parameters, [
'get /foo -> + parameter tenant in query (required)',
'get /foo -> - parameter filter in query',
]);
assert.deepStrictEqual(diff.additive.requestBodies, []);
assert.deepStrictEqual(diff.breaking.requestBodies, ['post /baz -> requestBody made required']);
assert.deepStrictEqual(diff.additive.responseContentTypes, []);
assert.deepStrictEqual(diff.breaking.responseContentTypes, []);
console.log('api-compat-diff test passed');