-
I'm trying to educate myself on mills new "sub builds", and as part of that gotten stuck on testing xPlatform. I've gotten to this stage by reading examples and docs, and I think it is directionally correct. Goal is to test and publish package build.core
import mill._
import mill.scalalib._
import mill.scalalib.publish._
import mill.scalajslib._
import mill.scalajslib.api._
import build.Config
object `package` extends RootModule {
trait SharedModule extends build.CoreModule with PlatformScalaModule {
}
trait testT extends SharedModule with TestModule.Munit {
override def ivyDeps = super.ivyDeps() ++
Agg(
ivy"org.scalameta::munit:1.1.1"
)
}
object jvm extends SharedModule with ScalaModule with build.PublishModule {
override def compileIvyDeps: T[Agg[Dep]] = super.compileIvyDeps() ++ Agg(
ivy"sh.almond:scala-kernel-api_3.3.5:0.14.1".exclude(("com.github.jupyter", "jvm-repr")),
)
override def ivyDeps = ???
object test extends testT {
override def moduleDeps: Seq[JavaModule] = Seq(jvm)
}
}
object js extends SharedModule with ScalaJSModule with build.PublishModule {
def scalaJSVersion = "1.19.0"
override def ivyDeps = super.ivyDeps() ++
Agg(
ivy"org.scala-js::scalajs-dom::2.8.0",
ivy"org.scala-js::scalajs-java-securerandom::1.0.0".withDottyCompat(scalaVersion())
)
object test extends testT {
override def moduleDeps: Seq[JavaModule] = Seq(js)
}
}
} My issue is the cross-tests. mill show core.js.test.sources
[1/1] show
[
"ref:v0:11b009ef:/Users/simon/Code/dedav4s/core/src",
"ref:v0:f7e0cde2:/Users/simon/Code/dedav4s/core/src-test"
] As I have it configured, the tests modules are only picking up what I would consider to be the "shared" tests and sources. Is there an obvious / canonical solution to this? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Here's my best attempt; package build.core
import mill._
import mill.scalalib._
import mill.scalalib.publish._
import mill.scalajslib._
import mill.scalajslib.api._
import build.Config
object `package` extends RootModule {
trait SharedModule extends build.CoreModule with PlatformScalaModule {
}
trait SharedTest extends SharedModule with TestModule.Munit {
override def ivyDeps = super.ivyDeps() ++
Agg(
ivy"org.scalameta::munit:1.1.1"
)
}
object jvm extends SharedModule with ScalaModule with build.PublishModule {
override def ivyDeps = T {
super.ivyDeps() ++ Agg(
Config.oslib
)
}
object test extends testT {
override def moduleDeps: Seq[JavaModule] = Seq(jvm)
}
}
object js extends SharedModule with ScalaJSModule with build.PublishModule {
def scalaJSVersion = "1.19.0"
override def ivyDeps = super.ivyDeps() ++
Agg(
ivy"org.scala-js::scalajs-dom::2.8.0",
ivy"org.scala-js::scalajs-java-securerandom::1.0.0".withDottyCompat(scalaVersion())
)
}
object test extends Module {
object js extends SharedTest with build.CommonJs {
override def moduleDeps: Seq[JavaModule] = Seq(build.core.js)
}
object jvm extends SharedTest {
override def moduleDeps: Seq[JavaModule] = Seq(build.core.jvm)
override def ivyDeps = super.ivyDeps() ++
Agg(
ivy"com.microsoft.playwright:playwright:${Config.playwright}",
ivy"com.microsoft.playwright:driver-bundle:${Config.playwright}"
)
}
}
} This kind of commands seems to work... so I think this might actually be a good solution mill core.test._
mill show core.test._.sources kudos to mill that it's possible for someone not that close to mill to be able to figure this out in userland. |
Beta Was this translation helpful? Give feedback.
Here's my best attempt;