@@ -248,13 +248,40 @@ function registerTestingDependenciesTasks(grunt) {
248
248
const generatedVersionFilePath = path . join ( configsBasePath , "test-deps-versions-generated.json" ) ;
249
249
250
250
grunt . registerTask ( "generate_unit_testing_dependencies" , async function ( ) {
251
+ const done = this . async ( ) ;
252
+
251
253
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 ) ;
256
261
}
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
+ } ) ;
258
285
} ) ;
259
286
260
287
grunt . registerTask ( "verify_unit_testing_dependencies" , function ( ) {
0 commit comments