Fix UNIX linker detection (was erroneously disabling ld.gold)
Adds back a compiler test empty .cc file. Seems to be an omission in https://github.com/bazelbuild/bazel/commit/65cda4f219e564ccb190b2992151658dfae9904
The _is_gold_supported check in unix_cc_configure.bzl always fails without this change, since the file it's checking with isn't created. Looks like there may be other effects through _add_option_if_supported, although I only noticed because apparently I have written linker-specific code.
Closes #3484.
PiperOrigin-RevId: 163832465
diff --git a/src/java_tools/junitrunner/javatests/com/google/testing/junit/junit4/runner/RegExTestCaseFilterTest.java b/src/java_tools/junitrunner/javatests/com/google/testing/junit/junit4/runner/RegExTestCaseFilterTest.java
new file mode 100644
index 0000000..bef5957
--- /dev/null
+++ b/src/java_tools/junitrunner/javatests/com/google/testing/junit/junit4/runner/RegExTestCaseFilterTest.java
@@ -0,0 +1,127 @@
+// Copyright 2010 The Bazel Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.testing.junit.junit4.runner;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import java.util.regex.Pattern;
+import org.junit.Test;
+import org.junit.runner.Description;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Tests for {@link RegExTestCaseFilter}.
+ */
+@RunWith(JUnit4.class)
+public class RegExTestCaseFilterTest {
+
+ @Test
+ public void testIncludesSuites() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("doNotMatch");
+ assertThat(filter.shouldRun(createSuiteDescription("suite"))).isTrue();
+ }
+
+ private Description createSuiteDescription(String name) {
+ Description suite = Description.createSuiteDescription(name);
+ suite.addChild(Description.createTestDescription(Object.class, "child"));
+ return suite;
+ }
+
+ @Test
+ public void testIncludesMatchingTestByFullNameQuotedRegex() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include(
+ Pattern.quote("java.lang.Object#nameToMatch"));
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingTestByFullNameRegex() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("^java.lang.Object#nameToMatch$");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingTestBySimpleClassNameAndMethodName() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("Object#nameToMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingTestWithNullMethodName() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("java.lang.Object$");
+ assertThat(filter.shouldRun(Description.createSuiteDescription(Object.class))).isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingTestWithUnexpectedNameFormat() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include(
+ Pattern.quote("java.lang.Object.hashCode()"));
+ assertThat(filter.shouldRun(Description.createSuiteDescription("java.lang.Object.hashCode()")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingTestByTestMethodName() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("nameToMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testExcludesNonmatchingTest() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("doNotMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isFalse();
+ }
+
+ @Test
+ public void testFilterExcludeNonmatchingTest() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.exclude("nameToMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isFalse();
+ }
+
+ @Test
+ public void testIncludesEmptyString() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingByCaseRegex() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("[Nn]ameToMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingByEscapedRegex() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("java\\.lang\\.Object#nameToMatch");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isTrue();
+ }
+
+ @Test
+ public void testIncludesMatchingByIncorrectCase() {
+ RegExTestCaseFilter filter = RegExTestCaseFilter.include("NAMETOMATCH");
+ assertThat(filter.shouldRun(Description.createTestDescription(Object.class, "nameToMatch")))
+ .isFalse();
+ }
+}
diff --git a/tools/cpp/unix_cc_configure.bzl b/tools/cpp/unix_cc_configure.bzl
index fbbbdf5..14b0780 100644
--- a/tools/cpp/unix_cc_configure.bzl
+++ b/tools/cpp/unix_cc_configure.bzl
@@ -353,6 +353,7 @@
def configure_unix_toolchain(repository_ctx, cpu_value):
"""Configure C++ toolchain on Unix platforms."""
+ repository_ctx.file("tools/cpp/empty.cc", "int main() {}")
darwin = cpu_value == "darwin"
cc = find_cc(repository_ctx)
tool_paths = _get_tool_paths(repository_ctx, darwin,