Implement MCP 2026-07-28 (#2286)
Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com> Co-authored-by: Konstantin Konstantinov <KKonstantinov@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
e4227d135c
commit
1823aae891
1 changed files with 69131 additions and 9001 deletions
|
|
@ -14,6 +14,7 @@ import { fileURLToPath } from 'node:url';
|
|||
import { expect, test } from 'vitest';
|
||||
|
||||
import { REQUIREMENTS } from './requirements';
|
||||
import { ALL_SPEC_VERSIONS, ALL_TRANSPORTS, ENTRY_TRANSPORTS, TRANSPORT_SPEC_VERSIONS } from './types';
|
||||
|
||||
const E2E_DIR = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
|
|
@ -88,6 +89,34 @@ test('every transport-restricted requirement explains why in note', () => {
|
|||
expect(missing).toEqual([]);
|
||||
});
|
||||
|
||||
test('every entryExclusions annotation targets an entry arm the requirement would otherwise run on', () => {
|
||||
const bad: string[] = [];
|
||||
for (const [id, r] of Object.entries(REQUIREMENTS)) {
|
||||
for (const exclusion of r.entryExclusions ?? []) {
|
||||
const arms = exclusion.arm === undefined ? ENTRY_TRANSPORTS : [exclusion.arm];
|
||||
for (const arm of arms) {
|
||||
const transports = r.transports ?? ALL_TRANSPORTS;
|
||||
if (!transports.includes(arm)) {
|
||||
bad.push(`${id}: entryExclusions targets '${arm}', which the requirement's transports never include`);
|
||||
continue;
|
||||
}
|
||||
const versions = ALL_SPEC_VERSIONS.filter(
|
||||
v =>
|
||||
(r.addedInSpecVersion === undefined || v >= r.addedInSpecVersion) &&
|
||||
(r.removedInSpecVersion === undefined || v < r.removedInSpecVersion) &&
|
||||
(TRANSPORT_SPEC_VERSIONS[arm]?.includes(v) ?? true)
|
||||
);
|
||||
if (versions.length === 0) {
|
||||
bad.push(
|
||||
`${id}: entryExclusions targets '${arm}', which registers no cells within the requirement's spec-version bounds`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
expect(bad).toEqual([]);
|
||||
});
|
||||
|
||||
test('supersedes/supersededBy links are symmetric and resolve', () => {
|
||||
const bad: string[] = [];
|
||||
for (const [id, req] of Object.entries(REQUIREMENTS)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue