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