From d422b5cb8fcee59a5a98a6aa571efbaf03ccce15 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Sun, 4 Mar 2012 22:51:57 +0100 Subject: [PATCH] Scripted test for a macro def in a source file. Needed to increase MaxPermSize, otherwise I was unable to run this test on Java 1.6.0_29 64bit Server on Mac OS. --- project/Sbt.scala | 3 +- .../macro/macro-client/Client.scala | 5 ++++ .../macro/macro-provider/Provider.scala | 5 ++++ .../macro-provider/changes/Provider.scala | 5 ++++ .../macro/project/build.scala | 29 +++++++++++++++++++ .../sbt-test/source-dependencies/macro/test | 13 +++++++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala create mode 100644 sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala create mode 100644 sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala create mode 100644 sbt/src/sbt-test/source-dependencies/macro/project/build.scala create mode 100644 sbt/src/sbt-test/source-dependencies/macro/test diff --git a/project/Sbt.scala b/project/Sbt.scala index a4e93d5af..f3a48ab52 100644 --- a/project/Sbt.scala +++ b/project/Sbt.scala @@ -143,7 +143,8 @@ object Sbt extends Build val loader = classpath.ClasspathUtilities.toLoader(scriptedSbtClasspath.files, scriptedSbtInstance.loader) val m = ModuleUtilities.getObject("sbt.test.ScriptedTests", loader) val r = m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File], classOf[Array[String]]) - try { r.invoke(m, sourcePath, true: java.lang.Boolean, v, sv, ssv, args.toArray[String], launcher, Array[String]()) } + val launcherVmOptions = Array("-XX:MaxPermSize=256M") // increased after a failure in scripted source-dependencies/macro + try { r.invoke(m, sourcePath, true: java.lang.Boolean, v, sv, ssv, args.toArray[String], launcher, launcherVmOptions) } catch { case ite: java.lang.reflect.InvocationTargetException => throw ite.getCause } } } diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala new file mode 100644 index 000000000..90932d136 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala @@ -0,0 +1,5 @@ +package macro + +object Client { + Provider.tree(0) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala new file mode 100644 index 000000000..93764e1b4 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala @@ -0,0 +1,5 @@ +package macro + +object Provider { + def macro tree(args: Any) = reify(args) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala new file mode 100644 index 000000000..53a086bb8 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala @@ -0,0 +1,5 @@ +package macro + +object Provider { + def macro tree(args: Any) = sys.error("no macro for you!") +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro/project/build.scala new file mode 100644 index 000000000..1f95fbeb9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/project/build.scala @@ -0,0 +1,29 @@ +import sbt._ +import Keys._ + +object build extends Build { + val defaultSettings = Seq( + scalaVersion := "2.10.0-M2", + scalacOptions += "-Xmacros" + ) + + lazy val root = Project( + base = file("."), + id = "macro", + aggregate = Seq(macroProvider, macroClient), + settings = Defaults.defaultSettings ++ defaultSettings + ) + + lazy val macroProvider = Project( + base = file("macro-provider"), + id = "macro-provider", + settings = Defaults.defaultSettings ++ defaultSettings + ) + + lazy val macroClient = Project( + base = file("macro-client"), + id = "macro-client", + dependencies = Seq(macroProvider), + settings = Defaults.defaultSettings ++ defaultSettings + ) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/test b/sbt/src/sbt-test/source-dependencies/macro/test new file mode 100644 index 000000000..b3755d4ee --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/test @@ -0,0 +1,13 @@ +> compile + +# replace macro with one that throws an error + +$ copy-file macro-provider/changes/Provider.scala macro-provider/Provider.scala + +> macro-provider/compile + +-> macro-client/compile + +> clean + +-> compile