summaryrefslogtreecommitdiffstats
path: root/junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java')
-rw-r--r--junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java b/junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java
new file mode 100644
index 0000000..28d3553
--- /dev/null
+++ b/junit4/src/test/java/org/junit/tests/experimental/rules/TimeoutRuleTest.java
@@ -0,0 +1,39 @@
+package org.junit.tests.experimental.rules;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+
+public class TimeoutRuleTest {
+ public static class HasGlobalTimeout {
+ public static String log;
+
+ @Rule public TestRule globalTimeout = new Timeout(20);
+
+ @Test public void testInfiniteLoop1() {
+ log+= "ran1";
+ for(;;) {}
+ }
+
+ @Test public void testInfiniteLoop2() {
+ log+= "ran2";
+ for(;;) {}
+ }
+ }
+
+ @Ignore("For gump, for now")
+ @Test(timeout=100) public void globalTimeoutAvoidsInfiniteLoop() {
+ HasGlobalTimeout.log = "";
+ Result result= JUnitCore.runClasses(HasGlobalTimeout.class);
+ assertEquals(2, result.getFailureCount());
+ assertThat(HasGlobalTimeout.log, containsString("ran1"));
+ assertThat(HasGlobalTimeout.log, containsString("ran2"));
+ }
+}