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
35 lines
1.4 KiB
JavaScript
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');
|