Skip to content

Commit e7eaf34

Browse files
fix(jasmine): transitive specs are no longer added to the test suite (#2576)
1 parent 73a9811 commit e7eaf34

File tree

4 files changed

+40
-5
lines changed

4 files changed

+40
-5
lines changed

packages/jasmine/jasmine_node_test.bzl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ def _js_sources_impl(ctx):
2525
depsets = []
2626
for src in ctx.attr.srcs:
2727
if JSModuleInfo in src:
28-
depsets.append(src[JSModuleInfo].sources)
28+
provider = src[JSModuleInfo]
29+
files = provider.direct_sources if ctx.attr.use_direct_specs else provider.sources
30+
depsets.append(files)
2931
if hasattr(src, "files"):
3032
depsets.append(src.files)
3133
sources = depset(transitive = depsets)
@@ -48,6 +50,7 @@ _js_sources = rule(
4850
"srcs": attr.label_list(
4951
allow_files = True,
5052
),
53+
"use_direct_specs": attr.bool(),
5154
},
5255
outputs = {
5356
"manifest": "%{name}.MF",
@@ -62,6 +65,7 @@ def jasmine_node_test(
6265
expected_exit_code = 0,
6366
tags = [],
6467
config_file = None,
68+
use_direct_specs = None,
6569
# Replaced by pkg_npm with jasmine = "//@bazel/jasmine",
6670
jasmine = "//packages/jasmine",
6771
# Replaced by pkg_npm with jasmine_entry_point = "//:node_modules/@bazel/jasmine/jasmine_runner.js",
@@ -91,6 +95,13 @@ def jasmine_node_test(
9195
9296
See https://jasmine.github.io/setup/nodejs.html#configuration
9397
98+
use_direct_specs: Limits the list of specs added to the execution (test suite) to direct sources.
99+
100+
Note that this is a bug fix opt-in flag, which will be the default
101+
behavior in the next major release.
102+
103+
More info: https://github.com/bazelbuild/rules_nodejs/pull/2576
104+
94105
jasmine: A label providing the `@bazel/jasmine` npm dependency.
95106
jasmine_entry_point: A label providing the `@bazel/jasmine` entry point.
96107
**kwargs: Remaining arguments are passed to the test rule
@@ -100,9 +111,10 @@ def jasmine_node_test(
100111

101112
_js_sources(
102113
name = "%s_js_sources" % name,
103-
srcs = srcs + deps,
114+
srcs = srcs if use_direct_specs else (srcs + deps),
104115
testonly = 1,
105116
tags = tags,
117+
use_direct_specs = use_direct_specs,
106118
)
107119

108120
all_data = data + srcs + deps + [Label(jasmine)]

packages/jasmine/test/BUILD.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load("//:index.bzl", "js_library")
12
load("//internal/common:copy_to_bin.bzl", "copy_to_bin")
23
load("//packages/jasmine:index.bzl", "jasmine_node_test")
34
load("//packages/typescript:index.bzl", "ts_library")
@@ -208,4 +209,18 @@ jasmine_node_test(
208209
jasmine_node_test(
209210
name = "stack_test",
210211
srcs = ["stack.spec.js"],
212+
deps = [":fail_test"],
213+
)
214+
215+
# Verify that transitive specs are not added to the execution
216+
js_library(
217+
name = "lib_with_fail_spec",
218+
srcs = ["fail.spec.js"],
219+
)
220+
221+
jasmine_node_test(
222+
name = "transitive_spec_test",
223+
srcs = ["foo.spec.js"],
224+
use_direct_specs = True,
225+
deps = [":lib_with_fail_spec"],
211226
)

packages/rollup/rollup_bundle.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,10 @@ def _rollup_bundle(ctx):
352352

353353
return [
354354
DefaultInfo(files = outputs_depset),
355-
JSModuleInfo(sources = outputs_depset),
355+
JSModuleInfo(
356+
direct_sources = outputs_depset,
357+
sources = outputs_depset,
358+
),
356359
]
357360

358361
rollup_bundle = rule(

packages/terser/terser_minified.bzl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,14 @@ def _terser(ctx):
187187
progress_message = "Minifying JavaScript %s [terser]" % (outputs[0].short_path),
188188
)
189189

190+
outputs_depset = depset(outputs)
191+
190192
return [
191-
DefaultInfo(files = depset(outputs)),
192-
JSModuleInfo(sources = depset(outputs)),
193+
DefaultInfo(files = outputs_depset),
194+
JSModuleInfo(
195+
direct_sources = outputs_depset,
196+
sources = outputs_depset,
197+
),
193198
]
194199

195200
terser_minified = rule(

0 commit comments

Comments
 (0)