aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-08-14 08:29:29 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-14 08:31:03 -0700
commit9a933772e87dfcf684590eb74eee9970e8b66669 (patch)
treee1aa9f9bd258af2415b3659e05f6db7fbac0f9de /src
parent4d57f86c3df2c36763cf9cf92b8cfd206a7153b6 (diff)
test-wrapper: add empty impl + Bazel flag
This commit adds: - the skeleton implementation of the Windows native test wrapper - a depenency on the native test wrapper from test rules, through the new $test_wrapper rule attribute - the --windows_native_test_wrapper Bazel flag, which is currently a no-op See https://github.com/bazelbuild/bazel/issues/5508 Change-Id: I8df95c8ce8bab53c51c257698ec95416065a836e Closes #5854. Change-Id: I2ffc78bceec5dd867af775b5878f105fa87c3dba PiperOrigin-RevId: 208650699
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java21
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java4
-rw-r--r--src/test/shell/bazel/testdata/embedded_tools_srcs_deps1
5 files changed, 35 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 2bd7daf1b9..d75f64a566 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -166,6 +166,11 @@ public class BaseRuleClasses {
.add(attr("args", STRING_LIST))
// Input files for every test action
.add(
+ attr("$test_wrapper", LABEL)
+ .cfg(HostTransition.INSTANCE)
+ .singleArtifact()
+ .value(env.getToolsLabel("//tools/test:test_wrapper")))
+ .add(
attr("$test_runtime", LABEL_LIST)
.cfg(HostTransition.INSTANCE)
.value(ImmutableList.of(env.getToolsLabel("//tools/test:runtime"))))
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index fffbe7a5ea..4a99825d6d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -166,6 +166,11 @@ public class SkylarkRuleClassFunctions implements SkylarkRuleFunctionsApi<Artifa
.add(attr("args", STRING_LIST))
// Input files for every test action
.add(
+ attr("$test_wrapper", LABEL)
+ .cfg(HostTransition.INSTANCE)
+ .singleArtifact()
+ .value(labelCache.getUnchecked(toolsRepository + "//tools/test:test_wrapper")))
+ .add(
attr("$test_runtime", LABEL_LIST)
.cfg(HostTransition.INSTANCE)
.value(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
index 0d2f85b1cb..fe60cc1f39 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
@@ -216,6 +216,23 @@ public class TestConfiguration extends Fragment {
)
public Label coverageReportGenerator;
+ @Option(
+ name = "windows_native_test_wrapper",
+ // Undocumented: this features is under development and not yet ready for production use.
+ // We define the flag to be able to test the feature.
+ // Design:
+ // https://github.com/laszlocsomor/proposals/blob/win-test-runner/designs/2018-07-18-windows-native-test-runner.md
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ // Affects loading and analysis: this flag affects which target Bazel loads and creates test
+ // actions with on Windows.
+ effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
+ defaultValue = "false",
+ help =
+ "Do not use yet, this flag's functionality is not yet implemented. "
+ + "(On Windows: if true, uses the C++ test wrapper to run tests, otherwise uses "
+ + "tools/test/test-setup.sh as on other platforms. On other platforms: no-op.)")
+ public boolean windowsNativeTestWrapper;
+
@Override
public Map<String, Set<Label>> getDefaultsLabels() {
return ImmutableMap.<String, Set<Label>>of(
@@ -298,6 +315,10 @@ public class TestConfiguration extends Fragment {
return options.coverageReportGenerator;
}
+ public boolean isUsingWindowsNativeTestWrapper() {
+ return options.windowsNativeTestWrapper;
+ }
+
/**
* @return number of times the given test should run. If the test doesn't match any of the
* filters, runs it once.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 801ac17eb7..614a355f2f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -124,8 +124,10 @@ public final class BazelAnalysisMock extends AnalysisMock {
config.create(
"/bazel_tools_workspace/tools/genrule/BUILD", "exports_files(['genrule-setup.sh'])");
- config.create("/bazel_tools_workspace/tools/test/BUILD",
+ config.create(
+ "/bazel_tools_workspace/tools/test/BUILD",
"filegroup(name = 'runtime', srcs = ['test-setup.sh', 'test-xml-generator.sh'])",
+ "filegroup(name = 'test_wrapper', srcs = ['test_wrapper_bin'])",
"filegroup(name = 'test_setup', srcs = ['test-setup.sh'])",
"filegroup(name = 'test_xml_generator', srcs = ['test-xml-generator.sh'])",
"filegroup(name = 'collect_coverage', srcs = ['collect_coverage.sh'])",
diff --git a/src/test/shell/bazel/testdata/embedded_tools_srcs_deps b/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
index c508152b00..5f373788af 100644
--- a/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
+++ b/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
@@ -3,6 +3,7 @@
@com_google_protobuf//:protobuf
@com_google_protobuf//:protobuf_lite
@com_google_protobuf//:js_embed
+//tools/test:test_wrapper_bin
//third_party/ijar:zipper
//third_party/ijar:ijar
//third_party/ijar:zip