aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-14 17:16:00 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-14 17:18:51 -0800
commitbc09735be8868f345a25f9013e7c995d0871a8b4 (patch)
tree00b5aa781e5b8da2b5fc66392d4769db28a779f6
parent9565666426a94dc81f4173e2a60375bde59ce253 (diff)
Fix incorrect warning on negative test lang filter flags.
PiperOrigin-RevId: 185770217
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java37
3 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java b/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
index 56e8e8e616..d3aa9db71d 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/TestFilter.java
@@ -139,6 +139,9 @@ public final class TestFilter implements com.google.common.base.Predicate<Target
private static void checkLangFilters(
List<String> langFilterList, ExtendedEventHandler reporter, Set<String> allRuleNames) {
for (String lang : langFilterList) {
+ if (lang.startsWith("-")) {
+ lang = lang.substring(1);
+ }
if (!allRuleNames.contains(lang + "_test")) {
reporter.handle(
Event.warn("Unknown language '" + lang + "' in --test_lang_filters option"));
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index f1cc531c09..11111abaea 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -863,6 +863,7 @@ java_test(
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
"//src/main/protobuf:build_java_proto",
"//third_party:jsr305",
+ "//third_party:mockito",
"//third_party/protobuf:protobuf_java",
],
)
diff --git a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
index 556dc4bccb..285b01b931 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java
@@ -23,11 +23,16 @@ import com.google.common.collect.Sets;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
+import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.util.PackageLoadingTestCase;
+import com.google.devtools.build.lib.pkgcache.LoadingOptions;
import com.google.devtools.build.lib.pkgcache.TargetProvider;
import com.google.devtools.build.lib.pkgcache.TestFilter;
import com.google.devtools.build.lib.skyframe.TestSuiteExpansionValue;
+import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.EvaluationResult;
import com.google.devtools.build.skyframe.SkyKey;
import java.util.Collection;
@@ -37,6 +42,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.mockito.Mockito;
@RunWith(JUnit4.class)
public class TestTargetUtilsTest extends PackageLoadingTestCase {
@@ -93,6 +99,37 @@ public class TestTargetUtilsTest extends PackageLoadingTestCase {
}
@Test
+ public void testFilterByLang() throws Exception {
+ StoredEventHandler eventHandler = new StoredEventHandler();
+ LoadingOptions options = new LoadingOptions();
+ options.testLangFilterList = ImmutableList.of("nonexistent", "existent", "-noexist", "-exist");
+ options.testSizeFilterSet = ImmutableSet.of();
+ options.testTimeoutFilterSet = ImmutableSet.of();
+ options.testTagFilterList = ImmutableList.of();
+ TestFilter filter =
+ TestFilter.forOptions(
+ options, eventHandler, ImmutableSet.of("existent_test", "exist_test"));
+ assertThat(eventHandler.getEvents()).hasSize(2);
+ Package pkg = Mockito.mock(Package.class);
+ RuleClass ruleClass = Mockito.mock(RuleClass.class);
+ Rule mockRule =
+ new Rule(
+ pkg,
+ null,
+ ruleClass,
+ Location.fromPathFragment(PathFragment.EMPTY_FRAGMENT),
+ new AttributeContainer(ruleClass));
+ Mockito.when(ruleClass.getName()).thenReturn("existent_library");
+ assertThat(filter.apply(mockRule)).isTrue();
+ Mockito.when(ruleClass.getName()).thenReturn("exist_library");
+ assertThat(filter.apply(mockRule)).isFalse();
+ assertThat(eventHandler.getEvents())
+ .contains(Event.warn("Unknown language 'nonexistent' in --test_lang_filters option"));
+ assertThat(eventHandler.getEvents())
+ .contains(Event.warn("Unknown language 'noexist' in --test_lang_filters option"));
+ }
+
+ @Test
public void testFilterByTimeout() throws Exception {
scratch.file(
"timeouts/BUILD",