@@ -6,16 +6,27 @@ const { hasOpenSSL } = require('../../common/crypto.js');
66
77const s390x = os . arch ( ) === 's390x' ;
88
9- const conditionalSkips = { } ;
9+ const conditionalFileSkips = { } ;
10+ const conditionalSubtestSkips = { } ;
1011
1112function skip ( ...files ) {
1213 for ( const file of files ) {
13- conditionalSkips [ file ] = {
14- 'skip' : ` Unsupported in OpenSSL ${ process . versions . openssl } `,
14+ conditionalFileSkips [ file ] = {
15+ 'skip' : ' Unsupported in ' + ( process . features . openssl_is_boringssl ? 'BoringSSL' : ` OpenSSL ${ process . versions . openssl } `) ,
1516 } ;
1617 }
1718}
1819
20+ function skipSubtests ( ...entries ) {
21+ for ( const [ file , regexp ] of entries ) {
22+ conditionalSubtestSkips [ file ] ||= {
23+ 'skipTests' : [ ] ,
24+ } ;
25+
26+ conditionalSubtestSkips [ file ] . skipTests . push ( regexp ) ;
27+ }
28+ }
29+
1930if ( ! hasOpenSSL ( 3 , 0 ) ) {
2031 skip (
2132 'encrypt_decrypt/aes_ocb.tentative.https.any.js' ,
@@ -45,10 +56,25 @@ if (!hasOpenSSL(3, 5)) {
4556 'import_export/ML-DSA_importKey.tentative.https.any.js' ,
4657 'import_export/ML-KEM_importKey.tentative.https.any.js' ,
4758 'sign_verify/mldsa.tentative.https.any.js' ) ;
59+
60+ skipSubtests (
61+ [ 'supports-modern.tentative.https.any.js' , / m l - (?: k e m | d s a ) / i] ) ;
4862}
4963
64+ function assertNoOverlap ( fileSkips , subtestSkips ) {
65+ const subtestSkipFiles = new Set ( Object . keys ( subtestSkips ) ) ;
66+ const overlap = Object . keys ( fileSkips ) . filter ( ( file ) => subtestSkipFiles . has ( file ) ) ;
67+
68+ if ( overlap . length !== 0 ) {
69+ throw new Error ( `conditionalFileSkips and conditionalSubtestSkips overlap: ${ overlap . join ( ', ' ) } ` ) ;
70+ }
71+ }
72+
73+ assertNoOverlap ( conditionalFileSkips , conditionalSubtestSkips ) ;
74+
5075module . exports = {
51- ...conditionalSkips ,
76+ ...conditionalFileSkips ,
77+ ...conditionalSubtestSkips ,
5278 'algorithm-discards-context.https.window.js' : {
5379 'skip' : 'Not relevant in Node.js context' ,
5480 } ,
0 commit comments