mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
ea61ec2562
Adds support for TypeScript 4.4. High-level overview of the changes made in this PR: * Bumps the various packages to `typescript@4.4.2` and `tslib@2.3.0`. * The `useUnknownInCatchVariables` compiler option has been disabled so that we don't have to cast error objects explicitly everywhere. * TS now passes in a third argument to the `__spreadArray` call inside child class constructors. I had to update a couple of places in the runtime and ngcc to be able to pick up the calls correctly. * TS now generates code like `(0, foo)(arg1, arg2)` for imported function calls. I had to update a few of our tests to account for it. See https://github.com/microsoft/TypeScript/pull/44624. * Our `ngtsc` test setup calls the private `matchFiles` function from TS. I had to update our usage, because a new parameter was added. * There was one place where we were setting the readonly `hasTrailingComma` property. I updated the usage to pass in the value when constructing the object instead. * Some browser types were updated which meant that I had to resolve some trivial type errors. * The downlevel decorators tranform was running into an issue where the Closure synthetic comments were being emitted twice. I've worked around it by recreating the class declaration node instead of cloning it. PR Close #43281
127 lines
5.1 KiB
Python
127 lines
5.1 KiB
Python
load(":angular_integration_test.bzl", "angular_integration_test")
|
|
|
|
# Some integration ports must be managed manually to be unique and in other
|
|
# cases the tests are able to select a random free port.
|
|
#
|
|
# Where `ng e2e` is used we pass `ng e2e --port 0` which prompts the cli
|
|
# to select a random free port for the e2e test. The protractor.conf is
|
|
# automatically updated to use this port.
|
|
#
|
|
# Karma automatically finds a free port so no effort is needed there.
|
|
#
|
|
# The manually configured ports are as follows:
|
|
#
|
|
# TEST PORT CONFIGURATION
|
|
# ==== ==== =============
|
|
# dynamic-compiler 4201 /e2e/browser.config.json: "port": 4201
|
|
# hello_world__closure 4202 /e2e/browser.config.json: "port": 4202
|
|
# hello_world__systemjs_umd 4203 /bs-config.e2e.json: "port": 4203
|
|
# i18n 4204 /e2e/browser.config.json: "port": 4204
|
|
# ng_elements 4205 /e2e/browser.config.json: "port": 4205
|
|
# platform-server 4206 /src/server.ts: app.listen(4206,...
|
|
|
|
# Map of integration tests to tags.
|
|
# A subset of these tests fail or are not meant to be run with ivy bundles. These are tagged
|
|
# "no-ivy-aot".
|
|
INTEGRATION_TESTS = {
|
|
"bazel": {
|
|
"tags": [
|
|
# Bazel-in-bazel tests are resource intensive and should not be over-parallized
|
|
# as they will compete for the resources of other parallel tests slowing
|
|
# everything down. Ask Bazel to allocate multiple CPUs for these tests with "cpu:n" tag.
|
|
"cpu:3",
|
|
"no-ivy-aot",
|
|
],
|
|
},
|
|
"cli-elements-universal": {
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"cli-hello-world": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"cli-hello-world-ivy-compat": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"cli-hello-world-ivy-i18n": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"cli-hello-world-ivy-minimal": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"cli-hello-world-lazy": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"dynamic-compiler": {"tags": ["no-ivy-aot"]},
|
|
"forms": {
|
|
"commands": "payload_size_tracking",
|
|
"tags": ["ivy-only"],
|
|
},
|
|
"hello_world__closure": {
|
|
# TODO: Re-enable the payload_size_tracking command:
|
|
# We should define ngDevMode to false in Closure, but --define only works in the global scope.
|
|
# With ngDevMode not being set to false, this size tracking test provides little value but a lot of
|
|
# headache to continue updating the size.
|
|
"tags": ["no-ivy-aot"],
|
|
},
|
|
"hello_world__systemjs_umd": {
|
|
# Special case for `hello_world__systemjs_umd` test as we want to pin
|
|
# `systems` at version 0.20.2 and not link to the root @npm//systemjs
|
|
# which is stuck at 0.18.10 and can't be updated to 0.20.2 without
|
|
# breaking the legacy saucelabs job.
|
|
"pinned_npm_packages": ["systemjs"],
|
|
},
|
|
"i18n": {"tags": ["no-ivy-aot"]},
|
|
"injectable-def": {"tags": ["no-ivy-aot"]},
|
|
"ivy-i18n": {"tags": ["ivy-only"]},
|
|
"trusted-types": {"tags": ["ivy-only"]},
|
|
"ng_elements": {"tags": ["no-ivy-aot"]},
|
|
"ng_elements_schematics": {"tags": ["ivy-only"]},
|
|
"ng_update": {},
|
|
"ng_update_migrations": {"tags": ["no-ivy-aot"]},
|
|
"ngcc": {"tags": ["no-ivy-aot"]},
|
|
"platform-server": {"tags": ["no-ivy-aot"]},
|
|
"service-worker-schema": {},
|
|
"side-effects": {"tags": ["no-ivy-aot"]},
|
|
"terser": {},
|
|
"typings_test_rxjs7": {},
|
|
"typings_test_ts41": {
|
|
# Special case for `typings_test_ts41` test as we want to pin
|
|
# `typescript` at version 4.1.x for that test and not link to the
|
|
# root @npm//typescript package.
|
|
"pinned_npm_packages": ["typescript"],
|
|
},
|
|
"typings_test_ts42": {
|
|
# Special case for `typings_test_ts42` test as we want to pin
|
|
# `typescript` at version 4.2.x for that test and not link to the
|
|
# root @npm//typescript package.
|
|
"pinned_npm_packages": ["typescript"],
|
|
},
|
|
"typings_test_ts43": {
|
|
# Special case for `typings_test_ts43` test as we want to pin
|
|
# `typescript` at version 4.3.x for that test and not link to the
|
|
# root @npm//typescript package.
|
|
"pinned_npm_packages": ["typescript"],
|
|
},
|
|
"typings_test_ts44": {
|
|
# Special case for `typings_test_ts44` test as we want to pin
|
|
# `typescript` at version 4.4.x for that test and not link to the
|
|
# root @npm//typescript package.
|
|
"pinned_npm_packages": ["typescript"],
|
|
},
|
|
}
|
|
|
|
[
|
|
angular_integration_test(
|
|
name = test_folder,
|
|
commands = INTEGRATION_TESTS[test_folder].get("commands", "default"),
|
|
pinned_npm_packages = INTEGRATION_TESTS[test_folder].get("pinned_npm_packages", []),
|
|
tags = INTEGRATION_TESTS[test_folder].get("tags", []),
|
|
)
|
|
for test_folder in INTEGRATION_TESTS
|
|
]
|