11const childProcess = require ( "child_process" ) ;
22const EOL = require ( "os" ) . EOL ;
3+ const path = require ( "path" ) ;
34const now = new Date ( ) . toISOString ( ) ;
5+ const latestVersion = require ( 'latest-version' ) ;
46
57const ENVIRONMENTS = {
68 live : "live" ,
@@ -205,9 +207,14 @@ module.exports = function (grunt) {
205207 } ) ;
206208
207209 grunt . registerTask ( "test" , [ "ts:devall" , "shell:npm_test" ] ) ;
210+
211+ registerTestingDependenciesTasks ( grunt ) ;
212+
208213 grunt . registerTask ( "prepare" , [
209214 "clean" ,
210215 "ts:release_build" ,
216+ "generate_unit_testing_dependencies" ,
217+ "verify_unit_testing_dependencies" ,
211218 "shell:npm_test" ,
212219
213220 "set_live_ga_id" ,
@@ -230,6 +237,30 @@ module.exports = function (grunt) {
230237 grunt . registerTask ( "lint" , [ "tslint:build" ] ) ;
231238 grunt . registerTask ( "all" , [ "clean" , "test" , "lint" ] ) ;
232239 grunt . registerTask ( "rebuild" , [ "clean" , "ts:devlib" ] ) ;
233- grunt . registerTask ( "default" , "ts:devlib" ) ;
240+ grunt . registerTask ( "default" , [ "ts:devlib" , "generate_unit_testing_dependencies" ] ) ;
234241 grunt . registerTask ( "docs-jekyll" , [ 'template' ] ) ;
235242} ;
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