1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
package mill.scalajslib
import mill._
import mill.define.Discover
import mill.eval.Evaluator
import mill.util._
import mill.scalalib._
import utest._
import mill.scalajslib.api._
object MultiModuleTests extends TestSuite {
val workspacePath = TestUtil.getOutPathStatic() / "multi-module"
val sourcePath = os.pwd / 'scalajslib / 'test / 'resources / "multi-module"
object MultiModule extends TestUtil.BaseModule {
trait BaseModule extends ScalaJSModule {
def scalaVersion = "2.12.4"
def scalaJSVersion = "0.6.22"
}
object client extends BaseModule {
override def millSourcePath = workspacePath / 'client
override def moduleDeps = Seq(shared)
override def mainClass = Some("Main")
object test extends Tests {
def testFrameworks = Seq("utest.runner.Framework")
override def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.6.3")
}
}
object shared extends BaseModule {
override def millSourcePath = workspacePath / 'shared
}
override lazy val millDiscover = Discover[this.type]
}
val evaluator = TestEvaluator.static(MultiModule)
def tests: Tests = Tests {
prepareWorkspace()
def checkOpt(mode: OptimizeMode) = {
val task = mode match {
case FullOpt => MultiModule.client.fullOpt
case FastOpt => MultiModule.client.fastOpt
}
val Right((linked, evalCount)) = evaluator(task)
val runOutput = ScalaJsUtils.runJS(linked.path)
assert(
evalCount > 0,
runOutput == "Hello from Scala.js, result is: 3"
)
}
'fastOpt - TestUtil.disableInJava9OrAbove(checkOpt(FastOpt))
'fullOpt - TestUtil.disableInJava9OrAbove(checkOpt(FullOpt))
'test - {
val Right(((_, testResults), evalCount)) = evaluator(MultiModule.client.test.test())
assert(
evalCount > 0,
testResults.size == 3,
testResults.forall(_.status == "Success")
)
}
'run - {
val command = MultiModule.client.run()
val Right((_, evalCount)) = evaluator(command)
val paths = Evaluator.resolveDestPaths(
evaluator.outPath,
command.ctx.segments
)
val log = os.read(paths.log)
assert(
evalCount > 0,
log.contains("node"),
log.contains("Hello from Scala.js, result is: 3")
)
}
}
def prepareWorkspace(): Unit = {
os.remove.all(workspacePath)
os.makeDir.all(workspacePath / os.up)
os.copy(sourcePath, workspacePath)
}
}
|