11import mill ._ , scalalib ._ , scalajslib ._ , scalanativelib ._ , publish ._
2+ import $ivy .`de.tototec::de.tobiasroeser.mill.vcs.version_mill0.9:0.1.1`
3+ import de .tobiasroeser .mill .vcs .version .VcsVersion
24
5+ val dottyVersions = sys.props.get(" dottyVersion" ).toList
6+
7+ val scalaVersions = " 2.11.12" :: " 2.12.13" :: " 2.13.4" :: " 3.0.0" :: dottyVersions
8+ val scala2Versions = scalaVersions.filter(_.startsWith(" 2." ))
9+
10+ val scalaJSVersions = for {
11+ scalaV <- scalaVersions
12+ scalaJSV <- Seq (" 0.6.33" , " 1.5.1" )
13+ if scalaV.startsWith(" 2." ) || scalaJSV.startsWith(" 1." )
14+ } yield (scalaV, scalaJSV)
15+
16+ val scalaNativeVersions = for {
17+ scalaV <- scala2Versions
18+ scalaNativeV <- Seq (" 0.4.0" )
19+ } yield (scalaV, scalaNativeV)
320
421trait UtestModule extends PublishModule {
522 def artifactName = " utest"
623
7- def publishVersion = " 0.7.1 "
24+ def publishVersion = VcsVersion .vcsState().format()
825
926 def pomSettings = PomSettings (
1027 description = artifactName(),
@@ -20,7 +37,7 @@ trait UtestModule extends PublishModule {
2037 )
2138 )
2239}
23- trait UtestMainModule extends CrossScalaModule {
40+ abstract class UtestMainModule ( crossScalaVersion : String ) extends CrossScalaModule {
2441 def millSourcePath = super .millSourcePath / offset
2542
2643 def offset : os.RelPath = os.rel
@@ -33,6 +50,14 @@ trait UtestMainModule extends CrossScalaModule {
3350 )
3451 )
3552 )
53+ override def docJar =
54+ if (crossScalaVersion.startsWith(" 2" )) super .docJar
55+ else T {
56+ val outDir = T .ctx().dest
57+ val javadocDir = outDir / ' javadoc
58+ os.makeDir.all(javadocDir)
59+ mill.api.Result .Success (mill.modules.Jvm .createJar(Agg (javadocDir))(outDir))
60+ }
3661}
3762
3863
@@ -56,44 +81,43 @@ trait UtestTestModule extends ScalaModule with TestModule {
5681}
5782
5883object utest extends Module {
59- object jvm extends Cross [JvmUtestModule ](" 2.12.8 " , " 2.13.0 " )
84+ object jvm extends Cross [JvmUtestModule ](scalaVersions : _* )
6085 class JvmUtestModule (val crossScalaVersion : String )
61- extends UtestMainModule with ScalaModule with UtestModule {
86+ extends UtestMainModule (crossScalaVersion) with ScalaModule with UtestModule {
6287 def ivyDeps = Agg (
63- ivy " org.scala-sbt:test-interface::1.0 " ,
64- ivy " org.portable-scala::portable-scala-reflect::0.1.0 " ,
88+ ivy " org.scala-sbt:test-interface::1.0 "
89+ ) ++ (if (crossScalaVersion.startsWith(" 2" )) Agg (
90+ ivy " org.portable-scala::portable-scala-reflect::0.1.1 " ,
6591 ivy " org.scala-lang:scala-reflect: $crossScalaVersion"
66- )
92+ ) else Agg ())
6793 object test extends Tests with UtestTestModule {
6894 val crossScalaVersion = JvmUtestModule .this .crossScalaVersion
6995 }
7096 }
7197
72- object js extends Cross [JsUtestModule ](
73- (" 2.12.8" , " 0.6.26" ), (" 2.13.0" , " 0.6.28" )/* , ("2.12.8", "1.0.0-M8"), ("2.13.0", "1.0.0-M8")*/
74- )
98+ object js extends Cross [JsUtestModule ](scalaJSVersions : _* )
7599 class JsUtestModule (val crossScalaVersion : String , crossJSVersion : String )
76- extends UtestMainModule with ScalaJSModule with UtestModule {
100+ extends UtestMainModule (crossScalaVersion) with ScalaJSModule with UtestModule {
77101 def offset = os.up
78102 def ivyDeps = Agg (
79- ivy " org.scala-js::scalajs-test-interface: $crossJSVersion" ,
80- ivy " org.portable-scala::portable-scala-reflect::0.1.0 " ,
103+ ivy " org.scala-js::scalajs-test-interface: $crossJSVersion" .withDottyCompat(crossScalaVersion),
104+ ivy " org.portable-scala::portable-scala-reflect::0.1.1 " .withDottyCompat(crossScalaVersion)
105+ ) ++ (if (crossScalaVersion.startsWith(" 2" )) Agg (
81106 ivy " org.scala-lang:scala-reflect: $crossScalaVersion"
82- )
107+ ) else Agg ())
83108 def scalaJSVersion = crossJSVersion
84109 object test extends Tests with UtestTestModule {
85110 def offset = os.up
86111 val crossScalaVersion = JsUtestModule .this .crossScalaVersion
87112 }
88113 }
89114
90- object native extends Cross [NativeUtestModule ](( " 2.11.12 " , " 0.3.8 " ) /* , ("2.11.12", "0.4.0-M2") */ )
115+ object native extends Cross [NativeUtestModule ](scalaNativeVersions : _* )
91116 class NativeUtestModule (val crossScalaVersion : String , crossScalaNativeVersion : String )
92- extends UtestMainModule with ScalaNativeModule with UtestModule {
117+ extends UtestMainModule (crossScalaVersion) with ScalaNativeModule with UtestModule {
93118 def offset = os.up
94119 def ivyDeps = super .ivyDeps() ++ Agg (
95- ivy " org.scala-native::test-interface:: $crossScalaNativeVersion" ,
96- ivy " org.scala-lang:scala-reflect: $crossScalaVersion" ,
120+ ivy " org.scala-native::test-interface:: $crossScalaNativeVersion"
97121 )
98122
99123 def scalaNativeVersion = crossScalaNativeVersion
0 commit comments