diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-12-31 22:56:45 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-01 10:10:19 -0800 |
commit | cf5fb5fdfd477e0bb4ffa0e4fec3a8ec01bf5cf1 (patch) | |
tree | f3897463b6f55019f2bbd59ba5cff73cf0fb571f /scalalib/src/test/scala | |
parent | 6996c01a391cb9aaa27268dd1f0cf0a1749ade21 (diff) | |
download | mill-cf5fb5fdfd477e0bb4ffa0e4fec3a8ec01bf5cf1.tar.gz mill-cf5fb5fdfd477e0bb4ffa0e4fec3a8ec01bf5cf1.tar.bz2 mill-cf5fb5fdfd477e0bb4ffa0e4fec3a8ec01bf5cf1.zip |
Split Acyclic/Jawn/BetterFiles tests into their own `integration/` test suite.
Those tests now download a snapshot of the relevant git repo rather than vendoring the files, and use a bare `build.sc` instead of having the build object be included in the test classpath.
Tests pass using `sbt integration/test`, but `mill integration.test` still doesn't work
Diffstat (limited to 'scalalib/src/test/scala')
4 files changed, 4 insertions, 285 deletions
diff --git a/scalalib/src/test/scala/mill/scalalib/AcyclicTests.scala b/scalalib/src/test/scala/mill/scalalib/AcyclicTests.scala deleted file mode 100644 index 44a43702..00000000 --- a/scalalib/src/test/scala/mill/scalalib/AcyclicTests.scala +++ /dev/null @@ -1,78 +0,0 @@ -package mill.scalalib - -import ammonite.ops.ImplicitWd._ -import ammonite.ops._ -import mill.define.Cross -import mill.discover.Discovered -import mill.scalalib.publish._ -import utest._ -import mill.util.JsonFormatters._ -import mill.util.TestEvaluator -object AcyclicBuild{ - val acyclic = - for(crossVersion <- Cross("2.10.6", "2.11.8", "2.12.3", "2.12.4")) - yield new SbtModule with PublishModule {outer => - def basePath = AcyclicTests.workspacePath - def artifactName = "acyclic" - def publishVersion = "0.1.7" - - def pomSettings = PomSettings( - description = artifactName(), - organization = "com.lihaoyi", - url = "https://github.com/lihaoyi/acyclic", - licenses = Seq( - License("MIT license", "http://www.opensource.org/licenses/mit-license.php") - ), - scm = SCM( - "git://github.com/lihaoyi/acyclic.git", - "scm:git://github.com/lihaoyi/acyclic.git" - ), - developers = Seq( - Developer("lihaoyi", "Li Haoyi","https://github.com/lihaoyi") - ) - ) - - def scalaVersion = crossVersion - def ivyDeps = Seq( - Dep.Java("org.scala-lang", "scala-compiler", scalaVersion()) - ) - object test extends this.Tests{ - def forkWorkingDir = pwd/'scalalib/'src/'test/'resource/'acyclic - def ivyDeps = Seq( - Dep("com.lihaoyi", "utest", "0.6.0") - ) - def testFramework = "utest.runner.Framework" - } - } -} -object AcyclicTests extends TestSuite{ - val workspacePath = pwd / 'target / 'workspace / 'acyclic - val srcPath = pwd / 'scalalib / 'src / 'test / 'resource / 'acyclic - val tests = Tests{ - rm(workspacePath) - mkdir(workspacePath/up) - cp(srcPath, workspacePath) - val mapping = Discovered.mapping(AcyclicBuild) - val eval = new TestEvaluator(mapping, workspacePath, srcPath) - - def check(scalaVersion: String) = { - // We can compile - val Right((pathRef, evalCount)) = eval(AcyclicBuild.acyclic(scalaVersion).compile) - val outputPath = pathRef.classes.path - val outputFiles = ls.rec(outputPath) - assert( - evalCount > 0, - outputFiles.contains(outputPath/'acyclic/'plugin/"GraphAnalysis.class"), - outputFiles.contains(outputPath/'acyclic/'plugin/"PluginPhase.class") - ) - - // Compilation is cached - val Right((_, evalCount2)) = eval(AcyclicBuild.acyclic(scalaVersion).compile) - assert(evalCount2 == 0) - } - - 'scala211 - check("2.11.8") - 'scala2123 - check("2.12.3") - - } -} diff --git a/scalalib/src/test/scala/mill/scalalib/BetterFilesTests.scala b/scalalib/src/test/scala/mill/scalalib/BetterFilesTests.scala deleted file mode 100644 index 1f0a3d70..00000000 --- a/scalalib/src/test/scala/mill/scalalib/BetterFilesTests.scala +++ /dev/null @@ -1,111 +0,0 @@ -package mill.scalalib - -import ammonite.ops.ImplicitWd._ -import ammonite.ops._ -import mill.discover.Discovered -import utest._ -import mill.util.JsonFormatters._ -import mill.util.TestEvaluator - -object BetterFilesBuild{ - trait BetterFilesModule extends SbtModule{ outer => - def scalaVersion = "2.12.4" - def scalacOptions = Seq( - "-deprecation", // Emit warning and location for usages of deprecated APIs. - "-encoding", "utf-8", // Specify character encoding used by source files. - "-explaintypes", // Explain type errors in more detail. - "-feature", // Emit warning and location for usages of features that should be imported explicitly. - "-language:existentials", // Existential types (besides wildcard types) can be written and inferred - "-language:experimental.macros", // Allow macro definition (besides implementation and application) - "-language:higherKinds", // Allow higher-kinded types - "-language:implicitConversions", // Allow definition of implicit functions called views - "-unchecked", // Enable additional warnings where generated code depends on assumptions. - "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. - "-Xfatal-warnings", // Fail the compilation if there are any warnings. - "-Xfuture", // Turn on future language features. - "-Xlint:adapted-args", // Warn if an argument list is modified to match the receiver. - "-Xlint:by-name-right-associative", // By-name parameter of right associative operator. - "-Xlint:constant", // Evaluation of a constant arithmetic expression results in an error. - "-Xlint:delayedinit-select", // Selecting member of DelayedInit. - "-Xlint:doc-detached", // A Scaladoc comment appears to be detached from its element. - "-Xlint:inaccessible", // Warn about inaccessible types in method signatures. - "-Xlint:infer-any", // Warn when a type argument is inferred to be `Any`. - "-Xlint:missing-interpolator", // A string literal appears to be missing an interpolator id. - "-Xlint:nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. - "-Xlint:nullary-unit", // Warn when nullary methods return Unit. - "-Xlint:option-implicit", // Option.apply used implicit view. - "-Xlint:package-object-classes", // Class or object defined in package object. - "-Xlint:poly-implicit-overload", // Parameterized overloaded implicit methods are not visible as view bounds. - "-Xlint:private-shadow", // A private field (or class parameter) shadows a superclass field. - "-Xlint:stars-align", // Pattern sequence wildcard must align with sequence component. - "-Xlint:type-parameter-shadow", // A local type parameter shadows a type already in scope. - "-Xlint:unsound-match", // Pattern match may not be typesafe. - "-Yno-adapted-args", // Do not adapt an argument list (either by inserting () or creating a tuple) to match the receiver. - "-Ypartial-unification", // Enable partial unification in type constructor inference - "-Ywarn-dead-code", // Warn when dead code is identified. - "-Ywarn-extra-implicit", // Warn when more than one implicit parameter section is defined. - "-Ywarn-inaccessible", // Warn about inaccessible types in method signatures. - "-Ywarn-infer-any", // Warn when a type argument is inferred to be `Any`. - "-Ywarn-nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. - "-Ywarn-nullary-unit", // Warn when nullary methods return Unit. - "-Ywarn-numeric-widen", // Warn when numerics are widened. - "-Ywarn-unused:implicits", // Warn if an implicit parameter is unused. - "-Ywarn-unused:imports", // Warn if an import selector is not referenced. - "-Ywarn-unused:locals", // Warn if a local definition is unused. - "-Ywarn-unused:params", // Warn if a value parameter is unused. - "-Ywarn-unused:patvars", // Warn if a variable bound in a pattern is unused. - "-Ywarn-unused:privates", // Warn if a private member is unused. - "-Ywarn-value-discard" // Warn when non-Unit expression results are unused. - ) - override def javacOptions = Seq("-source", "1.8", "-target", "1.8", "-Xlint") - object test extends this.Tests{ - def projectDeps = - if (this == Core.test) Seq(Core) - else Seq(outer, Core.test) - def ivyDeps = Seq(Dep("org.scalatest", "scalatest", "3.0.4")) - def testFramework = "org.scalatest.tools.Framework" - } - } - object Core extends BetterFilesModule{ - def basePath = BetterFilesTests.srcPath/"core" - } - object Akka extends BetterFilesModule{ - def projectDeps = Seq(Core) - def basePath = BetterFilesTests.srcPath/"akka" - def ivyDeps = Seq(Dep("com.typesafe.akka", "akka-actor", "2.5.6")) - } - object ShapelessScanner extends BetterFilesModule{ - def projectDeps = Seq(Core) - def basePath = BetterFilesTests.srcPath/"shapeless" - def ivyDeps = Seq(Dep("com.chuusai", "shapeless", "2.3.2")) - } - object Benchmarks extends BetterFilesModule{ - def projectDeps = Seq(Core) - def basePath = BetterFilesTests.srcPath/"benchmarks" - def ivyDeps = Seq( - Dep.Java("commons-io", "commons-io", "2.5") - // "fastjavaio" % "fastjavaio" % "1.0" from "https://github.com/williamfiset/FastJavaIO/releases/download/v1.0/fastjavaio.jar" - ) - } -} -object BetterFilesTests extends TestSuite{ - val workspacePath = pwd / 'target / 'workspace / "better-files" - val srcPath = pwd / 'scalalib / 'src / 'test / 'resource / "better-files" - val tests = Tests{ - rm(workspacePath) - mkdir(workspacePath/up) - cp(srcPath, workspacePath) - val mapping = Discovered.mapping(BetterFilesBuild) - val eval = new TestEvaluator(mapping, workspacePath, srcPath) - - 'test - { - - val Right(_) = eval(BetterFilesBuild.Core.test.test()) - val Right(_) = eval(BetterFilesBuild.Akka.test.compile) - val Right(_) = eval(BetterFilesBuild.ShapelessScanner.test.compile) - // Doesn't work yet, need to support curling down a jar and caching it - val Left(_) = eval(BetterFilesBuild.Benchmarks.test.test()) - } - - } -} diff --git a/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala b/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala index 0b6ac62b..ee24e70a 100644 --- a/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala +++ b/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala @@ -201,7 +201,7 @@ object HelloWorldTests extends TestSuite { assert(evalCount > 0) - val runResult = basePath / "hello-mill" + val runResult = basePath / 'out / 'runMain / 'dest / "hello-mill" assert( exists(runResult), read(runResult) == "hello rockjam, your age is: 25" @@ -216,7 +216,7 @@ object HelloWorldTests extends TestSuite { assert(evalCount > 0) - val runResult = basePath / "hello-mill" + val runResult = basePath / 'out / 'cross / v / 'runMain / 'dest / "hello-mill" assert( exists(runResult), read(runResult) == "hello rockjam, your age is: 25" @@ -252,7 +252,7 @@ object HelloWorldTests extends TestSuite { assert(evalCount > 0) - val runResult = basePath / "hello-mill" + val runResult = basePath / 'out / 'run / 'dest / "hello-mill" assert( exists(runResult), read(runResult) == "hello rockjam, your age is: 25" @@ -295,7 +295,7 @@ object HelloWorldTests extends TestSuite { evalCount > 0 ) - %("scala", result.path) + %("scala", result.path)(wd = basePath) val runResult = basePath / "hello-mill" assert( diff --git a/scalalib/src/test/scala/mill/scalalib/JawnTests.scala b/scalalib/src/test/scala/mill/scalalib/JawnTests.scala deleted file mode 100644 index 8449cc02..00000000 --- a/scalalib/src/test/scala/mill/scalalib/JawnTests.scala +++ /dev/null @@ -1,92 +0,0 @@ -package mill.scalalib - -import ammonite.ops.ImplicitWd._ -import ammonite.ops._ -import mill.{Module, scalalib} -import mill.define.{Cross, Task} -import mill.discover.Discovered -import mill.eval.Result -import utest._ -import mill.util.JsonFormatters._ -import mill.util.TestEvaluator - -object JawnBuild{ - val Jawn = Cross("2.10.6", "2.11.11", "2.12.3").map(new Jawn(_)) - class Jawn(crossVersion: String) extends mill.Module{ - trait JawnModule extends scalalib.SbtModule{ outer => - def scalaVersion = crossVersion - def scalacOptions = Seq( - "-deprecation", - "-optimize", - "-unchecked" - ) - def testProjectDeps: Seq[TestModule] = Nil - object test extends this.Tests{ - def projectDeps = super.projectDeps ++ testProjectDeps - def ivyDeps = Seq( - Dep("org.scalatest", "scalatest", "3.0.3"), - Dep("org.scalacheck", "scalacheck", "1.13.5") - ) - def testFramework = "org.scalatest.tools.Framework" - } - } - object Parser extends JawnModule{ - def basePath = JawnTests.srcPath/"parser" - } - object Util extends JawnModule{ - def projectDeps = Seq(Parser) - def testProjectDeps = Seq(Parser.test) - def basePath = JawnTests.srcPath/"util" - } - object Ast extends JawnModule{ - def projectDeps = Seq(Parser, Util) - def testProjectDeps = Seq(Parser.test, Util.test) - def basePath = JawnTests.srcPath/"ast" - } - class Support(name: String, ivyDeps0: Dep*) extends JawnModule{ - def projectDeps = Seq[Module](Parser) - def basePath = JawnTests.srcPath/"support"/"argonaut" - def ivyDeps = ivyDeps0 - } - object Argonaut extends Support("argonaut", Dep("io.argonaut", "argonaut", "6.2")) - object Json4s extends Support("json4s", Dep("org.json4s", "json4s-ast", "3.5.2")) - - object Play extends Support("play"){ - def ivyDeps = mill.T{ - scalaBinaryVersion() match{ - case "2.10" => Seq(Dep("com.typesafe.play", "play-json", "2.4.11")) - case "2.11" => Seq(Dep("com.typesafe.play", "play-json", "2.5.15")) - case _ => Seq(Dep("com.typesafe.play", "play-json", "2.6.0")) - } - } - } - - object Rojoma extends Support("rojoma", Dep("com.rojoma", "rojoma-json", "2.4.3")) - object RojomaV3 extends Support("rojoma-v3", Dep("com.rojoma", "rojoma-json-v3", "3.7.2")) - object Spray extends Support("spray", Dep("io.spray", "spray-json", "1.3.3")) - } - -} -object JawnTests extends TestSuite{ - val workspacePath = pwd / 'target / 'workspace / "jawn" - val srcPath = pwd / 'scalalib / 'src / 'test / 'resource / "jawn" - val tests = Tests{ - rm(workspacePath) - mkdir(workspacePath/up) - cp(srcPath, workspacePath) - val mapping = Discovered.mapping(JawnBuild) - val eval = new TestEvaluator(mapping, workspacePath, srcPath) - - 'test - { - def compileOutput = workspacePath / 'jawn / "2.12.3" / 'Parser / 'compile - def testCompileOutput = workspacePath / 'jawn / "2.12.3" / 'Parser / 'test / 'compile - assert(!exists(compileOutput), !exists(testCompileOutput)) - val Right(_) = eval(JawnBuild.Jawn("2.12.3").Parser.test.test()) - assert( - ls.rec(compileOutput).exists(_.last == "AsyncParser.class"), - ls.rec(testCompileOutput).exists(_.last == "CharBuilderSpec.class") - ) - } - - } -} |