xref: /aosp_15_r20/external/skia/bazel/karma/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerload("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerpackage(
4*c8dee2aaSAndroid Build Coastguard Worker    default_applicable_licenses = ["//:license"],
5*c8dee2aaSAndroid Build Coastguard Worker)
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Workerlicenses(["notice"])
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Worker# This is the easiest way to make sure we have a karma binary and all
10*c8dee2aaSAndroid Build Coastguard Worker# the plugins loaded into the node_modules folder in
11*c8dee2aaSAndroid Build Coastguard Worker#   $SANDBOX_EXEC_ROOT/node_modules
12*c8dee2aaSAndroid Build Coastguard Worker# where the karma binary is invoked from. Other attempts to do this
13*c8dee2aaSAndroid Build Coastguard Worker# involving DefaultInfo [1] and depsets [2] didn't quite work because
14*c8dee2aaSAndroid Build Coastguard Worker# the transitive dependencies appear to have been loaded in
15*c8dee2aaSAndroid Build Coastguard Worker#   $SANDBOX_EXEC_ROOT/bazel-out/k8-opt/bin/modules/canvaskit/canvaskit_js_tests.runfiles/npm/node_modules/
16*c8dee2aaSAndroid Build Coastguard Worker# instead, which is not where karma could find them. (Putting transitive
17*c8dee2aaSAndroid Build Coastguard Worker# deps under bazel-out works for C++ because we can add to the include
18*c8dee2aaSAndroid Build Coastguard Worker# search directories (via --include-directory or -I), but it is not clear
19*c8dee2aaSAndroid Build Coastguard Worker# how to expand karma's search path like that.
20*c8dee2aaSAndroid Build Coastguard Worker#
21*c8dee2aaSAndroid Build Coastguard Worker# Below basically says "We have a karma binary which needs these plugins to run"
22*c8dee2aaSAndroid Build Coastguard Worker# and have the karma_test macro use this as the executable instead of karma
23*c8dee2aaSAndroid Build Coastguard Worker# directly. This must be used in conjunction with listing the plugins in the
24*c8dee2aaSAndroid Build Coastguard Worker# karma configuration file (handled by karma_test).
25*c8dee2aaSAndroid Build Coastguard Workernodejs_binary(
26*c8dee2aaSAndroid Build Coastguard Worker    name = "karma_with_plugins",
27*c8dee2aaSAndroid Build Coastguard Worker    data = [
28*c8dee2aaSAndroid Build Coastguard Worker        "@npm//jasmine-core",
29*c8dee2aaSAndroid Build Coastguard Worker        "@npm//karma",
30*c8dee2aaSAndroid Build Coastguard Worker        "@npm//karma-chrome-launcher",
31*c8dee2aaSAndroid Build Coastguard Worker        "@npm//karma-firefox-launcher",
32*c8dee2aaSAndroid Build Coastguard Worker        "@npm//karma-jasmine",
33*c8dee2aaSAndroid Build Coastguard Worker    ],
34*c8dee2aaSAndroid Build Coastguard Worker    entry_point = {"@npm//:node_modules/karma": "bin/karma"},
35*c8dee2aaSAndroid Build Coastguard Worker    visibility = ["//modules:__subpackages__"],
36*c8dee2aaSAndroid Build Coastguard Worker)
37