aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-23 02:14:47 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-23 02:26:21 -0600
commitc3e56778e8d47aec5c5e8354148ea1356a980e69 (patch)
tree02d16cfb1d7a08a06f7f15af24c7c60aaa1eba71 /src
parentfa9b8522a5ea474b63d1dad5108ee7b1c858c9ed (diff)
downloadscala-test-more-c3e56778e8d47aec5c5e8354148ea1356a980e69.tar.gz
scala-test-more-c3e56778e8d47aec5c5e8354148ea1356a980e69.zip
stop threading outputstreams through everything
it's not really necessary, since we can already capture output if necessary externally
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/org/perl8/test/TestMore.scala18
-rw-r--r--src/main/scala/org/perl8/test/harness/SummaryReporter.scala8
-rw-r--r--src/main/scala/org/perl8/test/harness/TAPReporter.scala4
-rw-r--r--src/main/scala/org/perl8/test/sbt/Runner.scala1
-rw-r--r--src/main/scala/org/perl8/test/tap/TestBuilder.scala23
-rw-r--r--src/test/scala/org/perl8/test/TestMoreTest.scala12
-rw-r--r--src/test/scala/org/perl8/test/tap/ConsumerTest.scala4
-rw-r--r--src/test/scala/org/perl8/test/tap/TestBuilderTest.scala131
8 files changed, 102 insertions, 99 deletions
diff --git a/src/main/scala/org/perl8/test/TestMore.scala b/src/main/scala/org/perl8/test/TestMore.scala
index dddd468..fa3b6d4 100644
--- a/src/main/scala/org/perl8/test/TestMore.scala
+++ b/src/main/scala/org/perl8/test/TestMore.scala
@@ -3,22 +3,15 @@ package org.perl8.test
import org.perl8.test.tap.TestBuilder
import org.perl8.test.Utils._
-import java.io.OutputStream
import scala.util.matching.Regex
-class TestMore (
- plan: Option[Plan],
- out: OutputStream
-) extends Test with DelayedInit {
- def this (plan: Plan, out: OutputStream = System.out) =
- this(Some(plan), out)
-
- def this (out: OutputStream = System.out) =
- this(None, out)
+class TestMore (plan: Option[Plan] = None) extends Test with DelayedInit {
+ def this (plan: Plan) =
+ this(Some(plan))
def delayedInit (body: => Unit) {
todo = NoMessage
- builder = new TestBuilder(plan, out, 0, NoMessage)
+ builder = new TestBuilder(plan, "", NoMessage)
testBody = () => body
}
@@ -126,8 +119,7 @@ class TestMore (
val success = try {
builder = new TestBuilder(
plan,
- out,
- oldBuilder.indent + 1,
+ oldBuilder.indent + " ",
name.map(n => "- " + n)
)
body
diff --git a/src/main/scala/org/perl8/test/harness/SummaryReporter.scala b/src/main/scala/org/perl8/test/harness/SummaryReporter.scala
index 08544ce..23e5244 100644
--- a/src/main/scala/org/perl8/test/harness/SummaryReporter.scala
+++ b/src/main/scala/org/perl8/test/harness/SummaryReporter.scala
@@ -1,6 +1,6 @@
package org.perl8.test.harness
-import java.io.{OutputStream,ByteArrayOutputStream}
+import java.io.ByteArrayOutputStream
import org.perl8.test.Test
import org.perl8.test.tap
@@ -22,8 +22,10 @@ class SummaryReporter extends MultiTestReporter {
print(name + ("." * (maxLength - name.length)) + "... ")
val out = new ByteArrayOutputStream
- val test = newInstance[Test, OutputStream](name, out)
- val exitCode = test.run
+ val test = newInstance[Test](name)
+ val exitCode = Console.withOut(out) {
+ test.run
+ }
val result = tap.Consumer.parse(out)
if (exitCode == 0) {
diff --git a/src/main/scala/org/perl8/test/harness/TAPReporter.scala b/src/main/scala/org/perl8/test/harness/TAPReporter.scala
index c9e353a..e478880 100644
--- a/src/main/scala/org/perl8/test/harness/TAPReporter.scala
+++ b/src/main/scala/org/perl8/test/harness/TAPReporter.scala
@@ -1,11 +1,9 @@
package org.perl8.test.harness
-import java.io.OutputStream
-
import org.perl8.test.Test
import Utils._
class TAPReporter extends Reporter {
def run (testName: String): Int =
- newInstance[Test, OutputStream](testName, System.out).run
+ newInstance[Test](testName).run
}
diff --git a/src/main/scala/org/perl8/test/sbt/Runner.scala b/src/main/scala/org/perl8/test/sbt/Runner.scala
index 86abbc9..cd68fd1 100644
--- a/src/main/scala/org/perl8/test/sbt/Runner.scala
+++ b/src/main/scala/org/perl8/test/sbt/Runner.scala
@@ -1,7 +1,6 @@
package org.perl8.test.sbt
import org.scalatools.testing.{EventHandler,Event,Result}
-import java.io.{OutputStream,ByteArrayOutputStream}
import org.perl8.test.harness.Utils._
import org.perl8.test.harness.SummaryReporter
diff --git a/src/main/scala/org/perl8/test/tap/TestBuilder.scala b/src/main/scala/org/perl8/test/tap/TestBuilder.scala
index f9c684c..ac576d8 100644
--- a/src/main/scala/org/perl8/test/tap/TestBuilder.scala
+++ b/src/main/scala/org/perl8/test/tap/TestBuilder.scala
@@ -1,31 +1,26 @@
package org.perl8.test.tap
-import java.io.OutputStream
-
import org.perl8.test.Utils._
class TestBuilder (
plan: Option[Plan],
- out: OutputStream,
- val indent: Int,
+ val indent: String,
private val name: Message
) {
plan.foreach(p => println(Producer.plan(p)))
def this (
plan: Plan,
- out: OutputStream = System.out,
- indent: Int = 0,
+ indent: String = "",
name: Message = NoMessage
) =
- this(Some(plan), out, indent, name)
+ this(Some(plan), indent, name)
def this (
- out: OutputStream = System.out,
- indent: Int = 0,
+ indent: String = "",
name: Message = NoMessage
) =
- this(None, out, indent, name)
+ this(None, indent, name)
def ok (
test: Boolean,
@@ -92,11 +87,9 @@ class TestBuilder (
private val state = new TestState
private def println (str: String) {
- Console.withOut(out) {
- val indented =
- str.split("\n").map(s => (" " * (indent * 4)) + s).mkString("\n")
- Console.println(indented)
- }
+ val indented =
+ str.split("\n").map(s => indent + s).mkString("\n")
+ Console.println(indented)
}
private class TestState {
diff --git a/src/test/scala/org/perl8/test/TestMoreTest.scala b/src/test/scala/org/perl8/test/TestMoreTest.scala
index 5b3f8a3..4272fdd 100644
--- a/src/test/scala/org/perl8/test/TestMoreTest.scala
+++ b/src/test/scala/org/perl8/test/TestMoreTest.scala
@@ -1,13 +1,13 @@
package org.perl8.test
-import java.io.{OutputStream,ByteArrayOutputStream}
+import java.io.ByteArrayOutputStream
-class TestMoreTest (out: OutputStream) extends TestMore(out) {
+class TestMoreTest extends TestMore {
private object OutputContainer {
val output = new ByteArrayOutputStream
}
- private class MyBasicTest extends TestMore(OutputContainer.output) {
+ private class MyBasicTest extends TestMore {
diag("ok")
ok(1 == 1, "it works!")
ok(0 == 1, "it doesn't work!")
@@ -56,7 +56,11 @@ class TestMoreTest (out: OutputStream) extends TestMore(out) {
}
}
- is((new MyBasicTest).run, 9, "got the right plan")
+ val exitCode = Console.withOut(OutputContainer.output) {
+ (new MyBasicTest).run
+ }
+
+ is(exitCode, 9, "got the right plan")
val expected =
"# ok\n" +
diff --git a/src/test/scala/org/perl8/test/tap/ConsumerTest.scala b/src/test/scala/org/perl8/test/tap/ConsumerTest.scala
index 8cee3df..f43f095 100644
--- a/src/test/scala/org/perl8/test/tap/ConsumerTest.scala
+++ b/src/test/scala/org/perl8/test/tap/ConsumerTest.scala
@@ -2,11 +2,9 @@ package org.perl8.test.tap
import org.perl8.test.TestMore
-import java.io.OutputStream
-
import org.perl8.test.Utils._
-class ConsumerTest (out: OutputStream) extends TestMore(out) {
+class ConsumerTest extends TestMore {
subtest ("basic") {
val tap =
"1..1\n" +
diff --git a/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala
index c527cd2..cf4a40d 100644
--- a/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala
+++ b/src/test/scala/org/perl8/test/tap/TestBuilderTest.scala
@@ -2,19 +2,21 @@ package org.perl8.test.tap
import org.perl8.test.TestMore
-import java.io.{OutputStream,ByteArrayOutputStream}
+import java.io.ByteArrayOutputStream
import org.perl8.test.Utils._
-class TestBuilderTest (out: OutputStream) extends TestMore(out) {
+class TestBuilderTest extends TestMore {
subtest ("ok") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(4, output)
- builder.ok(true, "test succeeded")
- builder.ok(false, "test failed")
- builder.ok(true)
- builder.ok(false)
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder(4)
+ builder.ok(true, "test succeeded")
+ builder.ok(false, "test failed")
+ builder.ok(true)
+ builder.ok(false)
+ builder.doneTesting
+ }
val expected =
"1..4\n" +
@@ -29,12 +31,14 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("no plan") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
- builder.ok(true, "test succeeded")
- builder.ok(false, "test failed")
- builder.ok(true)
- builder.ok(false)
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.ok(true, "test succeeded")
+ builder.ok(false, "test failed")
+ builder.ok(true)
+ builder.ok(false)
+ builder.doneTesting
+ }
val expected =
"ok 1 test succeeded\n" +
@@ -49,8 +53,10 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("empty") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.doneTesting
+ }
val expected =
"1..0\n" +
@@ -61,14 +67,15 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("diag") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
-
- builder.ok(true, "the test passes")
- builder.ok(false, "the test passes")
- builder.diag("got false, expected true")
- builder.ok(true)
- builder.diag("ending\nnow")
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.ok(true, "the test passes")
+ builder.ok(false, "the test passes")
+ builder.diag("got false, expected true")
+ builder.ok(true)
+ builder.diag("ending\nnow")
+ builder.doneTesting
+ }
val expected =
"ok 1 the test passes\n" +
@@ -85,31 +92,35 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("is passing") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
-
- ok(!builder.isPassing)
- builder.ok(true)
- ok(builder.isPassing)
- builder.ok(false)
- ok(!builder.isPassing)
- builder.ok(true)
- ok(!builder.isPassing)
+ val oldOut = Console.out
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ Console.withOut(oldOut) { ok(!builder.isPassing) }
+ builder.ok(true)
+ Console.withOut(oldOut) { ok(builder.isPassing) }
+ builder.ok(false)
+ Console.withOut(oldOut) { ok(!builder.isPassing) }
+ builder.ok(true)
+ Console.withOut(oldOut) { ok(!builder.isPassing) }
+ }
}
subtest ("bail out") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
-
- builder.ok(true)
- try {
- builder.bailOut("oh no!")
- fail()
- }
- catch {
- case e: BailOutException => {
- is(e.message, "oh no!")
+ val oldOut = Console.out
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.ok(true)
+ try {
+ builder.bailOut("oh no!")
+ Console.withOut(oldOut) { fail() }
+ }
+ catch {
+ case e: BailOutException => Console.withOut(oldOut) {
+ is(e.message, "oh no!")
+ }
+ case _: Throwable => Console.withOut(oldOut) { fail() }
}
- case _: Throwable => fail()
}
val expected =
@@ -121,7 +132,9 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("skip all") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(SkipAll(), output)
+ Console.withOut(output) {
+ val builder = new TestBuilder(SkipAll())
+ }
val expected =
"1..0 # SKIP\n"
@@ -131,7 +144,9 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("skip all with reason") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(SkipAll("foo bar"), output)
+ Console.withOut(output) {
+ val builder = new TestBuilder(SkipAll("foo bar"))
+ }
val expected =
"1..0 # SKIP foo bar\n"
@@ -141,12 +156,13 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("skip") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
-
- builder.ok(false)
- builder.skip("not now")
- builder.skip()
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.ok(false)
+ builder.skip("not now")
+ builder.skip()
+ builder.doneTesting
+ }
val expected =
"not ok 1\n" +
@@ -160,11 +176,12 @@ class TestBuilderTest (out: OutputStream) extends TestMore(out) {
subtest ("todo") {
val output = new ByteArrayOutputStream
- val builder = new TestBuilder(output)
-
- builder.ok(false, "do a thing", todo = "not working yet")
- builder.ok(true, todo = "is it?")
- builder.doneTesting
+ Console.withOut(output) {
+ val builder = new TestBuilder
+ builder.ok(false, "do a thing", todo = "not working yet")
+ builder.ok(true, todo = "is it?")
+ builder.doneTesting
+ }
val expected =
"not ok 1 do a thing # TODO not working yet\n" +