@@ -248,13 +248,40 @@ function registerTestingDependenciesTasks(grunt) {
248248 const generatedVersionFilePath = path . join ( configsBasePath , "test-deps-versions-generated.json" ) ;
249249
250250 grunt . registerTask ( "generate_unit_testing_dependencies" , async function ( ) {
251+ const done = this . async ( ) ;
252+
251253 const dependenciesVersions = { } ;
252- const testDependencies = grunt . file . readJSON ( path . join ( configsBasePath , "test-dependencies.json" ) ) ;
253- for ( var dependency of testDependencies ) {
254- const dependencyVersion = dependency . version || await latestVersion ( dependency . name ) ;
255- dependenciesVersions [ dependency . name ] = dependencyVersion ;
254+ let testDependencies ;
255+
256+ try {
257+ testDependencies = grunt . file . readJSON ( path . join ( configsBasePath , "test-dependencies.json" ) ) ;
258+ } catch ( err ) {
259+ grunt . log . error ( "Could not read test-dependencies.json:" , err ) ;
260+ return done ( false ) ;
256261 }
257- grunt . file . write ( generatedVersionFilePath , JSON . stringify ( dependenciesVersions ) ) ;
262+
263+
264+ // Kick off all version resolutions in parallel
265+ const versionPromises = testDependencies . map ( dep => {
266+ if ( dep . version ) {
267+ dependenciesVersions [ dep . name ] = dep . version ;
268+ return Promise . resolve ( ) ;
269+ }
270+ return latestVersion ( dep . name ) . then ( v => {
271+ dependenciesVersions [ dep . name ] = v ;
272+ } ) ;
273+ } ) ;
274+
275+ Promise . all ( versionPromises )
276+ . then ( ( ) => {
277+ grunt . file . write ( generatedVersionFilePath , JSON . stringify ( dependenciesVersions , null , 2 ) ) ;
278+ grunt . log . writeln ( "Wrote" , generatedVersionFilePath ) ;
279+ done ( ) ;
280+ } )
281+ . catch ( err => {
282+ grunt . log . error ( err ) ;
283+ done ( false ) ;
284+ } ) ;
258285 } ) ;
259286
260287 grunt . registerTask ( "verify_unit_testing_dependencies" , function ( ) {
0 commit comments