@@ -20,68 +20,6 @@ import { validateReleaseReports } from '../scripts/publish-cli-release.mjs';
2020import { compareVersions , releaseCli } from '../scripts/release-cli.mjs' ;
2121import { compareRuns , exitCodeForStatus , renderReport , spread , validateRun , validateRequest , validateToolOutput , median , selectScenarios } from '../scripts/perf/report.mjs' ;
2222import { copyMcodeToolsArtifact , downloadMcodeToolsArtifact , MCODE_TOOLS_ARTIFACT } from '../scripts/lib/mcode-tools-artifact.mjs' ;
23- import { checkWindowsSourceLocation , runWindowsSourceLocationCheck } from '../scripts/check-windows-source-location.mjs' ;
24-
25- test ( 'Windows source preflight accepts localized fsutil labels' , ( ) => {
26- const result = checkWindowsSourceLocation ( {
27- platform : 'win32' ,
28- cwd : 'C:\\repo' ,
29- execFile : ( _command , args ) => args [ 1 ] === 'drivetype'
30- ? 'Laufwerkstyp: DRIVE_FIXED\n'
31- : 'Dateisystemname: NTFS\n' ,
32- } ) ;
33- assert . deepEqual ( result , { ok : true , skipped : false } ) ;
34- } ) ;
35-
36- test ( 'Windows source preflight requires a local NTFS checkout' , ( ) => {
37- const calls = [ ] ;
38- const execFile = ( command , args ) => {
39- calls . push ( [ command , args ] ) ;
40- if ( args [ 1 ] === 'drivetype' ) return 'Drive type is : DRIVE_FIXED\n' ;
41- return 'File System Name : NTFS\n' ;
42- } ;
43- assert . deepEqual (
44- checkWindowsSourceLocation ( { platform : 'win32' , cwd : 'C:\\repo' , execFile } ) ,
45- { ok : true , skipped : false } ,
46- ) ;
47- assert . deepEqual ( calls . map ( ( [ command , args ] ) => [ command , args [ 1 ] , args [ 2 ] ] ) , [
48- [ 'fsutil' , 'drivetype' , 'C:' ] ,
49- [ 'fsutil' , 'volumeinfo' , 'C:' ] ,
50- ] ) ;
51- } ) ;
52-
53- test ( 'Windows source preflight rejects unsupported volumes clearly' , ( ) => {
54- const run = ( driveType , volumeInfo , cwd = 'C:\\repo' , allowNonFixed = false ) => checkWindowsSourceLocation ( {
55- platform : 'win32' , cwd, allowNonFixed,
56- execFile : ( _command , args ) => args [ 1 ] === 'drivetype' ? driveType : volumeInfo ,
57- } ) ;
58- assert . match ( run ( 'Drive type is : DRIVE_REMOTE\n' , 'File System Name : NTFS\n' ) . reason , / n o t a l o c a l f i x e d d r i v e / ) ;
59- assert . deepEqual (
60- run ( 'Drive type is : DRIVE_REMOTE\n' , 'File System Name : NTFS\n' , 'C:\\repo' , true ) ,
61- { ok : true , skipped : false } ,
62- ) ;
63- assert . match ( run ( 'Drive type is : DRIVE_FIXED\n' , 'File System Name : NTFS\n' , '\\\\server\\share\\repo' ) . reason , / n o t a l o c a l d r i v e - l e t t e r p a t h / ) ;
64- } ) ;
65-
66- test ( 'Windows source preflight is a no-op on non-Windows platforms' , ( ) => {
67- assert . deepEqual (
68- checkWindowsSourceLocation ( { platform : 'linux' , execFile : ( ) => assert . fail ( 'must not run fsutil' ) } ) ,
69- { ok : true , skipped : true } ,
70- ) ;
71- } ) ;
72-
73- test ( 'Windows source preflight propagates a failed check to the CLI' , ( ) => {
74- const messages = [ ] ;
75- const result = runWindowsSourceLocationCheck ( {
76- platform : 'win32' ,
77- cwd : 'C:\\repo' ,
78- execFile : ( ) => { throw new Error ( 'fsutil unavailable' ) ; } ,
79- report : ( message ) => messages . push ( message ) ,
80- } ) ;
81- assert . equal ( result . ok , false ) ;
82- assert . equal ( messages . length , 1 ) ;
83- assert . match ( messages [ 0 ] , / f s u t i l u n a v a i l a b l e / ) ;
84- } ) ;
8523
8624test ( 'artifact download recovers from TLS reset and interrupted response bodies' , async ( ) => {
8725 const reset = new TypeError ( 'fetch failed' , { cause : Object . assign ( new Error ( 'connection reset' ) , { code : 'ECONNRESET' } ) } ) ;
@@ -743,18 +681,15 @@ test('CI aggregate rejects failed, cancelled, missing and unexpectedly skipped c
743681 assert . notEqual ( run ( { ...full , DOCS_ONLY : scope } ) , 0 ) ;
744682} ) ;
745683
746- test ( 'ordinary CI runs a focused Windows contract while compatibility remains macOS/Linux ' , ( ) => {
684+ test ( 'ordinary CI pauses Windows without invoking release-only matrices ' , ( ) => {
747685 const readWorkflow = name => parseYaml ( readFileSync ( new URL ( `../.github/workflows/${ name } .yml` , import . meta. url ) , 'utf8' ) ) ;
748686 const ci = readWorkflow ( 'ci' ) ;
749687 assert . ok ( Object . hasOwn ( ci . on , 'pull_request' ) ) ;
750688 assert . deepEqual ( ci . on . push . branches , [ 'main' ] ) ;
751689 assert . deepEqual ( Object . keys ( ci . jobs ) . sort ( ) , [ 'changes' , 'docs' , 'verification' , 'verify' ] ) ;
752- assert . deepEqual ( ci . jobs . verify . strategy . matrix . os , [ 'ubuntu-latest' , 'macos-latest' , 'windows-latest' ] ) ;
690+ assert . deepEqual ( ci . jobs . verify . strategy . matrix . os , [ 'ubuntu-latest' , 'macos-latest' ] ) ;
753691 assert . deepEqual ( ci . jobs . verify . strategy . matrix . node , [ '24' ] ) ;
754- assert . deepEqual ( ci . jobs . verify . strategy . matrix . include , [
755- { os : 'ubuntu-latest' , node : '24' , profile : 'full' } ,
756- { os : 'windows-latest' , node : '24' , profile : 'windows' } ,
757- ] ) ;
692+ assert . deepEqual ( ci . jobs . verify . strategy . matrix . include , [ { os : 'ubuntu-latest' , node : '24' , profile : 'full' } ] ) ;
758693 assert . equal ( ci . jobs . verify . needs , 'changes' ) ;
759694 assert . equal ( ci . jobs . verify . if , "needs.changes.outputs.docs_only == 'false'" ) ;
760695 assert . equal ( ci . jobs . docs . if , "needs.changes.outputs.docs_only == 'true'" ) ;
@@ -764,11 +699,12 @@ test('ordinary CI runs a focused Windows contract while compatibility remains ma
764699 const compatibility = readWorkflow ( 'compatibility' ) ;
765700 assert . deepEqual ( Object . keys ( compatibility . on ) . sort ( ) , [ 'schedule' , 'workflow_dispatch' ] ) ;
766701 assert . deepEqual ( compatibility . jobs . compatibility . strategy . matrix . node , [ '22.19.0' , '24.2.0' , '25' , '26' ] ) ;
767- assert . deepEqual ( compatibility . jobs . compatibility . strategy . matrix . os , [ 'ubuntu-latest' , 'macos-latest' ] ) ;
702+ assert . deepEqual ( compatibility . jobs . compatibility . strategy . matrix . os , ci . jobs . verify . strategy . matrix . os ) ;
768703 const audit = readWorkflow ( 'security' ) ;
769704 assert . ok ( Object . hasOwn ( audit . on , 'pull_request' ) ) ;
770705 assert . ok ( audit . jobs [ 'source-history-artifact' ] . steps . some ( step => step . run ?. includes ( 'gitleaks dir dist' ) ) ) ;
771706} ) ;
707+
772708test ( 'manual source candidates pin every checkout and receipt to the selected revision' , ( ) => {
773709 const workflow = parseYaml ( readFileSync ( new URL ( '../.github/workflows/source-candidate.yml' , import . meta. url ) , 'utf8' ) ) ;
774710 assert . deepEqual ( Object . keys ( workflow . on ) . sort ( ) , [ 'workflow_call' , 'workflow_dispatch' ] ) ;
@@ -896,47 +832,6 @@ test('candidate rejects mismatched receipts and requires successful same-revisio
896832} ) ;
897833
898834
899- test ( 'Windows contract profile fails closed off Windows' , ( ) => {
900- const result = spawnSync ( process . execPath , [ 'scripts/verify.mjs' , '--profile' , 'windows' , '--list' ] , {
901- cwd : path . resolve ( '.' ) ,
902- encoding : 'utf8' ,
903- } ) ;
904- if ( process . platform === 'win32' ) {
905- assert . equal ( result . status , 0 , result . stderr ) ;
906- } else {
907- assert . notEqual ( result . status , 0 ) ;
908- assert . match ( result . stderr , / r e q u i r e s a W i n d o w s h o s t / ) ;
909- }
910- } ) ;
911-
912- test ( 'Windows contract profile selects focused gates' , ( ) => {
913- const root = mkdtempSync ( path . join ( tmpdir ( ) , 'windows-profile-' ) ) ;
914- try {
915- const fixture = path . join ( root , 'verify.mjs' ) ;
916- copyFileSync ( new URL ( '../scripts/verify.mjs' , import . meta. url ) , fixture ) ;
917- const preload = path . join ( root , 'platform.cjs' ) ;
918- writeFileSync ( preload , "Object.defineProperty(process, 'platform', { value: 'win32' });\n" ) ;
919- const result = spawnSync ( process . execPath , [ '--require' , preload , fixture , '--profile' , 'windows' , '--list' ] , {
920- cwd : root ,
921- encoding : 'utf8' ,
922- env : { ...process . env } ,
923- } ) ;
924- assert . equal ( result . status , 0 , result . stderr ) ;
925- assert . deepEqual ( result . stdout . trim ( ) . split ( '\n' ) , [
926- 'check:source' ,
927- 'check:tsconfig' ,
928- 'export source preview' ,
929- 'test:release-tools' ,
930- 'build' ,
931- 'check:standalone' ,
932- 'test:artifact' ,
933- 'test:windows' ,
934- ] ) ;
935- } finally {
936- rmSync ( root , { recursive : true , force : true } ) ;
937- }
938- } ) ;
939-
940835test ( 'source inventory rejects unregistered, missing and duplicate first-party test gates' , ( ) => {
941836 const existing = 'packages/example/src/existing.test.ts' ;
942837 const omitted = 'packages/example/test/omitted.spec.tsx' ;
0 commit comments