diff --git a/tools/bazel/jasmine_test.bzl b/tools/bazel/jasmine_test.bzl new file mode 100644 index 00000000000..73ffc8e3eb5 --- /dev/null +++ b/tools/bazel/jasmine_test.bzl @@ -0,0 +1,34 @@ +load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") + +def jasmine_test(name, data = [], setup_node_bootstrap = False, **kwargs): + # Create relative path to root, from current package dir. Necessary as + # we change the `chdir` below to the package directory. + relative_to_root = "/".join([".."] * len(native.package_name().split("/"))) + + extra_data = [] + fixed_args = [] + + if setup_node_bootstrap: + extra_data.append("//tools/testing:node_rjs") + fixed_args.append("--require=%s/tools/testing/node_tests.init.mjs" % relative_to_root) + + _jasmine_test( + name = name, + node_modules = "//:node_modules", + chdir = native.package_name(), + fixed_args = [ + "--require=%s/node_modules/source-map-support/register.js" % relative_to_root, + # Escape so that the `js_binary` launcher triggers Bash expansion. + "'**/*+(.|_)spec.js'", + "'**/*+(.|_)spec.mjs'", + "'**/*+(.|_)spec.cjs'", + ] + fixed_args, + data = extra_data + data + [ + "//packages:package_json", + "//packages:tsconfig_build", + "//tools/bazel/node_loader", + "//:node_modules/source-map-support", + ], + node_options = ["--import", "%s/tools/bazel/node_loader/index.mjs" % relative_to_root], + **kwargs + ) diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl index 14d07812017..35b81d243e8 100644 --- a/tools/defaults2.bzl +++ b/tools/defaults2.bzl @@ -1,7 +1,7 @@ -load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package") load("@aspect_rules_ts//ts:defs.bzl", _ts_config = "ts_config") load("@rules_angular//src/ng_project:index.bzl", _ng_project = "ng_project") +load("//tools/bazel:jasmine_test.bzl", _jasmine_test = "jasmine_test") load("//tools/bazel:module_name.bzl", "compute_module_name") load("//tools/bazel:ng_package.bzl", _ng_package = "ng_package") load("//tools/bazel:ts_project_interop.bzl", _ts_project = "ts_project") @@ -9,6 +9,7 @@ load("//tools/bazel:ts_project_interop.bzl", _ts_project = "ts_project") npm_package = _npm_package ts_config = _ts_config ng_package = _ng_package +jasmine_test = _jasmine_test def _determine_tsconfig(testonly): if native.package_name().startswith("packages/compiler-cli"): @@ -86,24 +87,3 @@ def ng_project( tsconfig = tsconfig, **kwargs ) - -def jasmine_test(name, data = [], args = [], **kwargs): - # Create relative path to root, from current package dir. Necessary as - # we change the `chdir` below to the package directory. - relative_to_root = "/".join([".."] * len(native.package_name().split("/"))) - - _jasmine_test( - name = name, - node_modules = "//:node_modules", - chdir = native.package_name(), - fixed_args = [ - "--require=%s/node_modules/source-map-support/register.js" % relative_to_root, - "**/*spec.js", - "**/*spec.mjs", - "**/*spec.cjs", - ] + args, - data = data + [ - "//:node_modules/source-map-support", - ], - **kwargs - )