build(core): add bazel test targets for core (#21053)
- Add tests target for `test`, `test_node_only` and `test_web` in `core` package. - Created a `_testing_init` pseudo package where bootstrap code for tests is kept. - Moved `source_map_util` from `test` to `testing` so to prevent circular dependency. - Removed `visibility:public` for testing `BUILD` packages. PR Close #21053
This commit is contained in:
parent
f3fc74ab67
commit
47bcb5bc35
14
BUILD.bazel
14
BUILD.bazel
|
@ -38,3 +38,17 @@ filegroup(
|
|||
"*.d.ts",
|
||||
]]),
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "angular_bootstrap_scripts",
|
||||
# do not sort
|
||||
srcs = [
|
||||
"//:node_modules/reflect-metadata/Reflect.js",
|
||||
"//:node_modules/zone.js/dist/zone.js",
|
||||
"//:node_modules/zone.js/dist/async-test.js",
|
||||
"//:node_modules/zone.js/dist/sync-test.js",
|
||||
"//:node_modules/zone.js/dist/fake-async-test.js",
|
||||
"//:node_modules/zone.js/dist/proxy.js",
|
||||
"//:node_modules/zone.js/dist/jasmine-patch.js",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -16,12 +16,12 @@ node_repositories(package_json = ["//:package.json"])
|
|||
git_repository(
|
||||
name = "build_bazel_rules_typescript",
|
||||
remote = "https://github.com/bazelbuild/rules_typescript.git",
|
||||
tag = "0.6.0",
|
||||
tag = "0.7.1",
|
||||
)
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_repositories")
|
||||
load("@build_bazel_rules_typescript//:setup.bzl", "ts_setup_workspace")
|
||||
|
||||
ts_repositories()
|
||||
ts_setup_workspace()
|
||||
|
||||
local_repository(
|
||||
name = "angular",
|
||||
|
|
|
@ -53,6 +53,7 @@ module.exports = function(config) {
|
|||
],
|
||||
|
||||
exclude: [
|
||||
'dist/all/@angular/_testing_init/**',
|
||||
'dist/all/@angular/**/e2e_test/**',
|
||||
'dist/all/@angular/**/*node_only_spec.js',
|
||||
'dist/all/@angular/benchpress/**',
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
|
||||
ts_library(
|
||||
name = "browser",
|
||||
testonly = 1,
|
||||
srcs = ["init_browser_spec.ts"],
|
||||
tsconfig = "//packages:tsconfig",
|
||||
deps = [
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-browser-dynamic/testing",
|
||||
"//packages/platform-browser/animations",
|
||||
],
|
||||
)
|
||||
|
||||
ts_library(
|
||||
name = "node",
|
||||
testonly = 1,
|
||||
srcs = ["init_node_spec.ts"],
|
||||
tsconfig = "//packages:tsconfig",
|
||||
deps = [
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server/testing",
|
||||
],
|
||||
)
|
|
@ -0,0 +1,14 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';
|
||||
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
|
||||
|
||||
TestBed.initTestEnvironment(
|
||||
[BrowserDynamicTestingModule, NoopAnimationsModule], platformBrowserDynamicTesting());
|
|
@ -0,0 +1,41 @@
|
|||
/**
|
||||
* @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
|
||||
*/
|
||||
|
||||
import 'zone.js/dist/zone-node.js';
|
||||
import 'zone.js/dist/long-stack-trace-zone.js';
|
||||
import 'zone.js/dist/proxy.js';
|
||||
import 'zone.js/dist/sync-test.js';
|
||||
import 'zone.js/dist/async-test.js';
|
||||
import 'zone.js/dist/fake-async-test.js';
|
||||
import 'reflect-metadata/Reflect';
|
||||
|
||||
// This hack is needed to get jasmine, node and zone working inside bazel.
|
||||
// 1) we load `jasmine-core` which contains the ENV: it, describe etc...
|
||||
const jasmineCore: any = require('jasmine-core');
|
||||
// 2) We create an instance of `jasmine` ENV.
|
||||
const patchedJasmine = jasmineCore.boot(jasmineCore);
|
||||
// 3) Save the `jasmine` into global so that `zone.js/dist/jasmine-patch.js` can get a hold of it to
|
||||
// patch it.
|
||||
(global as any)['jasmine'] = patchedJasmine;
|
||||
// 4) Change the `jasmine-core` to make sure that all subsequent jasmine's have the same ENV,
|
||||
// otherwise the patch will not work.
|
||||
// This is needed since Bazel creates a new instance of jasmine and it's ENV and we want to make
|
||||
// sure it gets the same one.
|
||||
jasmineCore.boot = function() {
|
||||
return patchedJasmine;
|
||||
};
|
||||
// 5) Patch jasmine ENV with code which understands ProxyZone.
|
||||
import 'zone.js/dist/jasmine-patch.js';
|
||||
|
||||
// Init TestBed
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing/src/server';
|
||||
import {DominoAdapter} from '@angular/platform-server/src/domino_adapter';
|
||||
|
||||
TestBed.initTestEnvironment(ServerTestingModule, platformServerTesting());
|
||||
DominoAdapter.makeCurrent();
|
|
@ -1,5 +1,3 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
|
||||
ts_library(
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
|
||||
ts_library(
|
||||
|
|
|
@ -76,4 +76,5 @@ export * from './style_compiler';
|
|||
export * from './template_parser/template_parser';
|
||||
export {ViewCompiler} from './view_compiler/view_compiler';
|
||||
export {getParseErrors, isSyntaxError, syntaxError, Version} from './util';
|
||||
export {SourceMap} from './output/source_map';
|
||||
// This file only reexports content of the `src` folder. Keep it that way.
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
|
||||
ts_library(
|
||||
|
|
|
@ -9,11 +9,10 @@
|
|||
import {AotSummaryResolver, GeneratedFile, StaticSymbolCache, StaticSymbolResolver, toTypeScript} from '@angular/compiler';
|
||||
import {MetadataBundler} from '@angular/compiler-cli/src/metadata/bundler';
|
||||
import {privateEntriesToIndex} from '@angular/compiler-cli/src/metadata/index_writer';
|
||||
import {extractSourceMap, originalPositionFor} from '@angular/compiler/testing/src/output/source_map_util';
|
||||
import {NodeFlags} from '@angular/core/src/view/index';
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import {extractSourceMap, originalPositionFor} from '../output/source_map_util';
|
||||
|
||||
import {EmittingCompilerHost, MockAotCompilerHost, MockCompilerHost, MockDirectory, MockMetadataBundlerHost, arrayToMockDir, compile, expectNoDiagnostics, settings, setup, toMockFileArray} from './test_util';
|
||||
|
||||
describe('compiler (unbundled Angular)', () => {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '@angular/compiler';
|
||||
import {EmitterVisitorContext} from '@angular/compiler/src/output/abstract_emitter';
|
||||
import {SourceMap} from '@angular/compiler/src/output/source_map';
|
||||
import {extractSourceMap, originalPositionFor} from './source_map_util';
|
||||
import {extractSourceMap, originalPositionFor} from '@angular/compiler/testing/src/output/source_map_util';
|
||||
|
||||
export function main() {
|
||||
describe('AbstractEmitter', () => {
|
||||
|
|
|
@ -13,7 +13,7 @@ import * as o from '@angular/compiler/src/output/output_ast';
|
|||
import {SourceMap} from '@angular/compiler/src/output/source_map';
|
||||
import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '@angular/compiler/src/parse_util';
|
||||
|
||||
import {extractSourceMap, originalPositionFor} from './source_map_util';
|
||||
import {extractSourceMap, originalPositionFor} from '@angular/compiler/testing/src/output/source_map_util';
|
||||
|
||||
const someGenFilePath = 'somePackage/someGenFile';
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import {SourceMap} from '@angular/compiler/src/output/source_map';
|
|||
import {TypeScriptEmitter} from '@angular/compiler/src/output/ts_emitter';
|
||||
import {ParseSourceSpan} from '@angular/compiler/src/parse_util';
|
||||
|
||||
import {extractSourceMap, originalPositionFor} from './source_map_util';
|
||||
import {extractSourceMap, originalPositionFor} from '@angular/compiler/testing/src/output/source_map_util';
|
||||
|
||||
const someGenFilePath = 'somePackage/someGenFile';
|
||||
|
||||
|
|
|
@ -8,5 +8,8 @@ ts_library(
|
|||
srcs = glob(["**/*.ts"]),
|
||||
module_name = "@angular/compiler/testing",
|
||||
tsconfig = "//packages:tsconfig",
|
||||
deps = ["//packages/compiler"],
|
||||
deps = [
|
||||
"//packages:types",
|
||||
"//packages/compiler",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {SourceMap} from '@angular/compiler/src/output/source_map';
|
||||
import {SourceMap} from '@angular/compiler';
|
||||
const b64 = require('base64-js');
|
||||
const SourceMapConsumer = require('source-map').SourceMapConsumer;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library", "ts_web_test")
|
||||
load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test")
|
||||
|
||||
ts_library(
|
||||
|
@ -8,7 +8,10 @@ ts_library(
|
|||
testonly = 1,
|
||||
srcs = glob(
|
||||
["**/*.ts"],
|
||||
exclude = ["render3/**/*.ts"],
|
||||
exclude = [
|
||||
"**/*_node_only_spec.ts",
|
||||
"render3/**/*.ts",
|
||||
],
|
||||
),
|
||||
tsconfig = "//packages:tsconfig",
|
||||
deps = [
|
||||
|
@ -17,7 +20,6 @@ ts_library(
|
|||
"//packages/animations/browser/testing",
|
||||
"//packages/common",
|
||||
"//packages/compiler",
|
||||
"//packages/compiler/test",
|
||||
"//packages/compiler/testing",
|
||||
"//packages/core",
|
||||
"//packages/core/testing",
|
||||
|
@ -25,22 +27,48 @@ ts_library(
|
|||
"//packages/platform-browser-dynamic",
|
||||
"//packages/platform-browser/animations",
|
||||
"//packages/platform-browser/testing",
|
||||
"//packages/platform-server",
|
||||
"//packages/router",
|
||||
"//packages/router/testing",
|
||||
"@rxjs",
|
||||
],
|
||||
)
|
||||
|
||||
# TODO(mhevery): re-enable when passing
|
||||
ts_library(
|
||||
name = "test_node_only_lib",
|
||||
testonly = 1,
|
||||
srcs = glob(["**/*_node_only_spec.ts"]),
|
||||
tsconfig = "//packages:tsconfig",
|
||||
deps = [
|
||||
":test_lib",
|
||||
"//packages/compiler",
|
||||
"//packages/compiler/testing",
|
||||
"//packages/core",
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server/testing",
|
||||
],
|
||||
)
|
||||
|
||||
jasmine_node_test(
|
||||
name = "test",
|
||||
srcs = [],
|
||||
bootstrap = [
|
||||
"zone.js/dist/zone-node.js",
|
||||
],
|
||||
tags = ["manual"],
|
||||
bootstrap = ["angular_src/packages/_testing_init/init_node_spec.js"],
|
||||
deps = [
|
||||
":test_lib",
|
||||
":test_node_only_lib",
|
||||
"//packages/_testing_init:node",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server/testing",
|
||||
],
|
||||
)
|
||||
|
||||
ts_web_test(
|
||||
name = "test_web",
|
||||
bootstrap = [
|
||||
"//:angular_bootstrap_scripts",
|
||||
],
|
||||
# do not sort
|
||||
deps = [
|
||||
"//packages/_testing_init:browser",
|
||||
":test_lib",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
|
||||
load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test")
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ var specFiles: any =
|
|||
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/**',
|
||||
|
|
Loading…
Reference in New Issue