summaryrefslogtreecommitdiff
path: root/test/script-tests
diff options
context:
space:
mode:
Diffstat (limited to 'test/script-tests')
-rwxr-xr-xtest/script-tests/README8
-rw-r--r--test/script-tests/jar-manifest/resources/MANIFEST.MF3
-rwxr-xr-xtest/script-tests/jar-manifest/run-test41
-rw-r--r--test/script-tests/jar-manifest/run-test.check30
-rw-r--r--test/script-tests/jar-manifest/src/jar-test.scala34
5 files changed, 116 insertions, 0 deletions
diff --git a/test/script-tests/README b/test/script-tests/README
new file mode 100755
index 0000000000..3f5c2ce19c
--- /dev/null
+++ b/test/script-tests/README
@@ -0,0 +1,8 @@
+This is a fresh start for script tests. The fact that windows exists can
+no longer be allowed to stand in the way of testing the wide range of
+functionality which currently goes completely untested. So I'll just be
+putting self-contained script tests in here to run some way that doesn't
+depend on all the platform stars aligning all the time. Feel free to
+join me.
+
+-- extempore, Nov 21 2011 \ No newline at end of file
diff --git a/test/script-tests/jar-manifest/resources/MANIFEST.MF b/test/script-tests/jar-manifest/resources/MANIFEST.MF
new file mode 100644
index 0000000000..93c54c3c6f
--- /dev/null
+++ b/test/script-tests/jar-manifest/resources/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: bippy.Runner
+Class-Path: bippy.jar dingus.jar http://mirrors.ibiblio.org/pub/mirrors/maven2/com/thoughtworks/paranamer/paranamer/2.4/paranamer-2.4.jar
diff --git a/test/script-tests/jar-manifest/run-test b/test/script-tests/jar-manifest/run-test
new file mode 100755
index 0000000000..2c6d5876b8
--- /dev/null
+++ b/test/script-tests/jar-manifest/run-test
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+#
+
+set -e
+
+paranamerjar="http://mirrors.ibiblio.org/pub/mirrors/maven2/com/thoughtworks/paranamer/paranamer/2.4/paranamer-2.4.jar"
+build=$(dirname $0)/../../../build/pack
+
+if [[ -n "$SCALA_HOME" ]]; then
+ scala="$SCALA_HOME/bin/scala"
+elif [[ -d $build ]]; then
+ scala=$(cd $build && pwd -P)/bin/scala
+else
+ scala="scala"
+fi
+
+echo "$($scala -version 2>&1)"
+scalac="${scala}c"
+
+[[ -d lib ]] || mkdir lib
+[[ -f lib/paranamer-2.4.jar ]] || ( printf >&2 "Grabbing paranamer jar\n\n" && cd lib && wget --quiet "$paranamerjar" )
+
+rm -rf target && mkdir target
+"$scalac" -d target -cp lib/'*' src/*.scala
+cd target
+
+jar cmf ../resources/MANIFEST.MF bippy.jar bippy
+jar cf dingus.jar dingus
+
+run () {
+ echo ""
+ echo "% $@"
+ "$@"
+}
+
+cat <<EOM
+$(run pwd)
+$(run jar tf bippy.jar)
+$(run jar tf dingus.jar)
+$(run $scala $@ bippy.jar)
+EOM
diff --git a/test/script-tests/jar-manifest/run-test.check b/test/script-tests/jar-manifest/run-test.check
new file mode 100644
index 0000000000..ef59a6cbac
--- /dev/null
+++ b/test/script-tests/jar-manifest/run-test.check
@@ -0,0 +1,30 @@
+Scala code runner version 2.10.0.r26038-b20111121102734 -- Copyright 2002-2011, LAMP/EPFL
+
+% pwd
+/scala/trunk/test/script-tests/jar-manifest/target
+
+% jar tf bippy.jar
+META-INF/
+META-INF/MANIFEST.MF
+bippy/
+bippy/Runner$$anonfun$main$1.class
+bippy/Runner$$anonfun$main$2.class
+bippy/Runner$$anonfun$main$3.class
+bippy/Runner$.class
+bippy/Runner.class
+
+% jar tf dingus.jar
+META-INF/
+META-INF/MANIFEST.MF
+dingus/
+dingus/Printable.class
+
+% /scala/trunk/build/pack/bin/scala bippy.jar
+1 "Greetings from dingus.jar!"
+2 bippyBingle has parameters: imparametorium, antidisestablish, x
+3 bippyBoo has parameters: quuxParameter
+4
+5 Urls exposed through the classloader:
+6 file:/scala/trunk/test/script-tests/jar-manifest/target/./bippy.jar
+7 file:/scala/trunk/test/script-tests/jar-manifest/target/./dingus.jar
+8 http://mirrors.ibiblio.org/pub/mirrors/maven2/com/thoughtworks/paranamer/paranamer/2.4/paranamer-2.4.jar
diff --git a/test/script-tests/jar-manifest/src/jar-test.scala b/test/script-tests/jar-manifest/src/jar-test.scala
new file mode 100644
index 0000000000..80e3aafff0
--- /dev/null
+++ b/test/script-tests/jar-manifest/src/jar-test.scala
@@ -0,0 +1,34 @@
+import scala.tools.nsc.util.HasClassPath
+
+package bippy {
+ object Runner {
+ var line = 0
+ def echo(msgs: Any*) = {
+ line += 1
+ Console.println("%-2s %s".format(line, msgs mkString " "))
+ }
+
+ def bippyBoo(quuxParameter: Int) = 5
+ def bippyBingle(imparametorium: String, antidisestablish: Int, x: Float) = ()
+
+ def main(args: Array[String]): Unit = {
+ echo(new dingus.Printable)
+ val namer = new com.thoughtworks.paranamer.BytecodeReadingParanamer
+ getClass.getMethods filter (_.getName startsWith "bippy") foreach { m =>
+ echo(m.getName, "has parameters:", namer.lookupParameterNames(m).mkString(", "))
+ }
+ echo("")
+ echo("Urls exposed through the classloader:")
+ getClass.getClassLoader match {
+ case x: HasClassPath => x.classPathURLs foreach (x => echo(x))
+ case _ => echo("None! Seems unlikely we'd get this far then.")
+ }
+ }
+ }
+}
+
+package dingus {
+ class Printable {
+ override def toString = "\"Greetings from dingus.jar!\""
+ }
+} \ No newline at end of file