mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
9fc45a62e6
The integration test rule now always executes tests in a directory outside of the execroot. This ensures a more hermetic test environment on platforms without a sandbox, or when tests are run with `tags: local`. As part of this change, an issue with Yarn 1.x. and `nodejs_binary` unveiled. Yarn 1.x. is resolved properly using the tool mapping but when Yarn inside Yarn is invoked (e.g. using `package.json` scripts), then the second nested Yarn invocation fails due to an unknown path. This happens because Yarn in the original invocation creates another directory in the `/tmp` directory and modifies the `PATH` so that the same `yarn` can be invoked again. This makes sense conceptually but breaks in our case because the Yarn Bash script put into the `/tmp` directory tries to resolve our vendored Yarn script relatively (which is the wrong spot here). It worked previously in the execroot because `nodejs_binary` invoked Yarn through `<external>/../node.sh <absolute-path-to-yarn-cjs-script>`, but outside the execroot it invoked Yarn using a relative path (which then ended up being preserved in the Yarn temporary directory). We can fix this by updating the Bazel NodeJS repository which seems to have coincidentally have a fix for the path resolution. See: https://github.com/bazelbuild/rules_nodejs/pull/3493#event-6870301735. PR Close #46778
6.2 KiB
6.2 KiB