Skip to content

Commit

Permalink
fix(examples): fix jest example on windows
Browse files Browse the repository at this point in the history
  • Loading branch information
Lukas Holzer committed Nov 27, 2020
1 parent 8e76536 commit b3c012a
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 6 deletions.
6 changes: 6 additions & 0 deletions examples/jest/.bazelrc
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
import %workspace%/../../common.bazelrc

# jest relies on the runfiles generation to find the correct files.
# To work on windows we have to specify this flags.
build --enable_runfiles
run --enable_runfiles
test --enable_runfiles
4 changes: 0 additions & 4 deletions examples/jest/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ jest_test(
] + glob(["__snapshots__/*.snap"]),
jest_config = ":jest.config.js",
tags = [
# Need to set the pwd to avoid jest needing a runfiles helper
# Windows users with permissions can use --enable_runfiles
# to make this test work
"no-bazelci-windows",
# TODO: why does this fail almost all the time, but pass on local Mac?
"no-bazelci-mac",
],
Expand Down
11 changes: 11 additions & 0 deletions examples/jest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ This example shows how you might use the Jest testing framework

It has a utility macro in `jest.bzl` which makes a more ergonomic API for calling the `jest_test` rule in `@npm//jest-cli:index.bzl`. We suggest copying that to your repo.

## Running on Windows

To make the tests running on windows as well you have to add the `--enable_runfiles` flag to your `.bazelrc`.
This requires running under elevated privileges (Admin rights), Windows 10 Creators Update (1703) or later system version, and enabling developer mode.

```
build --enable_runfiles
run --enable_runfiles
test --enable_runfiles
```

# Jest typescript example

Under `ts/` there's an example of using jest with typescript directly with generated rule from `@npm//jest-cli:index.bzl`
3 changes: 3 additions & 0 deletions internal/common/windows_utils.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ if "%RUNFILES_MANIFEST_ONLY%" neq "1" (
set %~2=%~1
exit /b 0
)
if exist "%RUNFILES_DIR%" (
set RUNFILES_MANIFEST_FILE=%RUNFILES_DIR%_manifest
)
if "%RUNFILES_MANIFEST_FILE%" equ "" (
set RUNFILES_MANIFEST_FILE=%~f0.runfiles\MANIFEST
)
Expand Down
8 changes: 6 additions & 2 deletions internal/node/launcher.sh
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,18 @@ fi

# Export the location of the runfiles helpers script
export BAZEL_NODE_RUNFILES_HELPER=$(rlocation "TEMPLATED_runfiles_helper_script")
if [[ "${BAZEL_NODE_RUNFILES_HELPER}" != /* ]] && [[ ! "${BAZEL_NODE_RUNFILES_HELPER}" =~ ^[A-Z]:[\\/] ]]; then
# Paths can be with lower and upper case on windows because of the msys64 package in the powershell
# https://regex101.com/r/c0Gjn8/1/
if [[ "${BAZEL_NODE_RUNFILES_HELPER}" != /* ]] && [[ ! "${BAZEL_NODE_RUNFILES_HELPER}" =~ ^[A-Za-z]:[\/\\] ]]; then
export BAZEL_NODE_RUNFILES_HELPER=$(pwd)/${BAZEL_NODE_RUNFILES_HELPER}
fi

# Export the location of the require patch script as it can be used to bootstrap
# node require patch if needed
export BAZEL_NODE_PATCH_REQUIRE=$(rlocation "TEMPLATED_require_patch_script")
if [[ "${BAZEL_NODE_PATCH_REQUIRE}" != /* ]] && [[ ! "${BAZEL_NODE_PATCH_REQUIRE}" =~ ^[A-Z]:[\\/] ]]; then
# Paths can be with lower and upper case on windows because of the msys64 package in the powershell
# https://regex101.com/r/c0Gjn8/1/
if [[ "${BAZEL_NODE_PATCH_REQUIRE}" != /* ]] && [[ ! "${BAZEL_NODE_PATCH_REQUIRE}" =~ ^[A-Za-z]:[\/\\] ]]; then
export BAZEL_NODE_PATCH_REQUIRE=$(pwd)/${BAZEL_NODE_PATCH_REQUIRE}
fi

Expand Down

0 comments on commit b3c012a

Please sign in to comment.