diff options
Diffstat (limited to 'contrib/buildinfo/test/src/BuildInfoTests.scala')
-rw-r--r-- | contrib/buildinfo/test/src/BuildInfoTests.scala | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/contrib/buildinfo/test/src/BuildInfoTests.scala b/contrib/buildinfo/test/src/BuildInfoTests.scala new file mode 100644 index 00000000..4293bba7 --- /dev/null +++ b/contrib/buildinfo/test/src/BuildInfoTests.scala @@ -0,0 +1,111 @@ +package mill.contrib + +import java.util.jar.JarFile +import mill._ +import mill.define.Target +import mill.api.Result._ +import mill.eval.{Evaluator, Result} +import mill.modules.Assembly +import mill.scalalib.publish.VersionControl +import mill.scalalib.publish._ +import mill.util.{TestEvaluator, TestUtil} +import scala.collection.JavaConverters._ +import utest._ +import utest.framework.TestPath + + +object BuildInfoTests extends TestSuite { + + val scalaVersionString = "2.12.4" + trait BuildInfoModule extends TestUtil.BaseModule with scalalib.ScalaModule with BuildInfo { + def millSourcePath = TestUtil.getSrcPathBase() / millOuterCtx.enclosing.split('.') + def scalaVersion = scalaVersionString + } + + object EmptyBuildInfo extends BuildInfoModule + + object BuildInfo extends BuildInfoModule { + def buildInfoMembers=T{ + Map( + "scalaVersion" -> scalaVersion(), + ) + } + } + + object BuildInfoSettings extends BuildInfoModule { + def buildInfoPackageName = Some("foo") + def buildInfoObjectName = "bar" + def buildInfoMembers=T{ + Map( + "scalaVersion" -> scalaVersion() + ) + } + } + + val resourcePath = os.pwd / 'contrib / 'buildinfo / 'test / 'resources / "buildinfo" + + def workspaceTest[T](m: TestUtil.BaseModule, resourcePath: os.Path = resourcePath) + (t: TestEvaluator => T) + (implicit tp: TestPath): T = { + val eval = new TestEvaluator(m) + os.remove.all(m.millSourcePath) + os.remove.all(eval.outPath) + os.makeDir.all(m.millSourcePath / os.up) + os.copy(resourcePath, m.millSourcePath) + t(eval) + } + + def tests: Tests = Tests { + + 'buildinfo - { + 'createSourcefile - workspaceTest(BuildInfo){ eval => + val expected = + s"""| + |object BuildInfo { + | def scalaVersion = "2.12.4" + |}""".stripMargin + val Right((result, evalCount)) = eval.apply(BuildInfo.buildInfo) + assert( + result.head.path == eval.outPath / 'buildInfo / 'dest / "BuildInfo.scala" && + os.exists(result.head.path) && + os.read(result.head.path) == expected + ) + } + + 'notCreateEmptySourcefile - workspaceTest(EmptyBuildInfo){ eval => + val Right((result, evalCount)) = eval.apply(EmptyBuildInfo.buildInfo) + assert( + result.isEmpty && + !os.exists(eval.outPath / 'buildInfo / 'dest / "BuildInfo.scala") + ) + } + + 'supportCustomSettings - workspaceTest(BuildInfoSettings){ eval => + val expected = + s"""|package foo + |object bar { + | def scalaVersion = "2.12.4" + |}""".stripMargin + val Right((result, evalCount)) = eval.apply(BuildInfoSettings.buildInfo) + assert( + result.head.path == eval.outPath / 'buildInfo / 'dest / "BuildInfo.scala" && + os.exists(result.head.path) && + os.read(result.head.path) == expected + ) + } + + 'compile - workspaceTest(BuildInfo){ eval => + val Right((result, evalCount)) = eval.apply(BuildInfo.compile) + assert(true) + } + + 'run - workspaceTest(BuildInfo){ eval => + val runResult = eval.outPath / "hello-mill" + val Right((result, evalCount)) = eval.apply(BuildInfo.run(runResult.toString)) + assert( + os.exists(runResult), + os.read(runResult) == scalaVersionString) + } + } + } +} |