diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-12 16:56:02 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-12 16:56:02 -0800 |
commit | 9ba4cb69331386dfde9bac69dc2d5b22401face3 (patch) | |
tree | 120349e8015ae5717d36bd44209cde6ff9543518 /scalajslib/test/src/NodeJSConfigTests.scala | |
parent | ea7fceb6e56f53bde3517586dfc57e10a605a524 (diff) | |
download | mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.tar.gz mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.tar.bz2 mill-9ba4cb69331386dfde9bac69dc2d5b22401face3.zip |
collapse boilerplate folder structure within src/ folders (#505)
* collapse boilerplate folder structure within src/ folders
* .
Diffstat (limited to 'scalajslib/test/src/NodeJSConfigTests.scala')
-rw-r--r-- | scalajslib/test/src/NodeJSConfigTests.scala | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/scalajslib/test/src/NodeJSConfigTests.scala b/scalajslib/test/src/NodeJSConfigTests.scala new file mode 100644 index 00000000..d9e6b45b --- /dev/null +++ b/scalajslib/test/src/NodeJSConfigTests.scala @@ -0,0 +1,103 @@ +package mill.scalajslib + +import mill._ +import mill.define.Discover +import mill.eval.Evaluator +import mill.scalalib.{CrossScalaModule, DepSyntax} +import mill.util.{TestEvaluator, TestUtil} +import utest._ +import mill.scalajslib.api._ + +object NodeJSConfigTests extends TestSuite { + val workspacePath = TestUtil.getOutPathStatic() / "hello-js-world" + val scalaVersion = "2.12.4" + val scalaJSVersion = "0.6.22" + val utestVersion = "0.6.3" + val nodeArgsEmpty = List() + val nodeArgs2G = List("--max-old-space-size=2048") + val nodeArgs4G = List("--max-old-space-size=4096") + + trait HelloJSWorldModule extends CrossScalaModule with ScalaJSModule { + override def millSourcePath = workspacePath + def publishVersion = "0.0.1-SNAPSHOT" + override def mainClass = Some("Main") + } + + object HelloJSWorld extends TestUtil.BaseModule { + val matrix = for { + scala <- Seq(scalaVersion) + nodeArgs <- Seq(nodeArgsEmpty, nodeArgs2G) + } yield (scala, nodeArgs) + + object helloJsWorld extends Cross[BuildModule](matrix:_*) + class BuildModule(val crossScalaVersion: String, nodeArgs: List[String]) extends HelloJSWorldModule { + override def artifactName = "hello-js-world" + def scalaJSVersion = NodeJSConfigTests.scalaJSVersion + override def nodeJSConfig = T { NodeJSConfig(args = nodeArgs) } + } + + object buildUTest extends Cross[BuildModuleUtest](matrix:_*) + class BuildModuleUtest(crossScalaVersion: String, nodeArgs: List[String]) + extends BuildModule(crossScalaVersion, nodeArgs) { + object test extends super.Tests { + override def sources = T.sources{ millSourcePath / 'src / 'utest } + def testFrameworks = Seq("utest.runner.Framework") + override def ivyDeps = Agg( + ivy"com.lihaoyi::utest::$utestVersion" + ) + override def nodeJSConfig = T { NodeJSConfig(args = nodeArgs) } + } + } + + override lazy val millDiscover = Discover[this.type] + } + + val millSourcePath = os.pwd / 'scalajslib / 'test / 'resources / "hello-js-world" + + val helloWorldEvaluator = TestEvaluator.static(HelloJSWorld) + + val mainObject = helloWorldEvaluator.outPath / 'src / "Main.scala" + + def tests: Tests = Tests { + prepareWorkspace() + + def checkLog(command: define.Command[_], nodeArgs: List[String], notNodeArgs: List[String]) = { + helloWorldEvaluator(command) + val paths = Evaluator.resolveDestPaths( + helloWorldEvaluator.outPath, + command.ctx.segments + ) + val log = os.read(paths.log) + assert( + nodeArgs.forall(log.contains), + notNodeArgs.forall(!log.contains(_)) + ) + } + + 'test - { + + def checkUtest(nodeArgs: List[String], notNodeArgs: List[String]) = { + checkLog(HelloJSWorld.buildUTest(scalaVersion, nodeArgs).test.test(), nodeArgs, notNodeArgs) + } + + 'test - checkUtest(nodeArgsEmpty, nodeArgs2G) + 'test2G - checkUtest(nodeArgs2G, nodeArgs4G) + } + + def checkRun(nodeArgs: List[String], notNodeArgs: List[String]): Unit = { + checkLog(HelloJSWorld.helloJsWorld(scalaVersion, nodeArgs).run(), nodeArgs, notNodeArgs) + } + + 'run - { + 'run - checkRun(nodeArgsEmpty, nodeArgs2G) + 'run2G - checkRun(nodeArgs2G, nodeArgs4G) + } + } + + def prepareWorkspace(): Unit = { + os.remove.all(workspacePath) + os.makeDir.all(workspacePath / os.up) + os.copy(millSourcePath, workspacePath) + } + +} |