parent
							
								
									c84739dc55
								
							
						
					
					
						commit
						40d64b6b58
					
				| @ -29,6 +29,7 @@ ng_package( | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler/test:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|  | ||||
| @ -33,6 +33,7 @@ ng_package( | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/bazel/test/ng_package:__pkg__", | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler-cli/test:__pkg__", | ||||
|         "//packages/compiler-cli/test/diagnostics:__pkg__", | ||||
|         "//packages/compiler-cli/test/ngcc:__pkg__", | ||||
|  | ||||
| @ -53,7 +53,9 @@ npm_package( | ||||
|     ], | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = ["//visibility:private"], | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|         ":compiler-cli", | ||||
|         "//packages/compiler-cli/src/ngcc", | ||||
|  | ||||
| @ -1,28 +0,0 @@ | ||||
| 
 | ||||
| # Legacy docs for @angular/compiler-cli Developers | ||||
| 
 | ||||
| *Note from Igor: This doc is likely outdated now but I'm keeping it around because | ||||
| offline_compiler_test.sh need to be converted to bazel/circleci (or deleted) and these docs seem | ||||
| relevant to anyone who needs to understand those tests. Once that's done this file can be deleted.* | ||||
| 
 | ||||
| 
 | ||||
| ``` | ||||
| # Build Angular and the compiler | ||||
| ./build.sh | ||||
| 
 | ||||
| # Run the test once | ||||
| # (First edit the LINKABLE_PKGS to use npm link instead of npm install) | ||||
| $ ./scripts/ci/offline_compiler_test.sh | ||||
| 
 | ||||
| # Keep a package fresh in watch mode | ||||
| ./node_modules/.bin/tsc -p packages/compiler/tsconfig-build.json -w | ||||
| 
 | ||||
| # Recompile @angular/core module (needs to use tsc-ext to keep the metadata) | ||||
| $ export NODE_PATH=${NODE_PATH}:$(pwd)/dist/all:$(pwd)/dist/tools | ||||
| $ node dist/tools/@angular/compiler-cli/src/main -p packages/core/tsconfig-build.json | ||||
| 
 | ||||
| # Iterate on the test | ||||
| $ cd /tmp/wherever/e2e_test.1464388257/ | ||||
| $ ./node_modules/.bin/ngc | ||||
| $ ./node_modules/.bin/jasmine test/*_spec.js | ||||
| ``` | ||||
							
								
								
									
										59
									
								
								packages/compiler-cli/integrationtest/BUILD.bazel
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								packages/compiler-cli/integrationtest/BUILD.bazel
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| package(default_visibility = ["//visibility:public"]) | ||||
| 
 | ||||
| load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_test") | ||||
| load("//tools:defaults.bzl", "nodejs_binary") | ||||
| 
 | ||||
| nodejs_binary( | ||||
|     name = "ngc_bin", | ||||
|     data = [ | ||||
|         "//packages/compiler-cli", | ||||
|         "@ngdeps//chokidar", | ||||
|         "@ngdeps//reflect-metadata", | ||||
|     ], | ||||
|     entry_point = "angular/packages/compiler-cli/src/main.js", | ||||
| ) | ||||
| 
 | ||||
| nodejs_binary( | ||||
|     name = "ng_xi18n", | ||||
|     data = [ | ||||
|         "//packages/compiler-cli", | ||||
|         "@ngdeps//chokidar", | ||||
|         "@ngdeps//reflect-metadata", | ||||
|     ], | ||||
|     entry_point = "angular/packages/compiler-cli/src/extract_i18n.js", | ||||
| ) | ||||
| 
 | ||||
| nodejs_test( | ||||
|     name = "integrationtest", | ||||
|     data = [ | ||||
|         ":ngc_bin", | ||||
|         ":ng_xi18n", | ||||
|         "@nodejs//:node", | ||||
|         "@ngdeps//domino", | ||||
|         "@ngdeps//chokidar", | ||||
|         "@ngdeps//source-map-support", | ||||
|         "@ngdeps//shelljs", | ||||
|         "@ngdeps//typescript", | ||||
|         "@ngdeps//reflect-metadata", | ||||
|         "@ngdeps//rxjs", | ||||
|         "@ngdeps//tslib", | ||||
|         "@ngdeps//jasmine/bin:jasmine", | ||||
|         "@ngdeps//zone.js", | ||||
|         "@ngdeps//xhr2", | ||||
|         "@ngdeps//@types/node", | ||||
|         "@ngdeps//@types/jasmine", | ||||
|         "//packages/animations:npm_package", | ||||
|         "//packages/common:npm_package", | ||||
|         "//packages/compiler:npm_package", | ||||
|         "//packages/compiler-cli:npm_package", | ||||
|         "//packages/core:npm_package", | ||||
|         "//packages/forms:npm_package", | ||||
|         "//packages/http:npm_package", | ||||
|         "//packages/platform-browser:npm_package", | ||||
|         "//packages/platform-browser-dynamic:npm_package", | ||||
|         "//packages/platform-server:npm_package", | ||||
|         "//packages/router:npm_package", | ||||
|     ] + glob(["**/*"]), | ||||
|     entry_point = "angular/packages/compiler-cli/integrationtest/test.js", | ||||
|     tags = ["no-ivy-aot"], | ||||
| ) | ||||
| @ -1,25 +1,20 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "genDir": "ng", | ||||
|     "flatModuleId": "flat_module", | ||||
|     "flatModuleOutFile": "index.js", | ||||
|     "skipTemplateCodegen": true | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "baseUrl": ".", | ||||
|     "declaration": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "moduleResolution": "node", | ||||
|     "noImplicitAny": true, | ||||
|     "outDir": "../node_modules/flat_module", | ||||
|      // Prevent scanning up the directory tree for types | ||||
|     "typeRoots": ["node_modules/@types"] | ||||
|     "rootDir": "", | ||||
|     "target": "es5" | ||||
|  }, | ||||
| 
 | ||||
|  "files": ["public-api.ts"] | ||||
|  | ||||
| @ -1,24 +1,17 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "genDir": ".", | ||||
|     "debug": true | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": [ | ||||
|       "es6", | ||||
|       "dom" | ||||
|     ], | ||||
|     "baseUrl": ".", | ||||
|     // don't auto-discover @types/fs-extra | ||||
|     "declaration": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "moduleResolution": "node", | ||||
|     "noImplicitAny": true, | ||||
|     "rootDir": "", | ||||
|     "target": "es5", | ||||
|     "types": [] | ||||
|   } | ||||
| } | ||||
| @ -8,7 +8,6 @@ | ||||
| 
 | ||||
| import {ApplicationRef, NgModule, forwardRef} from '@angular/core'; | ||||
| import {FormsModule} from '@angular/forms'; | ||||
| import {MATERIAL_SANITY_CHECKS, MdButtonModule} from '@angular/material'; | ||||
| import {ServerModule} from '@angular/platform-server'; | ||||
| import {FlatModule} from 'flat_module'; | ||||
| // Note: don't refer to third_party_src as we want to test that
 | ||||
| @ -60,7 +59,6 @@ export {SomeModule as JitSummariesSomeModule} from './jit_summaries'; | ||||
|   imports: [ | ||||
|     ServerModule, | ||||
|     FormsModule, | ||||
|     MdButtonModule, | ||||
|     ModuleUsingCustomElements, | ||||
|     SomeLibModule.withProviders(), | ||||
|     ThirdpartyModule, | ||||
| @ -69,9 +67,6 @@ export {SomeModule as JitSummariesSomeModule} from './jit_summaries'; | ||||
|   providers: [ | ||||
|     SomeService, | ||||
|     {provide: CUSTOM, useValue: forwardRef(() => ({name: 'some name'}))}, | ||||
|     // disable sanity check for material because it throws an error when used server-side
 | ||||
|     // see https://github.com/angular/material2/issues/6292
 | ||||
|     {provide: MATERIAL_SANITY_CHECKS, useValue: false}, | ||||
|   ], | ||||
|   entryComponents: [ | ||||
|     AnimateCmp, | ||||
|  | ||||
							
								
								
									
										54
									
								
								packages/compiler-cli/integrationtest/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								packages/compiler-cli/integrationtest/test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| /** | ||||
|  * @license | ||||
|  * Copyright Google Inc. All Rights Reserved. | ||||
|  * | ||||
|  * Use of this source code is governed by an MIT-style license that can be | ||||
|  * found in the LICENSE file at https://angular.io/license
 | ||||
|  */ | ||||
| 
 | ||||
| const path = require('path'); | ||||
| const shx = require('shelljs'); | ||||
| const os = require('os'); | ||||
| const {runCommand, setupTestDirectory} = require('./test_helpers'); | ||||
| 
 | ||||
| const ngcBin = require.resolve('./ngc_bin'); | ||||
| const xi18nBin = require.resolve('./ng_xi18n'); | ||||
| const nodeBin = require.resolve(`nodejs/bin/node${(os.platform() === 'win32' ? '.cmd' : '')}`); | ||||
| const jasmineBin = require.resolve('ngdeps/node_modules/jasmine/bin/jasmine.js'); | ||||
| 
 | ||||
| // Prepare the test directory before building the integration test output. This ensures that
 | ||||
| // the test runs in an hermetic way and works on Windows.
 | ||||
| const tmpDir = setupTestDirectory(); | ||||
| 
 | ||||
| // Compile the "flat_module" Angular project using NGC.
 | ||||
| runCommand(ngcBin, ['-p', 'flat_module/tsconfig-build.json']); | ||||
| 
 | ||||
| // Copy HTML asset files from the "flat_module" package to the NPM output. The "flat_module"
 | ||||
| // has template code generation disabled and therefore needs to have the asset files included
 | ||||
| // next to the JavaScript output.
 | ||||
| shx.cp( | ||||
|     path.join(tmpDir, 'flat_module/src/*.html'), path.join(tmpDir, 'node_modules/flat_module/src')); | ||||
| 
 | ||||
| // Compile the "third_party" Angular project using NGC.
 | ||||
| runCommand(ngcBin, ['-p', 'third_party_src/tsconfig-build.json']); | ||||
| 
 | ||||
| // Compile the main integration-test Angular project using NGC. Also uses a translated
 | ||||
| // i18n file which will be used to verify the translated templates of components.
 | ||||
| runCommand(ngcBin, [ | ||||
|   '-p', 'tsconfig-build.json', '--i18nFile=src/messages.fi.xlf', '--locale=fi', '--i18nFormat=xlf' | ||||
| ]); | ||||
| 
 | ||||
| // Extract the i18n messages into various formats that will be verified
 | ||||
| // later on by the "i18n_spec" within "test/".
 | ||||
| runCommand(xi18nBin, ['-p', 'tsconfig-xi18n.json', '--i18nFormat=xlf', '--locale=fr']); | ||||
| runCommand( | ||||
|     xi18nBin, ['-p', 'tsconfig-xi18n.json', '--i18nFormat=xlf2', '--outFile=messages.xliff2.xlf']); | ||||
| runCommand( | ||||
|     xi18nBin, ['-p', 'tsconfig-xi18n.json', '--i18nFormat=xmb', '--outFile=custom_file.xmb']); | ||||
| 
 | ||||
| // Run the ngtools tests that verify that the public API provided by the "compiler-cli"
 | ||||
| // is working as expected in real projects.
 | ||||
| runCommand(nodeBin, [path.join(tmpDir, 'test/test_ngtools_api.js')]); | ||||
| 
 | ||||
| // Run all specs which verify the output from the previously built modules and i18n files.
 | ||||
| runCommand(nodeBin, [jasmineBin, path.join(tmpDir, 'test/all_spec.js')]); | ||||
							
								
								
									
										164
									
								
								packages/compiler-cli/integrationtest/test_helpers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								packages/compiler-cli/integrationtest/test_helpers.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,164 @@ | ||||
| /** | ||||
|  * @license | ||||
|  * Copyright Google Inc. All Rights Reserved. | ||||
|  * | ||||
|  * Use of this source code is governed by an MIT-style license that can be | ||||
|  * found in the LICENSE file at https://angular.io/license
 | ||||
|  */ | ||||
| 
 | ||||
| const child_process = require('child_process'); | ||||
| const fs = require('fs'); | ||||
| const path = require('path'); | ||||
| const shx = require('shelljs'); | ||||
| 
 | ||||
| /** Manifest path that refers to the Bazel package that contains all test sources. */ | ||||
| const baseManifestPath = 'angular/packages/compiler-cli/integrationtest'; | ||||
| 
 | ||||
| /** | ||||
|  * Temporary directory which will be used to build and run the integration tests. Note that | ||||
|  * this environment variable is automatically set by Bazel for such test actions. | ||||
|  */ | ||||
| const tmpDir = process.env.TEST_TMPDIR; | ||||
| 
 | ||||
| /** Fine grained node modules which are required in order to run the integration test. */ | ||||
| const requiredNodeModules = { | ||||
|   '@angular/animations': resolveNpmTreeArtifact('angular/packages/animations/npm_package'), | ||||
|   '@angular/common': resolveNpmTreeArtifact('angular/packages/common/npm_package'), | ||||
|   '@angular/compiler': resolveNpmTreeArtifact('angular/packages/compiler/npm_package'), | ||||
|   '@angular/compiler-cli': resolveNpmTreeArtifact('angular/packages/compiler-cli/npm_package'), | ||||
|   '@angular/core': resolveNpmTreeArtifact('angular/packages/core/npm_package'), | ||||
|   '@angular/forms': resolveNpmTreeArtifact('angular/packages/forms/npm_package'), | ||||
|   '@angular/http': resolveNpmTreeArtifact('angular/packages/http/npm_package'), | ||||
|   '@angular/platform-browser': | ||||
|       resolveNpmTreeArtifact('angular/packages/platform-browser/npm_package'), | ||||
|   '@angular/platform-browser-dynamic': | ||||
|       resolveNpmTreeArtifact('angular/packages/platform-browser-dynamic/npm_package'), | ||||
|   '@angular/platform-server': | ||||
|       resolveNpmTreeArtifact('angular/packages/platform-server/npm_package'), | ||||
|   '@angular/router': resolveNpmTreeArtifact('angular/packages/router/npm_package'), | ||||
|   '@types/jasmine': resolveNpmTreeArtifact('ngdeps/node_modules/@types/jasmine'), | ||||
|   '@types/node': resolveNpmTreeArtifact('ngdeps/node_modules/@types/node'), | ||||
| 
 | ||||
|   // Transitive dependencies which need to be specified because the Angular NPM packages
 | ||||
|   // depend on these without the Angular NPM packages being part of the Bazel managed deps.
 | ||||
|   // This means that transitive dependencies need to be manually declared as required.
 | ||||
|   'tslib': resolveNpmTreeArtifact('ngdeps/node_modules/tslib'), | ||||
|   'domino': resolveNpmTreeArtifact('ngdeps/node_modules/domino'), | ||||
|   'xhr2': resolveNpmTreeArtifact('ngdeps/node_modules/xhr2'), | ||||
| 
 | ||||
|   // Fine grained dependencies which are used by the integration test Angular modules, and
 | ||||
|   // need to be symlinked so that they can be resolved by NodeJS or NGC.
 | ||||
|   'reflect-metadata': resolveNpmTreeArtifact('ngdeps/node_modules/reflect-metadata'), | ||||
|   'rxjs': resolveNpmTreeArtifact('ngdeps/node_modules/rxjs'), | ||||
|   'source-map-support': resolveNpmTreeArtifact('ngdeps/node_modules/source-map-support'), | ||||
|   'typescript': resolveNpmTreeArtifact('ngdeps/node_modules/typescript'), | ||||
|   'zone.js': resolveNpmTreeArtifact('ngdeps/node_modules/zone.js'), | ||||
| }; | ||||
| 
 | ||||
| /** Sets up the temporary test directory and returns the path to the directory. */ | ||||
| exports.setupTestDirectory = function() { | ||||
|   copySourceFilesToTempDir(); | ||||
|   symlinkNodeModules(); | ||||
|   return tmpDir; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Runs a given binary with the specified command line arguments. The working directory for | ||||
|  * the spawned process will be the temporary directory. | ||||
|  */ | ||||
| exports.runCommand = function runCommand(binary, args = []) { | ||||
|   const ngcProcess = child_process.spawnSync(binary, args, { | ||||
|     stdio: 'inherit', | ||||
|     cwd: tmpDir, | ||||
|     env: { | ||||
|       ...process.env, | ||||
|       // We need to set the "NODE_PATH" here because the built Angular NPM packages are symlinks
 | ||||
|       // which NodeJS resolves into the output location. This is problematic because the output
 | ||||
|       // location does not have the required dependencies of these NPM packages installed. This
 | ||||
|       // could be fixed by setting the NodeJS "--preserve-symlinks" option, but this would mean
 | ||||
|       // that transitive dependencies of fine-grained dependencies cannot be resolved either.
 | ||||
|       NODE_PATH: path.join(tmpDir, 'node_modules/') | ||||
|     } | ||||
|   }); | ||||
| 
 | ||||
|   if (ngcProcess.status !== 0) { | ||||
|     console.error(`Command ${binary} failed with arguments: "${args.join(' ')}". See error above.`); | ||||
|     process.exit(1); | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Symlinks the specified node modules within the temporary directory. This is necessary because | ||||
|  * this test is an integration test and we don't want to rely on any path-mapped module resolution. | ||||
|  * Additionally, NGC expects types and imported packages to be within the project's root dir. | ||||
|  */ | ||||
| function symlinkNodeModules() { | ||||
|   Object.keys(requiredNodeModules).forEach(importName => { | ||||
|     const outputPath = path.join(tmpDir, 'node_modules', importName); | ||||
|     const moduleDir = requiredNodeModules[importName]; | ||||
| 
 | ||||
|     findFilesWithinDirectory(moduleDir).forEach(filePath => { | ||||
|       const outputFilePath = path.join(outputPath, path.relative(moduleDir, filePath)); | ||||
| 
 | ||||
|       shx.mkdir('-p', path.dirname(outputFilePath)); | ||||
|       fs.symlinkSync(filePath, outputFilePath); | ||||
|     }); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Copies all source files for the integration test to a temporary directory. This | ||||
|  * is necessary because runfiles resolve on Windows to the original source location, | ||||
|  * and we don't want to pollute the workspace sources. This breaks hermeticity. | ||||
|  */ | ||||
| function copySourceFilesToTempDir() { | ||||
|   getSourceFilesFromRunfiles().forEach(({realPath, relativeFilePath}) => { | ||||
|     const tmpFilePath = path.join(tmpDir, relativeFilePath); | ||||
| 
 | ||||
|     shx.mkdir('-p', path.dirname(tmpFilePath)); | ||||
|     shx.cp(realPath, tmpFilePath); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Gets all source files for the integration test by querying the Bazel runfiles. | ||||
|  * In case there is a runfiles manifest (e.g. on Windows), the source files are resolved | ||||
|  * through the manifest because on these platforms the runfiles are not symlinked and | ||||
|  * cannot be searched within the real filesystem. | ||||
|  */ | ||||
| function getSourceFilesFromRunfiles() { | ||||
|   // Path to the Bazel runfiles manifest if present. This file is present if runfiles are
 | ||||
|   // not symlinked into the runfiles directory.
 | ||||
|   const runfilesManifestPath = process.env.RUNFILES_MANIFEST_FILE; | ||||
| 
 | ||||
|   if (!runfilesManifestPath) { | ||||
|     const packageRunfilesDir = path.join(process.env.RUNFILES, baseManifestPath); | ||||
|     return findFilesWithinDirectory(packageRunfilesDir).map(filePath => ({ | ||||
|                                                               realPath: filePath, | ||||
|                                                               relativeFilePath: path.relative( | ||||
|                                                                   packageRunfilesDir, filePath) | ||||
|                                                             })); | ||||
|   } | ||||
| 
 | ||||
|   return fs.readFileSync(runfilesManifestPath, 'utf8') | ||||
|       .split('\n') | ||||
|       .map(mapping => mapping.split(' ')) | ||||
|       .filter(([runfilePath]) => runfilePath.startsWith(baseManifestPath)) | ||||
|       .map( | ||||
|           ([runfilePath, realPath]) => | ||||
|               ({realPath, relativeFilePath: path.relative(baseManifestPath, runfilePath)})); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Resolves a NPM package from the Bazel runfiles. We need to resolve the Bazel tree | ||||
|  * artifacts using a "resolve file" because the NodeJS module resolution does not allow | ||||
|  * resolving to directory paths. | ||||
|  */ | ||||
| function resolveNpmTreeArtifact(manifestPath, resolveFile = 'package.json') { | ||||
|   return path.dirname(require.resolve(path.posix.join(manifestPath, resolveFile))); | ||||
| } | ||||
| 
 | ||||
| /** Finds all files within a specified directory. */ | ||||
| function findFilesWithinDirectory(directoryPath) { | ||||
|   return shx.find(directoryPath).filter(filePath => !fs.statSync(filePath).isDirectory()); | ||||
| } | ||||
| @ -1,21 +1,17 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "skipTemplateCodegen": true | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "baseUrl": ".", | ||||
|     "declaration": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "moduleResolution": "node", | ||||
|     "noImplicitAny": true, | ||||
|     "outDir": "../node_modules/third_party", | ||||
|      // Prevent scanning up the directory tree for types | ||||
|     "typeRoots": ["node_modules/@types"] | ||||
|     "rootDir": "", | ||||
|     "target": "es5" | ||||
|  } | ||||
| } | ||||
| @ -1,40 +1,34 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "genDir": ".", | ||||
|     "alwaysCompileGeneratedCode": true, | ||||
|     "annotationsAs": "static fields", | ||||
|     "debug": true, | ||||
|     "enableSummariesForJit": true, | ||||
|     "alwaysCompileGeneratedCode": true, | ||||
|     "i18nFormat": "xlf" | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "strictNullChecks": true, | ||||
|     "strictPropertyInitialization": true, | ||||
|     "skipLibCheck": true, | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "baseUrl": ".", | ||||
|     // Prevent scanning up the directory tree for types | ||||
|     "typeRoots": ["node_modules/@types"], | ||||
|     "declaration": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "moduleResolution": "node", | ||||
|     "noImplicitAny": true, | ||||
|     "noUnusedLocals": true, | ||||
|     "sourceMap": true | ||||
|     "rootDir": "", | ||||
|     "skipLibCheck": true, | ||||
|     "sourceMap": true, | ||||
|     "strictNullChecks": true, | ||||
|     // compatible with the option. Disabled until the integration test support the strict flag. | ||||
|     // TODO(devversion): this has been enabled without the integration test code being | ||||
|     "strictPropertyInitialization": false, | ||||
|     "target": "es5" | ||||
|   }, | ||||
| 
 | ||||
|   "files": [ | ||||
|     "src/module", | ||||
|     "src/bootstrap", | ||||
|     "test/all_spec", | ||||
|     "test/test_ngtools_api", | ||||
|     "benchmarks/src/tree/ng2/index_aot.ts", | ||||
|     "benchmarks/src/tree/ng2_switch/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2_switch/index_aot.ts" | ||||
|     "test/test_ngtools_api" | ||||
|   ] | ||||
| } | ||||
|  | ||||
| @ -1,39 +0,0 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "genDir": ".", | ||||
|     "debug": true, | ||||
|     "enableSummariesForJit": true, | ||||
|     "alwaysCompileGeneratedCode": true | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "strictNullChecks": true, | ||||
|     "strictPropertyInitialization": true, | ||||
|     "skipLibCheck": true, | ||||
|     "moduleResolution": "node", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "baseUrl": ".", | ||||
|     // Prevent scanning up the directory tree for types | ||||
|     "typeRoots": ["node_modules/@types"], | ||||
|     "noUnusedLocals": true, | ||||
|     "sourceMap": true | ||||
|   }, | ||||
| 
 | ||||
|   "files": [ | ||||
|     "src/module", | ||||
|     "src/bootstrap", | ||||
|     "test/all_spec", | ||||
|     "test/test_ngtools_api", | ||||
|     "benchmarks/src/tree/ng2/index_aot.ts", | ||||
|     "benchmarks/src/tree/ng2_switch/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2_switch/index_aot.ts" | ||||
|   ] | ||||
| } | ||||
| @ -1,34 +1,26 @@ | ||||
| { | ||||
|   "angularCompilerOptions": { | ||||
|     // For TypeScript 1.8, we have to lay out generated files | ||||
|     // in the same source directory with your code. | ||||
|     "genDir": ".", | ||||
|     "debug": true, | ||||
|     "enableSummariesForJit": true | ||||
|   }, | ||||
| 
 | ||||
|   "compilerOptions": { | ||||
|     "target": "es5", | ||||
|     "experimentalDecorators": true, | ||||
|     "noImplicitAny": true, | ||||
|     "moduleResolution": "node", | ||||
|     "outDir": "./out", | ||||
|     "rootDir": "", | ||||
|     "declaration": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "baseUrl": ".", | ||||
|     // Prevent scanning up the directory tree for types | ||||
|     "typeRoots": ["node_modules/@types"] | ||||
|     "declaration": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "lib": ["es6", "dom"], | ||||
|     "moduleResolution": "node", | ||||
|     "noImplicitAny": true, | ||||
|     "outDir": "./xi18n-out", | ||||
|     "rootDir": "", | ||||
|     "skipLibCheck": true, | ||||
|     "target": "es5" | ||||
|   }, | ||||
| 
 | ||||
|   "files": [ | ||||
|     "src/module", | ||||
|     "src/bootstrap", | ||||
|     "test/all_spec", | ||||
|     "test/test_ngtools_api", | ||||
|     "benchmarks/src/tree/ng2/index_aot.ts", | ||||
|     "benchmarks/src/tree/ng2_switch/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2/index_aot.ts", | ||||
|     "benchmarks/src/largetable/ng2_switch/index_aot.ts" | ||||
|     "test/test_ngtools_api" | ||||
|   ] | ||||
| } | ||||
|  | ||||
| @ -1,19 +0,0 @@ | ||||
| /** | ||||
|  * @license | ||||
|  * Copyright Google Inc. All Rights Reserved. | ||||
|  * | ||||
|  * Use of this source code is governed by an MIT-style license that can be | ||||
|  * found in the LICENSE file at https://angular.io/license
 | ||||
|  */ | ||||
| 
 | ||||
| module.exports = { | ||||
|   target: 'node', | ||||
|   entry: './test/all_spec.js', | ||||
|   output: {filename: './all_spec.js'}, | ||||
|   resolve: {extensions: ['.js']}, | ||||
|   devtool: '#source-map', | ||||
|   module: { | ||||
|     loaders: | ||||
|         [{test: /\.js$/, exclude: /node_modules/, loaders: ['source-map-loader'], enforce: 'pre'}] | ||||
|   }, | ||||
| }; | ||||
| @ -26,6 +26,7 @@ ng_package( | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/language-service/test:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|  | ||||
| @ -37,6 +37,7 @@ ng_package( | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/bazel/test/ng_package:__pkg__", | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler-cli/test:__pkg__", | ||||
|         "//packages/compiler-cli/test/diagnostics:__pkg__", | ||||
|         "//packages/compiler-cli/test/ngcc:__pkg__", | ||||
|  | ||||
| @ -27,6 +27,7 @@ ng_package( | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler-cli/test/diagnostics:__pkg__", | ||||
|         "//packages/language-service/test:__pkg__", | ||||
|     ], | ||||
|  | ||||
| @ -29,7 +29,9 @@ ng_package( | ||||
|     ], | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = ["//visibility:private"], | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|         ":http", | ||||
|         "//packages/http/testing", | ||||
|  | ||||
| @ -31,7 +31,9 @@ ng_package( | ||||
|     ], | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = ["//visibility:private"], | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|         ":platform-browser-dynamic", | ||||
|         "//packages/platform-browser-dynamic/testing", | ||||
|  | ||||
| @ -33,6 +33,7 @@ ng_package( | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler-cli/test:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|  | ||||
| @ -38,7 +38,9 @@ ng_package( | ||||
|     ], | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = ["//visibility:private"], | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|     ], | ||||
|     deps = [ | ||||
|         ":platform-server", | ||||
|         "//packages/platform-server/testing", | ||||
|  | ||||
| @ -33,6 +33,7 @@ ng_package( | ||||
|     # Do not add more to this list. | ||||
|     # Dependencies on the full npm_package cause long re-builds. | ||||
|     visibility = [ | ||||
|         "//packages/compiler-cli/integrationtest:__pkg__", | ||||
|         "//packages/compiler-cli/test:__pkg__", | ||||
|         "//packages/compiler-cli/test/transformers:__pkg__", | ||||
|     ], | ||||
|  | ||||
| @ -1,73 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| set -u -e -o pipefail | ||||
| 
 | ||||
| # npm 5 symlinks from local file installations rather than copying files, but | ||||
| # webpack will not follow the symlinks. | ||||
| # We prefer to emulate how a user will install angular, so we `npm pack` the | ||||
| # packages, then install them from the resulting .tgz files later. | ||||
| ANGULAR_PKGS=$(npm pack dist/packages-dist/{common,forms,core,compiler,compiler-cli,platform-{browser,server},platform-browser-dynamic,router,http,animations} | awk "{ printf \"$PWD/\"; print }") | ||||
| 
 | ||||
| 
 | ||||
| PKGS=( | ||||
|   $PWD/node_modules/typescript | ||||
|   $PWD/node_modules/reflect-metadata | ||||
|   $PWD/node_modules/rxjs | ||||
|   $PWD/node_modules/zone.js | ||||
|   @types/{node@6.0.38,jasmine@2.2.33} | ||||
|   jasmine@2.4.1 | ||||
|   webpack@2.1.0-beta.21 | ||||
|   source-map-loader@0.2.0 | ||||
|   @angular/{material,cdk}@2.0.0-beta.10 | ||||
| ) | ||||
| 
 | ||||
| TMPDIR=${TMPDIR:-.} | ||||
| readonly TMP=$TMPDIR/e2e_test.$(date +%s) | ||||
| mkdir -p $TMP | ||||
| cp -R -v packages/compiler-cli/integrationtest/* $TMP | ||||
| cp -R -v modules/benchmarks $TMP | ||||
| # Try to use the same versions as angular, in particular, this will | ||||
| # cause us to install the same rxjs version. | ||||
| cp -v package.json $TMP | ||||
| 
 | ||||
| # run in subshell to avoid polluting cwd | ||||
| ( | ||||
|   cd $TMP | ||||
|   set -ex -o pipefail | ||||
|   npm install ${PKGS[*]} | ||||
|   npm install ${ANGULAR_PKGS[*]} | ||||
| 
 | ||||
|   ./node_modules/.bin/tsc --version | ||||
|   # Compile the compiler-cli third_party simulation. | ||||
|   # Use ngc-wrapped directly so we don't produce *.ngfactory.ts files! | ||||
| 
 | ||||
|   # Compile the compiler-cli integration tests | ||||
|   # TODO(vicb): restore the test for .xtb | ||||
|   #./node_modules/.bin/ngc -p tsconfig-build.json --i18nFile=src/messages.fi.xtb --locale=fi --i18nFormat=xtb | ||||
| 
 | ||||
|   # Generate the metadata for the third-party modules | ||||
|   ./node_modules/.bin/ngc -p third_party_src/tsconfig-build.json | ||||
| 
 | ||||
|   # Generate the the bundle modules | ||||
|   ./node_modules/.bin/ngc -p flat_module/tsconfig-build.json | ||||
| 
 | ||||
|   # Copy the html files from source to the emitted output | ||||
|   cp flat_module/src/*.html node_modules/flat_module/src | ||||
| 
 | ||||
|   ./node_modules/.bin/ngc -p tsconfig-build.json --i18nFile=src/messages.fi.xlf --locale=fi --i18nFormat=xlf | ||||
| 
 | ||||
|   ./node_modules/.bin/ng-xi18n -p tsconfig-xi18n.json --i18nFormat=xlf --locale=fr | ||||
|   ./node_modules/.bin/ng-xi18n -p tsconfig-xi18n.json --i18nFormat=xlf2 --outFile=messages.xliff2.xlf | ||||
|   ./node_modules/.bin/ng-xi18n -p tsconfig-xi18n.json --i18nFormat=xmb --outFile=custom_file.xmb | ||||
| 
 | ||||
|   node test/test_ngtools_api.js | ||||
| 
 | ||||
|   ./node_modules/.bin/jasmine init | ||||
|   # Run compiler-cli integration tests in node | ||||
|   ./node_modules/.bin/webpack ./webpack.config.js | ||||
|   ./node_modules/.bin/jasmine ./all_spec.js | ||||
| 
 | ||||
|   # Compile again with a differently named tsconfig file | ||||
|   mv tsconfig-build.json othername.json | ||||
|   ./node_modules/.bin/ngc -p othername.json | ||||
| ) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user