As of version 10, libraries following the APF will no longer contain ESM5 output. Hence, tests in ngcc need to be updated as they currently rely on the release output of `@angular/core`. Additionally, we'd need to support in ngcc that the `module` property of entry-points no longer necessarily refers to `esm5` output, but instead can also target `esm2015`. We currently achieve this by checking the path the `module` property points to. We can do this because as per APF, the folder name is known for the esm2015 output. Long-term for more coverage, we want to sniff the format by looking for known ES2015 constructs in the file `module` refers to. PR Close #36944
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| load("@npm//@babel/cli:index.bzl", "babel")
 | |
| load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
 | |
| 
 | |
| package(default_visibility = ["//visibility:public"])
 | |
| 
 | |
| ts_library(
 | |
|     name = "test_lib",
 | |
|     testonly = True,
 | |
|     srcs = glob(
 | |
|         ["**/*.ts"],
 | |
|         exclude = ["integration/**/*.ts"],
 | |
|     ),
 | |
|     deps = [
 | |
|         "//packages/compiler",
 | |
|         "//packages/compiler-cli/ngcc",
 | |
|         "//packages/compiler-cli/ngcc/test/helpers",
 | |
|         "//packages/compiler-cli/src/ngtsc/diagnostics",
 | |
|         "//packages/compiler-cli/src/ngtsc/file_system",
 | |
|         "//packages/compiler-cli/src/ngtsc/file_system/testing",
 | |
|         "//packages/compiler-cli/src/ngtsc/imports",
 | |
|         "//packages/compiler-cli/src/ngtsc/partial_evaluator",
 | |
|         "//packages/compiler-cli/src/ngtsc/reflection",
 | |
|         "//packages/compiler-cli/src/ngtsc/testing",
 | |
|         "//packages/compiler-cli/src/ngtsc/transform",
 | |
|         "//packages/compiler-cli/src/ngtsc/translator",
 | |
|         "//packages/compiler-cli/test/helpers",
 | |
|         "@npm//@types/convert-source-map",
 | |
|         "@npm//convert-source-map",
 | |
|         "@npm//dependency-graph",
 | |
|         "@npm//magic-string",
 | |
|         "@npm//sourcemap-codec",
 | |
|         "@npm//typescript",
 | |
|         "@npm//yargs",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| jasmine_node_test(
 | |
|     name = "test",
 | |
|     bootstrap = ["//tools/testing:node_no_angular_es5"],
 | |
|     data = [
 | |
|         "//packages/compiler-cli/test/ngtsc/fake_core:npm_package",
 | |
|     ],
 | |
|     deps = [
 | |
|         ":test_lib",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| ts_library(
 | |
|     name = "integration_lib",
 | |
|     testonly = True,
 | |
|     srcs = glob(
 | |
|         ["integration/**/*.ts"],
 | |
|     ),
 | |
|     deps = [
 | |
|         "//packages/compiler-cli/ngcc",
 | |
|         "//packages/compiler-cli/ngcc/test/helpers",
 | |
|         "//packages/compiler-cli/src/ngtsc/file_system",
 | |
|         "//packages/compiler-cli/src/ngtsc/file_system/testing",
 | |
|         "//packages/compiler-cli/src/ngtsc/testing",
 | |
|         "//packages/compiler-cli/test/helpers",
 | |
|         "@npm//rxjs",
 | |
|         "@npm//typescript",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # As of version 10, the release packages do not contain esm2015 output anymore. The ngcc
 | |
| # integration tests intend to test ES5 features though, so we downlevel the flat esm2015
 | |
| # file to ES5 using Babel. We can then link that into the mock file system as if the Angular
 | |
| # core package is still built with previous APF versions where esm5 output was shipped. This
 | |
| # allows us to ensure that ngcc properly processes libraries with esm5 output. **Note**: We are
 | |
| # using Babel instead of `tsc` as TypeScript does not allow us to downlevel the file without
 | |
| # setting the module resolution to either `amd` or `system`. We want to preserve ES modules.
 | |
| babel(
 | |
|     name = "fesm5_angular_core",
 | |
|     outs = ["fesm5_angular_core.js"],
 | |
|     args = [
 | |
|         "$(execpath //packages/core:npm_package)/fesm2015/core.js",
 | |
|         "--presets @babel/preset-env",
 | |
|         "--out-file $(execpath fesm5_angular_core.js)",
 | |
|     ],
 | |
|     data = [
 | |
|         "//packages/core:npm_package",
 | |
|         "@npm//@babel/preset-env",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| jasmine_node_test(
 | |
|     name = "integration",
 | |
|     timeout = "long",
 | |
|     bootstrap = ["//tools/testing:node_no_angular_es5"],
 | |
|     data = [
 | |
|         ":fesm5_angular_core",
 | |
|         "//packages/common:npm_package",
 | |
|         "//packages/core:npm_package",
 | |
|         "@npm//rxjs",
 | |
|     ],
 | |
|     shard_count = 4,
 | |
|     tags = [
 | |
|         # Disabled in AOT mode because we want ngcc to compile non-AOT Angular packages.
 | |
|         "no-ivy-aot",
 | |
|     ],
 | |
|     deps = [
 | |
|         ":integration_lib",
 | |
|         "@npm//canonical-path",
 | |
|         "@npm//convert-source-map",
 | |
|     ],
 | |
| )
 |