Skip to content

Commit c27aa8d

Browse files
committed
Merge branch 'cheeseng-mima-for-3.1' into 3.1.x
2 parents 87611d3 + 83888d8 commit c27aa8d

File tree

3 files changed

+70
-9
lines changed

3 files changed

+70
-9
lines changed

README.md

+24
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,30 @@ If you would like to export a particular private key into a separate GPG file, y
117117

118118
With Sonatype credentials and GPG file in place, you can now publish to Sonatype.
119119

120+
Before publishing any patch release, binary compatibility with previous version should be checked, using Java 6 (for Scala 2.10 and 2.11):
121+
122+
$ sbt ++2.11.11 scalactic/package scalactic/mimaReportBinaryIssues
123+
$ sbt ++2.11.11 scalatest/package scalatest/mimaReportBinaryIssues
124+
$ sbt ++2.11.11 scalacticJS/package scalacticJS/mimaReportBinaryIssues
125+
$ sbt ++2.11.11 scalatestJS/package scalatestJS/mimaReportBinaryIssues
126+
127+
$ sbt ++2.10.6 scalactic/package scalactic/mimaReportBinaryIssues
128+
$ sbt ++2.10.6 scalatest/package scalatest/mimaReportBinaryIssues
129+
$ sbt ++2.10.6 scalacticJS/package scalacticJS/mimaReportBinaryIssues
130+
$ sbt ++2.10.6 scalatestJS/package scalatestJS/mimaReportBinaryIssues
131+
132+
and using Java 8 (for Scala 2.12 and 2.13):
133+
134+
$ sbt ++2.12.4 scalactic/package scalactic/mimaReportBinaryIssues
135+
$ sbt ++2.12.4 scalatest/package scalatest/mimaReportBinaryIssues
136+
$ sbt ++2.12.4 scalacticJS/package scalacticJS/mimaReportBinaryIssues
137+
$ sbt ++2.12.4 scalatestJS/package scalatestJS/mimaReportBinaryIssues
138+
139+
$ sbt ++2.13.0-M2 scalactic/package scalactic/mimaReportBinaryIssues
140+
$ sbt ++2.13.0-M2 scalatest/package scalatest/mimaReportBinaryIssues
141+
$ sbt ++2.13.0-M2 scalacticJS/package scalacticJS/mimaReportBinaryIssues
142+
$ sbt ++2.13.0-M2 scalatestJS/package scalatestJS/mimaReportBinaryIssues
143+
120144
To publish scalactic, scalatest and scalatest-app (for Scala and Scala-js, version 2.11 and 2.10, and make sure you're on Java 6) to Sonatype, use the following command:
121145

122146
`$ sbt clean publishSigned ++2.11.12 "project scalatestAppJS" clean publishSigned ++2.10.7 "project scalatestApp" clean publishSigned "project scalatestAppJS" clean publishSigned`

project/plugins.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3")
33
addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.7.0")
44

55
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.20")
6+
7+
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.18")

project/scalatest.scala

+44-9
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import com.typesafe.sbt.osgi.SbtOsgi._
77
import com.typesafe.sbt.SbtPgp._
88
import org.scalajs.sbtplugin.ScalaJSPlugin
99
import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
10+
import com.typesafe.tools.mima.plugin.MimaKeys.{mimaPreviousArtifacts, mimaCurrentClassfiles, mimaBinaryIssueFilters}
11+
import com.typesafe.tools.mima.core._
12+
import com.typesafe.tools.mima.core.ProblemFilters._
1013

1114
object ScalatestBuild extends Build {
1215

@@ -21,7 +24,8 @@ object ScalatestBuild extends Build {
2124
// > ++ 2.10.5
2225
val buildScalaVersion = "2.12.4"
2326

24-
val releaseVersion = "3.0.1"
27+
val releaseVersion = "3.1.0"
28+
val previousReleaseVersion = "3.0.5"
2529

2630
val scalacheckVersion = "1.13.5"
2731
val easyMockVersion = "3.2"
@@ -31,7 +35,7 @@ object ScalatestBuild extends Build {
3135
val junitVersion = "4.12"
3236
val pegdownVersion = "1.4.2"
3337

34-
val githubTag = "release-3.0.1" // for scaladoc source urls
38+
val githubTag = "release-3.1.0" // for scaladoc source urls
3539

3640
val scalatestDocSourceUrl =
3741
"https://github.com/scalatest/scalatest/tree/"+ githubTag +
@@ -321,12 +325,15 @@ object ScalatestBuild extends Build {
321325
publishLocal := {}
322326
)
323327

328+
lazy val deleteJsDependenciesTask = taskKey[Unit]("Delete JS_DEPENDENCIES")
329+
324330
lazy val scalacticMacroJS = Project("scalacticMacroJS", file("scalactic-macro.js"))
325331
.settings(sharedSettings: _*)
326332
.settings(
327333
projectTitle := "Scalactic Macro.js",
328334
organization := "org.scalactic",
329335
sourceGenerators in Compile += {
336+
// We'll delete JS_DEPENDENCIES in scalactic-macro.js
330337
Def.task{
331338
GenScalacticJS.genMacroScala((sourceManaged in Compile).value, version.value, scalaVersion.value) ++
332339
ScalacticGenResourcesJSVM.genResources((sourceManaged in Compile).value / "org" / "scalactic", version.value, scalaVersion.value) ++
@@ -335,7 +342,13 @@ object ScalatestBuild extends Build {
335342
},
336343
// Disable publishing macros directly, included in scalactic main jar
337344
publish := {},
338-
publishLocal := {}
345+
publishLocal := {},
346+
deleteJsDependenciesTask <<= (classDirectory in Compile) map { jsDependenciesFile =>
347+
(jsDependenciesFile/ "JS_DEPENDENCIES").delete()
348+
()
349+
//val loader: ClassLoader = ClasspathUtilities.toLoader(classpath.map(_.data).map(_.getAbsoluteFile))
350+
//loader.loadClass("your.class.Here").newInstance()
351+
} triggeredBy(compile in Compile)
339352
).enablePlugins(ScalaJSPlugin)
340353

341354
lazy val scalactic = Project("scalactic", file("scalactic"))
@@ -356,7 +369,9 @@ object ScalatestBuild extends Build {
356369
// include the macro sources in the main source jar
357370
mappings in (Compile, packageSrc) ++= mappings.in(scalacticMacro, Compile, packageSrc).value,
358371
scalacticDocSourcesSetting,
359-
docTaskSetting
372+
docTaskSetting,
373+
mimaPreviousArtifacts := Set(organization.value %% name.value % previousReleaseVersion),
374+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (name.value + "_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar")
360375
).settings(osgiSettings: _*).settings(
361376
OsgiKeys.exportPackage := Seq(
362377
"org.scalactic",
@@ -396,7 +411,13 @@ object ScalatestBuild extends Build {
396411
Def.task {
397412
GenScalacticJS.genResource((resourceManaged in Compile).value, version.value, scalaVersion.value)
398413
}.taskValue
399-
}
414+
},
415+
// include the macro classes and resources in the main jar
416+
mappings in (Compile, packageBin) ++= mappings.in(scalacticMacroJS, Compile, packageBin).value,
417+
// include the macro sources in the main source jar
418+
mappings in (Compile, packageSrc) ++= mappings.in(scalacticMacroJS, Compile, packageSrc).value,
419+
mimaPreviousArtifacts := Set(organization.value %%% moduleName.value % previousReleaseVersion),
420+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (moduleName.value + "_" + "sjs0.6_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar")
400421
).settings(osgiSettings: _*).settings(
401422
OsgiKeys.exportPackage := Seq(
402423
"org.scalactic",
@@ -500,7 +521,15 @@ object ScalatestBuild extends Build {
500521
ScalaTestGenResourcesJVM.genFailureMessages((sourceManaged in Compile).value / "org" / "scalatest", version.value, scalaVersion.value)
501522
}.taskValue
502523
},
503-
docTaskSetting
524+
docTaskSetting,
525+
mimaPreviousArtifacts := Set(organization.value %% name.value % previousReleaseVersion),
526+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (name.value + "_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar"),
527+
mimaBinaryIssueFilters ++= {
528+
Seq(
529+
exclude[MissingClassProblem]("org.scalatest.tools.SbtCommandParser$"),
530+
exclude[MissingClassProblem]("org.scalatest.tools.SbtCommandParser")
531+
)
532+
}
504533
).settings(osgiSettings: _*).settings(
505534
OsgiKeys.exportPackage := Seq(
506535
"org.scalatest",
@@ -610,7 +639,9 @@ object ScalatestBuild extends Build {
610639
//GenSafeStyles.genMainForScalaJS((sourceManaged in Compile).value / "org" / "scalatest", version.value, scalaVersion.value)
611640
}.taskValue
612641
},
613-
scalatestJSDocTaskSetting
642+
scalatestJSDocTaskSetting,
643+
mimaPreviousArtifacts := Set(organization.value %%% moduleName.value % previousReleaseVersion),
644+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (moduleName.value + "_" + "sjs0.6_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar")
614645
).settings(osgiSettings: _*).settings(
615646
OsgiKeys.exportPackage := Seq(
616647
"org.scalatest",
@@ -701,7 +732,9 @@ object ScalatestBuild extends Build {
701732
Seq.empty[File]
702733
}.taskValue
703734
},
704-
unmanagedResourceDirectories in Compile += baseDirectory.value / "scalatest" / "src" / "main" / "resources"
735+
unmanagedResourceDirectories in Compile += baseDirectory.value / "scalatest" / "src" / "main" / "resources",
736+
mimaPreviousArtifacts := Set(organization.value %% name.value % previousReleaseVersion),
737+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (name.value + "_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar")
705738
).settings(osgiSettings: _*).settings(
706739
OsgiKeys.exportPackage := Seq(
707740
"org.scalatest",
@@ -773,7 +806,9 @@ object ScalatestBuild extends Build {
773806
(new File(crossTarget.value, "classes")).mkdirs()
774807
Seq.empty[File]
775808
}.taskValue
776-
}
809+
},
810+
mimaPreviousArtifacts := Set(organization.value %%% moduleName.value % previousReleaseVersion),
811+
mimaCurrentClassfiles := (classDirectory in Compile).value.getParentFile / (moduleName.value + "_" + "sjs0.6_" + scalaBinaryVersion.value + "-" + releaseVersion + ".jar")
777812
).settings(osgiSettings: _*).settings(
778813
OsgiKeys.exportPackage := Seq(
779814
"org.scalatest",

0 commit comments

Comments
 (0)