From 1fdb3e36702626151add27ccae0198a471e2fcc2 Mon Sep 17 00:00:00 2001 From: Brice Jaglin Date: Wed, 12 May 2021 22:46:14 +0200 Subject: [PATCH] make it possible to and do build against a scalafix SNAPSHOT - clients that have sonatype public in the metabuild and do not override scalafixResolvers can resolve a SNAPSHOT scalafix as sonatype snapshots is added by default - fix failing tests by sticking to the plugin default - fix failing scripted by removing unnecessary scalafixResolvers overrides or adding the sonatype snapshots resolver when scalafix is resolved directly - fix breaking changes in scalafix --- project/Dependencies.scala | 4 ++-- .../scala/scalafix/sbt/ScalafixTestkitPlugin.scala | 5 +++++ .../sbt-1.3/semanticdb-enabled/project/plugins.sbt | 1 + .../tests/src/test/scala/fix/InputOutputSuite.scala | 11 ++++++----- src/sbt-test/sbt-1.5/scala-3/project/plugins.sbt | 4 ---- .../sbt-1.5/scalafixEnable/project/plugins.sbt | 4 ---- src/sbt-test/sbt-scalafix/basic/build.sbt | 3 +-- src/sbt-test/sbt-scalafix/concurrency/build.sbt | 1 + src/sbt-test/sbt-scalafix/local-rules/build.sbt | 6 +----- .../tests/src/test/scala/fix/InputOutputSuite.scala | 11 ++++++----- .../scalafix/internal/sbt/SbtCompletionsSuite.scala | 9 +++++++-- .../scalafix/internal/sbt/ScalafixAPISuite.scala | 9 +++++++-- 12 files changed, 37 insertions(+), 31 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 02dafd5d..0d208fc8 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -2,8 +2,8 @@ import sbt._ object Dependencies { val x = List(1) // scalafix:ok - // when bumping remove dep on SNAPSHOT in sbt-1.5 scripted tests - def scalafixVersion: String = "0.9.27" + def scalafixVersion: String = "0.9.27+52-6c9eeec9-SNAPSHOT" + val all = List( "org.eclipse.jgit" % "org.eclipse.jgit" % "5.11.0.202103091610-r", "ch.epfl.scala" % "scalafix-interfaces" % scalafixVersion, diff --git a/src/main/scala/scalafix/sbt/ScalafixTestkitPlugin.scala b/src/main/scala/scalafix/sbt/ScalafixTestkitPlugin.scala index 4a2ad9f5..fa3d9df7 100644 --- a/src/main/scala/scalafix/sbt/ScalafixTestkitPlugin.scala +++ b/src/main/scala/scalafix/sbt/ScalafixTestkitPlugin.scala @@ -27,6 +27,11 @@ object ScalafixTestkitPlugin extends AutoPlugin { } import autoImport._ + override def buildSettings: Seq[Def.Setting[_]] = + List( + resolvers += Resolver.sonatypeRepo("snapshots") + ) + override def projectSettings: Seq[Def.Setting[_]] = List( scalafixTestkitInputScalacOptions := scalacOptions.value, diff --git a/src/sbt-test/sbt-1.3/semanticdb-enabled/project/plugins.sbt b/src/sbt-test/sbt-1.3/semanticdb-enabled/project/plugins.sbt index 843726fa..2d3b4d3b 100644 --- a/src/sbt-test/sbt-1.3/semanticdb-enabled/project/plugins.sbt +++ b/src/sbt-test/sbt-1.3/semanticdb-enabled/project/plugins.sbt @@ -1 +1,2 @@ +resolvers += Resolver.sonatypeRepo("public") addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % sys.props("plugin.version")) diff --git a/src/sbt-test/sbt-1.3/testkit/tests/src/test/scala/fix/InputOutputSuite.scala b/src/sbt-test/sbt-1.3/testkit/tests/src/test/scala/fix/InputOutputSuite.scala index 277d3a8e..5d1fefb2 100644 --- a/src/sbt-test/sbt-1.3/testkit/tests/src/test/scala/fix/InputOutputSuite.scala +++ b/src/sbt-test/sbt-1.3/testkit/tests/src/test/scala/fix/InputOutputSuite.scala @@ -2,15 +2,16 @@ package fix import scalafix.testkit._ import scala.util.control.NonFatal +import org.scalatest.FunSuiteLike import org.scalatest.exceptions.TestFailedException object IntputOutputSuite { def main(args: Array[String]): Unit = { if (Array("--save-expect").sameElements(args)) { - val suite = new SemanticRuleSuite( - TestkitProperties.loadFromResources(), - isSaveExpect = true - ) { + val suite = new AbstractSemanticRuleSuite with FunSuiteLike { + override val props = TestkitProperties.loadFromResources() + override val isSaveExpect = true + testsToRun.foreach { t => try evaluateTestBody(t) catch { @@ -29,6 +30,6 @@ object IntputOutputSuite { } } -class IntputOutputSuite extends SemanticRuleSuite { +class IntputOutputSuite extends AbstractSemanticRuleSuite with FunSuiteLike { runAllTests() } diff --git a/src/sbt-test/sbt-1.5/scala-3/project/plugins.sbt b/src/sbt-test/sbt-1.5/scala-3/project/plugins.sbt index 8ffc516c..2d3b4d3b 100644 --- a/src/sbt-test/sbt-1.5/scala-3/project/plugins.sbt +++ b/src/sbt-test/sbt-1.5/scala-3/project/plugins.sbt @@ -1,6 +1,2 @@ resolvers += Resolver.sonatypeRepo("public") addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % sys.props("plugin.version")) - -//FIXME: remove when scalafixVersion is bumped to 0.9.28 -resolvers += Resolver.sonatypeRepo("snapshots") -dependencyOverrides += "ch.epfl.scala" % "scalafix-interfaces" % "0.9.27+52-6c9eeec9-SNAPSHOT" diff --git a/src/sbt-test/sbt-1.5/scalafixEnable/project/plugins.sbt b/src/sbt-test/sbt-1.5/scalafixEnable/project/plugins.sbt index 8ffc516c..2d3b4d3b 100644 --- a/src/sbt-test/sbt-1.5/scalafixEnable/project/plugins.sbt +++ b/src/sbt-test/sbt-1.5/scalafixEnable/project/plugins.sbt @@ -1,6 +1,2 @@ resolvers += Resolver.sonatypeRepo("public") addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % sys.props("plugin.version")) - -//FIXME: remove when scalafixVersion is bumped to 0.9.28 -resolvers += Resolver.sonatypeRepo("snapshots") -dependencyOverrides += "ch.epfl.scala" % "scalafix-interfaces" % "0.9.27+52-6c9eeec9-SNAPSHOT" diff --git a/src/sbt-test/sbt-scalafix/basic/build.sbt b/src/sbt-test/sbt-scalafix/basic/build.sbt index 31bb02e7..a7c2fd8f 100644 --- a/src/sbt-test/sbt-scalafix/basic/build.sbt +++ b/src/sbt-test/sbt-scalafix/basic/build.sbt @@ -12,8 +12,7 @@ inThisBuild( scalafixDependencies := List( // Custom rule published to Maven Central https://github.com/scalacenter/example-scalafix-rule "ch.epfl.scala" %% "example-scalafix-rule" % "1.4.0" - ), - scalafixResolvers := List(Repository.MavenCentral) + ) ) ) diff --git a/src/sbt-test/sbt-scalafix/concurrency/build.sbt b/src/sbt-test/sbt-scalafix/concurrency/build.sbt index 70da10b8..7920b87c 100644 --- a/src/sbt-test/sbt-scalafix/concurrency/build.sbt +++ b/src/sbt-test/sbt-scalafix/concurrency/build.sbt @@ -1,6 +1,7 @@ val V = _root_.scalafix.sbt.BuildInfo scalaVersion := V.scala212 +resolvers += Resolver.sonatypeRepo("snapshots") libraryDependencies += "ch.epfl.scala" %% "scalafix-core" % V.scalafixVersion % ScalafixConfig // make it possible to run scalafix in parallel with other tasks via the `all` command diff --git a/src/sbt-test/sbt-scalafix/local-rules/build.sbt b/src/sbt-test/sbt-scalafix/local-rules/build.sbt index 14342b64..2a578d31 100644 --- a/src/sbt-test/sbt-scalafix/local-rules/build.sbt +++ b/src/sbt-test/sbt-scalafix/local-rules/build.sbt @@ -6,11 +6,7 @@ inThisBuild( // Custom rule cross-published to Maven Central https://github.com/scalacenter/example-scalafix-rule "ch.epfl.scala" %% "example-scalafix-rule" % "1.4.0" ), - // `Repository.central()` can only be used sbt 1.x / scala 2.12 - // error: Static methods in interface require -target:jvm-1.8 - scalafixResolvers := List( - coursierapi.MavenRepository.of("https://repo1.maven.org/maven2") - ), + resolvers += Resolver.sonatypeRepo("snapshots"), scalaVersion := "2.13.0", // out of sync with scalafix.sbt.BuildInfo.scala213 on purpose scalafixScalaBinaryVersion := // this should be the default in sbt-scalafix 1.0 diff --git a/src/sbt-test/sbt-scalafix/testkit/tests/src/test/scala/fix/InputOutputSuite.scala b/src/sbt-test/sbt-scalafix/testkit/tests/src/test/scala/fix/InputOutputSuite.scala index 277d3a8e..5d1fefb2 100644 --- a/src/sbt-test/sbt-scalafix/testkit/tests/src/test/scala/fix/InputOutputSuite.scala +++ b/src/sbt-test/sbt-scalafix/testkit/tests/src/test/scala/fix/InputOutputSuite.scala @@ -2,15 +2,16 @@ package fix import scalafix.testkit._ import scala.util.control.NonFatal +import org.scalatest.FunSuiteLike import org.scalatest.exceptions.TestFailedException object IntputOutputSuite { def main(args: Array[String]): Unit = { if (Array("--save-expect").sameElements(args)) { - val suite = new SemanticRuleSuite( - TestkitProperties.loadFromResources(), - isSaveExpect = true - ) { + val suite = new AbstractSemanticRuleSuite with FunSuiteLike { + override val props = TestkitProperties.loadFromResources() + override val isSaveExpect = true + testsToRun.foreach { t => try evaluateTestBody(t) catch { @@ -29,6 +30,6 @@ object IntputOutputSuite { } } -class IntputOutputSuite extends SemanticRuleSuite { +class IntputOutputSuite extends AbstractSemanticRuleSuite with FunSuiteLike { runAllTests() } diff --git a/src/test/scala/scalafix/internal/sbt/SbtCompletionsSuite.scala b/src/test/scala/scalafix/internal/sbt/SbtCompletionsSuite.scala index d90556d6..8a1fd3b7 100644 --- a/src/test/scala/scalafix/internal/sbt/SbtCompletionsSuite.scala +++ b/src/test/scala/scalafix/internal/sbt/SbtCompletionsSuite.scala @@ -1,6 +1,6 @@ package scalafix.internal.sbt -import coursierapi.Repository +import coursierapi.{MavenRepository, Repository} import org.eclipse.jgit.lib.AbbreviatedObjectId import org.scalatest.Tag import sbt.complete.Parser @@ -32,7 +32,12 @@ class SbtCompletionsSuite extends AnyFunSuite { .fromToolClasspath( "2.12", Seq(exampleDependency), - Seq(Repository.central) + Seq( + Repository.central, + MavenRepository.of( + "https://oss.sonatype.org/content/repositories/snapshots" + ) + ) )() val loadedRules = mainArgs.availableRules.toList diff --git a/src/test/scala/scalafix/internal/sbt/ScalafixAPISuite.scala b/src/test/scala/scalafix/internal/sbt/ScalafixAPISuite.scala index f1dbcc16..7385ebd9 100644 --- a/src/test/scala/scalafix/internal/sbt/ScalafixAPISuite.scala +++ b/src/test/scala/scalafix/internal/sbt/ScalafixAPISuite.scala @@ -3,7 +3,7 @@ package scalafix.internal.sbt import java.io.{ByteArrayOutputStream, PrintStream} import java.nio.file.Files -import coursierapi.Repository +import coursierapi.{MavenRepository, Repository} import org.scalactic.source.Position import sbt._ import sbt.internal.sbtscalafix.Compat @@ -31,7 +31,12 @@ class ScalafixAPISuite extends AnyFunSuite { .fromToolClasspath( "2.12", List("ch.epfl.scala" %% "example-scalafix-rule" % "1.4.0"), - Seq(Repository.central), + Seq( + Repository.central, + MavenRepository.of( + "https://oss.sonatype.org/content/repositories/snapshots" + ) + ), logger )() .withArgs(Arg.PrintStream(new PrintStream(baos)))