summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.xml23
-rw-r--r--src/partest/scala/tools/partest/Compilable.scala3
-rw-r--r--test/partest-tests/jvm/actor-receivewithin.check16
-rw-r--r--test/partest-tests/jvm/actor-receivewithin.scala69
-rw-r--r--test/partest-tests/run/crash.scala6
-rw-r--r--test/partest-tests/run/streamWithFilter.check5
-rw-r--r--test/partest-tests/run/streamWithFilter.scala11
-rw-r--r--test/partest-tests/run/timeout.scala5
8 files changed, 138 insertions, 0 deletions
diff --git a/build.xml b/build.xml
index d59863277b..8471c62906 100644
--- a/build.xml
+++ b/build.xml
@@ -1520,6 +1520,29 @@ BOOTRAPING TEST AND TEST SUITE
</syspropertyset>
</partest>
</target>
+
+ <target name="test.partest-opt" depends="pack.done">
+ <antcall target="test.partest">
+ <param name="scalac.args.optimise" value="-optimise"/>
+ </antcall>
+ </target>
+
+ <target name="test.partest" depends="pack.done">
+ <partest classpathref="pack.classpath">
+ <env key="PATH" path="${build-pack.dir}/bin:${env.PATH}" />
+ <sysproperty key="partest.srcdir" value="partest-tests" />
+ <sysproperty key="partest.scalacopts" value="${scalac.args.all}" />
+ <sysproperty key="partest.javacopts" value="${javac.args}" />
+ <sysproperty key="partest.verbose" value="true" />
+ <sysproperty key="partest.trace" value="true" />
+ <sysproperty key="partest.debug" value="true" />
+ <sysproperty key="partest.test-timeout" value="25" />
+ <sysproperty key="partest.scalacopts" value="${scalac.args.optimise}" />
+ <syspropertyset>
+ <propertyref prefix="partest"/>
+ </syspropertyset>
+ </partest>
+ </target>
<target name="test.done" depends="test.suite, test.continuations.suite, test.stability"/>
diff --git a/src/partest/scala/tools/partest/Compilable.scala b/src/partest/scala/tools/partest/Compilable.scala
index 6703d8a803..73dcdfce73 100644
--- a/src/partest/scala/tools/partest/Compilable.scala
+++ b/src/partest/scala/tools/partest/Compilable.scala
@@ -85,6 +85,9 @@ trait PartestCompilation {
case FatalError(msg) => creporter.error(null, "fatal error: " + msg)
case ae: AssertionError => creporter.error(null, ""+ae)
case te: TypeError => creporter.error(null, ""+te)
+ case ex =>
+ creporter.error(null, ""+ex)
+ throw ex
}
if (printSummary)
diff --git a/test/partest-tests/jvm/actor-receivewithin.check b/test/partest-tests/jvm/actor-receivewithin.check
new file mode 100644
index 0000000000..a6a3e88c61
--- /dev/null
+++ b/test/partest-tests/jvm/actor-receivewithin.check
@@ -0,0 +1,16 @@
+'msg
+'msg
+'msg
+'msg
+'msg
+TIMEOUT
+TIMEOUT
+TIMEOUT
+TIMEOUT
+TIMEOUT
+'msg2
+'msg2
+'msg2
+'msg2
+'msg2
+TIMEOUT
diff --git a/test/partest-tests/jvm/actor-receivewithin.scala b/test/partest-tests/jvm/actor-receivewithin.scala
new file mode 100644
index 0000000000..a5c87c2722
--- /dev/null
+++ b/test/partest-tests/jvm/actor-receivewithin.scala
@@ -0,0 +1,69 @@
+import scala.actors.{Actor, TIMEOUT}
+
+object A extends Actor {
+ def act() {
+ receive {
+ case 'done =>
+ var cnt = 0
+ while (cnt < 500) {
+ cnt += 1
+ receiveWithin (0) {
+ case 'msg =>
+ if (cnt % 100 == 0)
+ println("'msg")
+ case TIMEOUT =>
+ // should not happen
+ println("FAIL1")
+ }
+ }
+ cnt = 0
+ while (cnt < 500) {
+ cnt += 1
+ receiveWithin (0) {
+ case 'msg =>
+ // should not happen
+ println("FAIL2")
+ case TIMEOUT =>
+ if (cnt % 100 == 0)
+ println("TIMEOUT")
+ }
+ }
+ B ! 'next
+ receive { case 'done => }
+ cnt = 0
+ while (cnt < 501) {
+ cnt += 1
+ receiveWithin (500) {
+ case 'msg2 =>
+ if (cnt % 100 == 0)
+ println("'msg2")
+ case TIMEOUT =>
+ println("TIMEOUT")
+ }
+ }
+ }
+ }
+}
+
+object B extends Actor {
+ def act() {
+ A.start()
+ for (_ <- 1 to 500) {
+ A ! 'msg
+ }
+ A ! 'done
+ receive {
+ case 'next =>
+ for (_ <- 1 to 500) {
+ A ! 'msg2
+ }
+ A ! 'done
+ }
+ }
+}
+
+object Test {
+ def main(args:Array[String]) {
+ B.start()
+ }
+}
diff --git a/test/partest-tests/run/crash.scala b/test/partest-tests/run/crash.scala
new file mode 100644
index 0000000000..1735cc444e
--- /dev/null
+++ b/test/partest-tests/run/crash.scala
@@ -0,0 +1,6 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ val t = new Throwable("DOOM")
+ throw t
+ }
+}
diff --git a/test/partest-tests/run/streamWithFilter.check b/test/partest-tests/run/streamWithFilter.check
new file mode 100644
index 0000000000..6b0e91a147
--- /dev/null
+++ b/test/partest-tests/run/streamWithFilter.check
@@ -0,0 +1,5 @@
+15
+30
+45
+60
+75
diff --git a/test/partest-tests/run/streamWithFilter.scala b/test/partest-tests/run/streamWithFilter.scala
new file mode 100644
index 0000000000..cb919d4f55
--- /dev/null
+++ b/test/partest-tests/run/streamWithFilter.scala
@@ -0,0 +1,11 @@
+object Test {
+ val nums = Stream.from(1)
+ def isFizz(x: Int) = x % 3 == 0
+ def isBuzz(x: Int) = x % 5 == 0
+ // next line will run forever if withFilter isn't doing its thing.
+ val fizzbuzzes = for (n <- nums ; if isFizz(n) ; if isBuzz(n)) yield n
+
+ def main(args: Array[String]): Unit = {
+ fizzbuzzes take 5 foreach println
+ }
+}
diff --git a/test/partest-tests/run/timeout.scala b/test/partest-tests/run/timeout.scala
new file mode 100644
index 0000000000..91417b39ab
--- /dev/null
+++ b/test/partest-tests/run/timeout.scala
@@ -0,0 +1,5 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ Thread.sleep(10000000)
+ }
+}