@@ -766,15 +766,22 @@ function runTestsAndWriteOutput(file, defaultSubsets) {
766766
767767 var subsetRegexes ;
768768 var subsets ;
769- if ( defaultSubsets . length === 0 ) {
769+ if ( tests || defaultSubsets . length === 0 ) {
770770 subsetRegexes = [ tests ] ;
771771 subsets = [ tests ] ;
772772 }
773773 else {
774- subsets = tests ? tests . split ( "|" ) : defaultSubsets ;
775- subsetRegexes = subsets . map ( function ( sub ) { return "^" + sub + ".*$" ; } ) ;
776- subsetRegexes . push ( "^(?!" + subsets . join ( "|" ) + ").*$" ) ;
774+ subsets = [ ] ;
775+ subsetRegexes = [ ] ;
776+ negations = [ ] ;
777+ for ( const subset of defaultSubsets ) {
778+ subsets . push ( subset . name ) ;
779+ subsetRegexes . push ( subset . pattern ) ;
780+ negations . push ( subset . pattern ) ;
781+ }
782+
777783 subsets . push ( "other" ) ;
784+ subsetRegexes . push ( "^(?!" + negations . join ( "|" ) + ")" ) ;
778785 }
779786
780787 var out = fs . createWriteStream ( file ) ;
@@ -1080,11 +1087,23 @@ task("runtests", ["build-rules", "tests", builtLocalDirectory], function() {
10801087} , { async : true } ) ;
10811088
10821089task ( "runtests-file" , [ "build-rules" , "tests" , builtLocalDirectory ] , function ( ) {
1083- runTestsAndWriteOutput ( "tests/baselines/local/testresults.tap" , [ ] ) ;
1084- } , { async : true } ) ;
1085- task ( "runtests-file-parallel" , [ "build-rules" , "tests" , builtLocalDirectory ] , function ( ) {
1086- runTestsAndWriteOutput ( "tests/baselines/local/testresults.tap" , [ "conformance" , "compiler" , "Projects" , "fourslash" ] ) ;
1090+ var subsets = [ ] ;
1091+ var cores = os . cpus ( ) . length ;
1092+ if ( cores > 1 ) {
1093+ subsets . push ( { name : "conformance" , pattern : "^conformance\\b" } ) ;
1094+ subsets . push ( { name : "compiler" , pattern : "^compiler\\b" } ) ;
1095+ subsets . push ( { name : "projects" , pattern : "^Projects\\b" } ) ;
1096+ if ( cores > 4 ) {
1097+ subsets . push ( { name : "fourslash" , pattern : "^fourslash\\b" } ) ;
1098+ subsets . push ( { name : "fourslash (shims, shims-pp, server)" , pattern : "^fourslash-" } ) ;
1099+ }
1100+ else {
1101+ subsets . push ( { name : "fourslash" , pattern : "^fourslash" } ) ;
1102+ }
1103+ }
1104+ runTestsAndWriteOutput ( "tests/baselines/local/testresults.tap" , subsets ) ;
10871105} , { async : true } ) ;
1106+
10881107task ( "runtests-dirty" , [ "build-rules" , "tests" , builtLocalDirectory ] , function ( ) {
10891108 runConsoleTests ( "mocha-fivemat-progress-reporter" , [ ] , /*dirty*/ true ) ;
10901109} , { async : true } ) ;
0 commit comments