diff --git a/tools/cjs-jasmine/index-tools.ts b/tools/cjs-jasmine/index-tools.ts index 4efdab932b..744d9c792b 100644 --- a/tools/cjs-jasmine/index-tools.ts +++ b/tools/cjs-jasmine/index-tools.ts @@ -6,14 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -/* tslint:disable:no-var-keyword */ - 'use strict'; -var glob = require('glob'); +const glob = require('glob'); require('zone.js/dist/zone-node.js'); -var JasmineRunner = require('jasmine'); -var path = require('path'); +const JasmineRunner = require('jasmine'); +const path = require('path'); require('zone.js/dist/long-stack-trace-zone.js'); require('zone.js/dist/task-tracking.js'); require('zone.js/dist/proxy.js'); @@ -21,34 +19,34 @@ require('zone.js/dist/sync-test.js'); require('zone.js/dist/async-test.js'); require('zone.js/dist/fake-async-test.js'); -var jrunner = new JasmineRunner(); +// Let TypeScript know this is a module +export {}; + +const jrunner = new JasmineRunner({projectBaseDir: path.resolve(__dirname, '../../')}); (global as any)['jasmine'] = jrunner.jasmine; require('zone.js/dist/jasmine-patch.js'); -var rootDir = process.cwd(); -function rootDirRequire(moduleId: string) { - return require(path.join(rootDir, moduleId)); -} -// Tun on full stack traces in errors to help debugging +// Turn on full stack traces in errors to help debugging (Error)['stackTraceLimit'] = Infinity; -// Support passing multiple globs -var globsIndex = process.argv.indexOf('--'); -var args: string[]; -if (globsIndex < 0) { - args = [process.argv[2]]; -} else { - args = process.argv.slice(globsIndex + 1); -} - -var specFiles = args.map(function(globstr: string) { return glob.sync(globstr, {cwd: rootDir}); }) - .reduce((specFiles: string[], paths: string[]) => specFiles.concat(paths), []); -jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; - +// Config the test runner +jrunner.jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; +jrunner.loadConfig({ + spec_dir: '', +}); jrunner.configureDefaultReporter({showColors: process.argv.indexOf('--no-color') === -1}); +jrunner.onComplete((passed: boolean) => process.exit(passed ? 0 : 1)); -jrunner.onComplete(function(passed: boolean) { process.exit(passed ? 0 : 1); }); -jrunner.projectBaseDir = path.resolve(__dirname, '../../'); -jrunner.specDir = ''; -specFiles.forEach((file: string) => { rootDirRequire(file); }); +// Support passing multiple globs +const rootDir = process.cwd(); +const globsIndex = process.argv.indexOf('--'); +const globs = (globsIndex === -1) ? [process.argv[2]] : process.argv.slice(globsIndex + 1); +const specFiles = globs.map(globstr => glob.sync(globstr, {cwd: rootDir}) as string[]) + .reduce((allPaths, paths) => allPaths.concat(paths), []); + +// Load helpers and spec files +const rootDirRequire = (relativePath: string) => require(path.join(rootDir, relativePath)); +specFiles.forEach(rootDirRequire); + +// Run the tests jrunner.execute(); diff --git a/tools/cjs-jasmine/index.ts b/tools/cjs-jasmine/index.ts index 4508806380..4798ff759f 100644 --- a/tools/cjs-jasmine/index.ts +++ b/tools/cjs-jasmine/index.ts @@ -6,14 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -/* tslint:disable:no-var-keyword */ - 'use strict'; -var glob = require('glob'); +const glob = require('glob'); require('zone.js/dist/zone-node.js'); -var JasmineRunner = require('jasmine'); -var path = require('path'); +const JasmineRunner = require('jasmine'); +const path = require('path'); require('source-map-support').install(); require('zone.js/dist/long-stack-trace-zone.js'); require('zone.js/dist/task-tracking.js'); @@ -22,83 +20,78 @@ require('zone.js/dist/sync-test.js'); require('zone.js/dist/async-test.js'); require('zone.js/dist/fake-async-test.js'); require('reflect-metadata/Reflect'); -var jrunner = new JasmineRunner(); + +// Let TypeScript know this is a module +export {}; + +const jrunner = new JasmineRunner({projectBaseDir: path.resolve(__dirname, '../../')}); (global as any)['jasmine'] = jrunner.jasmine; require('zone.js/dist/jasmine-patch.js'); -var distAll: string = process.cwd() + '/dist/all'; -function distAllRequire(moduleId: string) { - return require(path.join(distAll, moduleId)); -} +(global as any).isBrowser = false; +(global as any).isNode = true; - -// Tun on full stack traces in errors to help debugging +// Turn on full stack traces in errors to help debugging (Error)['stackTraceLimit'] = Infinity; +// Config the test runner jrunner.jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; +jrunner.loadConfig({ + spec_dir: '', +}); +jrunner.configureDefaultReporter({showColors: process.argv.indexOf('--no-color') === -1}); +jrunner.onComplete((passed: boolean) => process.exit(passed ? 0 : 1)); // Support passing multiple globs -var globsIndex = process.argv.indexOf('--'); -var args: string[]; -if (globsIndex < 0) { - args = [process.argv[2]]; -} else { - args = process.argv.slice(globsIndex + 1); -} - -(global as any).isNode = true; -(global as any).isBrowser = false; - -var specFiles: any = - args.map(function(globstr: string): - string[] { - return glob.sync(globstr, { - cwd: distAll, - ignore: [ - // the following code and tests are not compatible with CJS/node environment - '@angular/_testing_init/**', - '@angular/examples/**', - '@angular/platform-browser/**', - '@angular/platform-browser-dynamic/**', - '@angular/compiler/test/aot/**', - '@angular/compiler/test/render3/**', - '@angular/core/test/bundling/**', - '@angular/core/test/zone/**', - '@angular/core/test/render3/**', - '@angular/core/test/fake_async_spec.*', - '@angular/forms/test/**', - '@angular/router/test/route_config/route_config_spec.*', - '@angular/router/test/integration/bootstrap_spec.*', - '@angular/integration_test/symbol_inspector/**', - '@angular/upgrade/**', - '@angular/elements/**', - '@angular/**/e2e_test/**', - 'angular1_router/**', - 'payload_tests/**', - ] - }); - }) +const distAll = process.cwd() + '/dist/all'; +const globsIndex = process.argv.indexOf('--'); +const globs = (globsIndex === -1) ? [process.argv[2]] : process.argv.slice(globsIndex + 1); +const specFiles = + globs + .map(globstr => glob.sync(globstr, { + cwd: distAll, + ignore: [ + // the following code and tests are not compatible with CJS/node environment + '@angular/_testing_init/**', + '@angular/compiler/test/aot/**', + '@angular/compiler/test/render3/**', + '@angular/core/test/bundling/**', + '@angular/core/test/fake_async_spec.*', + '@angular/core/test/render3/**', + '@angular/core/test/zone/**', + '@angular/elements/**', + '@angular/examples/**', + '@angular/forms/test/**', + '@angular/integration_test/symbol_inspector/**', + '@angular/platform-browser/**', + '@angular/platform-browser-dynamic/**', + '@angular/router/test/integration/bootstrap_spec.*', + '@angular/router/test/route_config/route_config_spec.*', + '@angular/upgrade/**', + '@angular/**/e2e_test/**', + 'angular1_router/**', + 'payload_tests/**', + ], + }) as string[]) // Run relevant subset of browser tests for features reused on the server side. // Make sure the security spec works on the server side! .concat(glob.sync('@angular/platform-browser/test/security/**/*_spec.js', {cwd: distAll})) .concat(['/@angular/platform-browser/test/browser/meta_spec.js']) .concat(['/@angular/platform-browser/test/browser/title_spec.js']) .concat(['/@angular/platform-browser/test/browser/transfer_state_spec.js']) - .reduce((specFiles: string[], paths: string[]) => specFiles.concat(paths), []); + .reduce((allPaths, paths) => allPaths.concat(paths), []); -jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; - -jrunner.configureDefaultReporter({showColors: process.argv.indexOf('--no-color') === -1}); - -jrunner.onComplete(function(passed: boolean) { process.exit(passed ? 0 : 1); }); -jrunner.projectBaseDir = path.resolve(__dirname, '../../'); -jrunner.specDir = ''; -require('./test-cjs-main.js'); -distAllRequire('@angular/platform-server/src/domino_adapter.js').DominoAdapter.makeCurrent(); -specFiles.forEach((file: string) => { - const r = distAllRequire(file); - if (r.main) { - r.main(); +// Load helpers and spec files +const distAllRequire = (relativePath: string) => { + const mod = require(path.join(distAll, relativePath)); + if (mod.main) { + mod.main(); } -}); + return mod; +}; +require('./test-cjs-main'); +distAllRequire('@angular/platform-server/src/domino_adapter').DominoAdapter.makeCurrent(); +specFiles.forEach(distAllRequire); + +// Run the tests jrunner.execute();