aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-07-18 11:03:33 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-07-18 11:42:12 +0200
commit61536c3259a138a6268b56388bc71a4a91ab0db0 (patch)
tree5f79ef7e5fcccaa22753339608a1b91dbe0df1e6 /src/test
parent020ef076147fc42697730fff14fc876a0a2b30b4 (diff)
Move ParsingFailureEvent reporting to TargetPatternFunction
We're parsing the target pattern before we create the SkyKey, so all callers of the key creation also need to report this event. PiperOrigin-RevId: 162326973
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java44
1 files changed, 24 insertions, 20 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index 4a2af14b42..0e1788e64b 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -24,8 +24,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-import com.google.common.eventbus.EventBus;
-import com.google.common.eventbus.Subscribe;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.BuildView;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
@@ -34,7 +32,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventKind;
-import com.google.devtools.build.lib.events.Reporter;
+import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
import com.google.devtools.build.lib.packages.PackageFactory;
@@ -551,6 +549,17 @@ public class LoadingPhaseRunnerTest {
assertThat(loadingResult.hasLoadingError()).isFalse();
}
+ @Test
+ public void testParsingFailureReported() throws Exception {
+ LoadingResult loadingResult = tester.loadKeepGoing("//does_not_exist");
+ assertThat(loadingResult.hasTargetPatternError()).isTrue();
+ ParsingFailedEvent event = tester.findPost(ParsingFailedEvent.class);
+ assertThat(event).isNotNull();
+ assertThat(event.getPattern()).isEqualTo("//does_not_exist");
+ assertThat(event.getMessage()).contains("BUILD file not found on package path");
+ assertThat(Iterables.filter(tester.getPosts(), ParsingFailedEvent.class)).hasSize(1);
+ }
+
private void assertCircularSymlinksDuringTargetParsing(String targetPattern) throws Exception {
try {
tester.load(targetPattern);
@@ -672,20 +681,17 @@ public class LoadingPhaseRunnerTest {
storedErrors.clear();
LoadingResult result;
try {
- EventBus eventBus = new EventBus();
- FilteredTargetListener listener = new FilteredTargetListener();
- eventBus.register(listener);
result =
loadingPhaseRunner.execute(
- new Reporter(eventBus, storedErrors),
+ storedErrors,
ImmutableList.copyOf(patterns),
PathFragment.EMPTY_FRAGMENT,
options,
keepGoing,
determineTests,
loadingCallback);
- this.targetParsingCompleteEvent = listener.targetParsingCompleteEvent;
- this.loadingPhaseCompleteEvent = listener.loadingPhaseCompleteEvent;
+ this.targetParsingCompleteEvent = findPost(TargetParsingCompleteEvent.class);
+ this.loadingPhaseCompleteEvent = findPost(LoadingPhaseCompleteEvent.class);
} catch (LoadingFailedException e) {
System.err.println(storedErrors.getEvents());
throw e;
@@ -796,20 +802,18 @@ public class LoadingPhaseRunnerTest {
MoreAsserts.assertContainsEventWithFrequency(
filteredEvents(), expectedMessage, expectedFrequency);
}
- }
- public static class FilteredTargetListener {
- private TargetParsingCompleteEvent targetParsingCompleteEvent;
- private LoadingPhaseCompleteEvent loadingPhaseCompleteEvent;
-
- @Subscribe
- public void targetParsingComplete(TargetParsingCompleteEvent event) {
- this.targetParsingCompleteEvent = event;
+ public Iterable<Postable> getPosts() {
+ return storedErrors.getPosts();
}
- @Subscribe
- public void loadingPhaseComplete(LoadingPhaseCompleteEvent event) {
- this.loadingPhaseCompleteEvent = event;
+ public <T extends Postable> T findPost(Class<T> clazz) {
+ for (Postable p : storedErrors.getPosts()) {
+ if (clazz.isInstance(p)) {
+ return clazz.cast(p);
+ }
+ }
+ return null;
}
}
}