1
1
const childProcess = require ( "child_process" ) ;
2
2
const EOL = require ( "os" ) . EOL ;
3
+ const path = require ( "path" ) ;
3
4
const now = new Date ( ) . toISOString ( ) ;
5
+ const latestVersion = require ( 'latest-version' ) ;
4
6
5
7
const ENVIRONMENTS = {
6
8
live : "live" ,
@@ -205,9 +207,14 @@ module.exports = function (grunt) {
205
207
} ) ;
206
208
207
209
grunt . registerTask ( "test" , [ "ts:devall" , "shell:npm_test" ] ) ;
210
+
211
+ registerTestingDependenciesTasks ( grunt ) ;
212
+
208
213
grunt . registerTask ( "prepare" , [
209
214
"clean" ,
210
215
"ts:release_build" ,
216
+ "generate_unit_testing_dependencies" ,
217
+ "verify_unit_testing_dependencies" ,
211
218
"shell:npm_test" ,
212
219
213
220
"set_live_ga_id" ,
@@ -230,6 +237,30 @@ module.exports = function (grunt) {
230
237
grunt . registerTask ( "lint" , [ "tslint:build" ] ) ;
231
238
grunt . registerTask ( "all" , [ "clean" , "test" , "lint" ] ) ;
232
239
grunt . registerTask ( "rebuild" , [ "clean" , "ts:devlib" ] ) ;
233
- grunt . registerTask ( "default" , "ts:devlib" ) ;
240
+ grunt . registerTask ( "default" , [ "ts:devlib" , "generate_unit_testing_dependencies" ] ) ;
234
241
grunt . registerTask ( "docs-jekyll" , [ 'template' ] ) ;
235
242
} ;
243
+
244
+ function registerTestingDependenciesTasks ( grunt ) {
245
+ const configsBasePath = path . join ( __dirname , "config" ) ;
246
+ const generatedVersionFileName = "test-deps-versions-generated.json" ;
247
+
248
+ grunt . registerTask ( "generate_unit_testing_dependencies" , async function ( ) {
249
+ var done = this . async ( ) ;
250
+ const dependenciesVersions = { } ;
251
+ const testDependencies = grunt . file . readJSON ( path . join ( configsBasePath , "test-dependencies.json" ) ) ;
252
+ for ( var dependency of testDependencies ) {
253
+ const dependencyVersion = await latestVersion ( dependency . name ) ;
254
+ dependenciesVersions [ dependency . name ] = dependencyVersion ;
255
+ }
256
+ grunt . file . write ( path . join ( configsBasePath , generatedVersionFileName ) , JSON . stringify ( dependenciesVersions ) ) ;
257
+ done ( ) ;
258
+ } ) ;
259
+
260
+ grunt . registerTask ( "verify_unit_testing_dependencies" , function ( ) {
261
+ if ( ! grunt . file . exists ( path . join ( configsBasePath , generatedVersionFileName ) ) ) {
262
+ throw new Error ( "Unit testing dependencies are not configured." ) ;
263
+ }
264
+ } ) ;
265
+ }
266
+
0 commit comments