aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java
new file mode 100644
index 0000000000..08688b13f6
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCaseForJunit4.java
@@ -0,0 +1,137 @@
+// Copyright 2014 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.devtools.build.lib.testutil;
+
+import static org.junit.Assert.fail;
+
+import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.EventCollector;
+import com.google.devtools.build.lib.events.EventHandler;
+import com.google.devtools.build.lib.events.EventKind;
+import com.google.devtools.build.lib.events.Reporter;
+import com.google.devtools.build.lib.util.BlazeClock;
+import com.google.devtools.build.lib.vfs.FileSystem;
+import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
+
+import org.junit.After;
+import org.junit.Before;
+
+import java.util.Set;
+
+/**
+ * A helper class for implementing tests of the "foundation" library.
+ */
+public abstract class FoundationTestCaseForJunit4 {
+
+ protected Path rootDirectory;
+
+ protected Path outputBase;
+
+ protected Path actionOutputBase;
+
+ // May be overridden by subclasses:
+ protected Reporter reporter;
+ protected EventCollector eventCollector;
+ protected Scratch scratch;
+
+ // Individual tests can opt-out of this handler if they expect an error, by
+ // calling reporter.removeHandler(failFastHandler).
+ protected static final EventHandler failFastHandler = new EventHandler() {
+ @Override
+ public void handle(Event event) {
+ if (EventKind.ERRORS.contains(event.getKind())) {
+ fail(event.toString());
+ }
+ }
+ };
+
+ protected static final EventHandler printHandler = new EventHandler() {
+ @Override
+ public void handle(Event event) {
+ System.out.println(event);
+ }
+ };
+
+ @Before
+ public final void initializeFileSystemAndDirectories() throws Exception {
+ scratch = new Scratch(createFileSystem(), "/workspace");
+ outputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/");
+ rootDirectory = scratch.dir("/workspace");
+ scratch.file(rootDirectory.getRelative("WORKSPACE").getPathString());
+ actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/");
+ }
+
+ @Before
+ public final void initializeLogging() throws Exception {
+ eventCollector = new EventCollector(EventKind.ERRORS_AND_WARNINGS);
+ reporter = new Reporter(eventCollector);
+ reporter.addHandler(failFastHandler);
+ }
+
+ @After
+ public final void clearInterrupts() throws Exception {
+ Thread.interrupted(); // Clear any interrupt pending against this thread,
+ // so that we don't cause later tests to fail.
+ }
+
+ // To be overriden by sub classes if they want to disable loading.
+ protected boolean isLoadingEnabled() {
+ return true;
+ }
+
+ /**
+ * Creates the file system; override to inject FS behavior.
+ */
+ protected FileSystem createFileSystem() {
+ return new InMemoryFileSystem(BlazeClock.instance());
+ }
+
+ // Mix-in assertions:
+
+ protected void assertNoEvents() {
+ MoreAsserts.assertNoEvents(eventCollector);
+ }
+
+ protected Event assertContainsEvent(String expectedMessage) {
+ return MoreAsserts.assertContainsEvent(eventCollector,
+ expectedMessage);
+ }
+
+ protected Event assertContainsEvent(String expectedMessage, Set<EventKind> kinds) {
+ return MoreAsserts.assertContainsEvent(eventCollector,
+ expectedMessage,
+ kinds);
+ }
+
+ protected void assertContainsEventWithFrequency(String expectedMessage,
+ int expectedFrequency) {
+ MoreAsserts.assertContainsEventWithFrequency(eventCollector, expectedMessage,
+ expectedFrequency);
+ }
+
+ protected void assertDoesNotContainEvent(String expectedMessage) {
+ MoreAsserts.assertDoesNotContainEvent(eventCollector,
+ expectedMessage);
+ }
+
+ protected Event assertContainsEventWithWordsInQuotes(String... words) {
+ return MoreAsserts.assertContainsEventWithWordsInQuotes(
+ eventCollector, words);
+ }
+
+ protected void assertContainsEventsInOrder(String... expectedMessages) {
+ MoreAsserts.assertContainsEventsInOrder(eventCollector, expectedMessages);
+ }
+}