Skip to content

Commit 0685b83

Browse files
authored
Improve Mill 1 support - POC (#232)
For Mill 1.x tests, don't generate a `plugins.sc` but instead generate a meta-build. This is WIP and comes without a integration test, since I need something rather quick. Pull request: #232
1 parent 11ab233 commit 0685b83

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

integrationtest/src/de/tobiasroeser/mill/integrationtest/MillIntegrationTestModule.scala

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ trait MillIntegrationTestModule extends TaskModule with ExtraCoursierSupport wit
3737
* Derived from [[sources]].
3838
*/
3939
def testCases: T[Seq[PathRef]] = T {
40+
val buildFiles = Seq("build.mill", "build.mill.scala", "build.mill.yaml", "build.sc")
4041
for {
41-
src <- sources() if src.path.toIO.isDirectory
42+
src <- sources()
43+
if os.exists(src.path) && os.isDir(src.path)
4244
d <- os.list(src.path)
43-
if (d / "build.sc").toIO.isFile
45+
if buildFiles.map(d / _).exists(os.isFile)
4446
} yield PathRef(d)
4547
}
4648

@@ -100,7 +102,7 @@ trait MillIntegrationTestModule extends TaskModule with ExtraCoursierSupport wit
100102
val millTestVersion_ = millTestVersion()
101103
println(s"Mill version: ${millTestVersion_}")
102104

103-
val importFileContents = {
105+
lazy val importFileContents = {
104106
val imports = artifactMetadata.map { dep =>
105107
s"import $$ivy.`${dep.group}:${dep.id}:${dep.version}`"
106108
}
@@ -110,11 +112,35 @@ trait MillIntegrationTestModule extends TaskModule with ExtraCoursierSupport wit
110112
|""".stripMargin
111113
}
112114

115+
lazy val metaBuildContents = {
116+
val mvnDeps = artifactMetadata.map { dep =>
117+
s"""mvn"${dep.group}:${dep.id}:${dep.version}""""
118+
}
119+
120+
s"""import mill._, mill.api._, mill.meta._, mill.scalalib._
121+
|
122+
|object `package` extends MillBuildRootModule {
123+
| def mvnDeps = Seq(
124+
| // the plugin under test
125+
| ${mvnDeps.mkString(",\n ")}
126+
| )
127+
|
128+
| def compile = {
129+
| BuildCtx.withFilesystemCheckerDisabled {
130+
| os.remove(BuildCtx.workspaceRoot / os.up / "plugins.sc")
131+
| }
132+
| super.compile()
133+
| }
134+
|}
135+
|""".stripMargin
136+
}
113137

114-
val noServerOpt = parseVersion(millTestVersion_).get match {
138+
val millVersion = parseVersion(millTestVersion_).get
139+
val noServerOpt = millVersion match {
115140
case MillVersion(0, 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7, _, _, _, _) => "--interactive"
116141
case _ => "--no-server"
117142
}
143+
val isMill0 = millVersion.major == 0
118144

119145
val testCases = testInvocations()
120146
// val testInvocationsMap: Map[PathRef, TestInvocation.Targets] = testCases.toMap
@@ -145,8 +171,13 @@ trait MillIntegrationTestModule extends TaskModule with ExtraCoursierSupport wit
145171
copyWithMerge(from = src, to = testPath, createFolders = true, mergeFolders = true)
146172
}
147173

148-
// Write the plugins.sc file
149-
os.write(testPath / "plugins.sc", importFileContents)
174+
if (isMill0) {
175+
// Write the plugins.sc file
176+
os.write(testPath / "plugins.sc", importFileContents)
177+
} else {
178+
// Write a meta build
179+
os.write(testPath / "mill-build" / "build.mill", metaBuildContents, createFolders = true)
180+
}
150181

151182
val millExe = downloadMillTestVersion().path
152183

0 commit comments

Comments
 (0)