Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ maxColumn = 100
project.excludeFilters = [
"scalafix/input/"
"scalafix/output/"
"scalafix/output212/"
"scalafix/output212\\+/"
"scalafix/output213/"
"scalafix/output213-failure/"
"scalafix/output-scala-specific/"
]


12 changes: 11 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ scala:
- 2.11.12
- 2.12.6
- 2.13.0-M4
- 2.13.0-pre
jdk:
- openjdk6
- oraclejdk8
Expand Down Expand Up @@ -40,13 +41,22 @@ matrix:
- jdk: openjdk6
scala: 2.13.0-M4

- jdk: openjdk6
scala: 2.13.0-pre

# ?
- jdk: oraclejdk8
scala: 2.11.12

# 2.13.0-M4 is not available in Scala.js 1.0.0-M3
- scala: 2.13.0-M4
env: SCALAJS_VERSION=1.0.0-M3

- scala: 2.13.0-pre
env: SCALAJS_VERSION=1.0.0-M3

- scala: 2.13.0-pre
env: SCALAJS_VERSION=0.6.23
include:

# run migration test
Expand All @@ -73,7 +83,7 @@ matrix:
# | oraclejdk8 | 2.12.6 | js | 0.6.23 | |
# | oraclejdk8 | 2.12.6 | js | 1.0.0-M3 | |
# | oraclejdk8 | 2.13.0-M4 | jvm | | |
# | oraclejdk8 | 2.13.0-M4 | js | 0.6.23 | |
# | oraclejdk8 | 2.13.0-pre| jvm | | |
# | oraclejdk8 | 2.12.6 | jvm | | true |

before_script: ./checkCLA.sh
Expand Down
7 changes: 3 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,11 @@ tests are green. You can find more help about the scalafix API in its
|data | X | X | X | X |
|input | X | | | |
|output | | X | X | X |
|output212 | | | X | |
|output212+ | | | X | X |
|output213 | | | | X |
|output213-failure | | | | X |
|specific* | ? | ? | ? | ? |
+------------------+-----+-----+-----+-----+
specific*: see a by source build matrix via the sourceForScalaVersion setting in build.sbt

rules: Rule implementations
tests: Scalafix testkit launcher (useful to run a single input file)

```
129 changes: 86 additions & 43 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ lazy val root = project
`scalafix-output211`,
`scalafix-output212`,
`scalafix-output213`,
`scalafix-output213-pre`,
// `scalafix-output213-failure`,
`scalafix-rules`,
`scalafix-tests`
Expand All @@ -33,13 +34,16 @@ lazy val scala211 = "2.11.12"
lazy val scala212 = "2.12.6"
lazy val scalaJs213 = "2.13.0-M4" // Scala.js does no have -pre

lazy val scala213 = "2.13.0-M4"
// lazy val scala213 = "2.13.0-pre-3ae6282" // use the sbt command `latest-213` to fetch the latest version
lazy val scala213 = "2.13.0-M4"
lazy val scala213Pre = LatestScala.getLatestScala213()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a both a blessing and a curse. It's good since it can allow us to catch bugs early, It's bad since it's makes things more fragile.


lazy val scala213Settings = Seq(
resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/",
scalaVersion := scala213
)
lazy val scala213PreSettings = Seq(
resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/",
scalaVersion := scala213Pre
)

lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform)(
"compat",
Expand Down Expand Up @@ -94,13 +98,21 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform)(
val compat211 = compat(scala211)
val compat212 = compat(scala212)
val compat213 = compat(scala213, scalaJs213, _.jvmSettings(scala213Settings))
val compat213Pre = compat(
scala213Pre,
scalaJs213,
_.jvmSettings(
scala213PreSettings
)
)

lazy val compat211JVM = compat211.jvm
lazy val compat211JS = compat211.js
lazy val compat212JVM = compat212.jvm
lazy val compat212JS = compat212.js
lazy val compat213JVM = compat213.jvm
lazy val compat213JS = compat213.js
lazy val compat211JVM = compat211.jvm
lazy val compat211JS = compat211.js
lazy val compat212JVM = compat212.jvm
lazy val compat212JS = compat212.js
lazy val compat213JVM = compat213.jvm
lazy val compat213JS = compat213.js
lazy val compat213PreJVM = compat213Pre.jvm

lazy val `binary-compat-old` = project
.in(file("binary-compat/old"))
Expand Down Expand Up @@ -156,15 +168,19 @@ lazy val sharedScalafixSettings = Seq(
)

// common part between input/output
lazy val `scalafix-data` = MultiScalaProject("scalafix-data",
"scalafix/data",
_.settings(sharedScalafixSettings)
.settings(dontPublish))
lazy val `scalafix-data` = MultiScalaProject(
"scalafix-data",
"scalafix/data",
_.settings(sharedScalafixSettings)
.settings(dontPublish)
)

val `scalafix-data211` = `scalafix-data`(scala211, _.dependsOn(compat211JVM))
val `scalafix-data212` = `scalafix-data`(scalafixScala212, _.dependsOn(compat212JVM))
val `scalafix-data213` =
`scalafix-data`(scala213, _.settings(scala213Settings).dependsOn(compat213JVM))
val `scalafix-data213-pre` =
`scalafix-data`(scala213Pre, _.settings(scala213PreSettings).dependsOn(compat213PreJVM))

lazy val `scalafix-input` = project
.in(file("scalafix/input"))
Expand All @@ -176,45 +192,76 @@ lazy val `scalafix-input` = project
)
.dependsOn(`scalafix-data212`)

val `scalafix-output` = MultiScalaProject("scalafix-output",
"scalafix/output",
_.settings(sharedScalafixSettings)
.settings(dontPublish)
.disablePlugins(ScalafixPlugin))

lazy val output212 = Def.setting((baseDirectory in ThisBuild).value / "scalafix/output212/src/main")
lazy val addOutput212 = unmanagedSourceDirectories in Compile += output212.value / "scala"
val `scalafix-output` = MultiScalaProject(
"scalafix-output",
"scalafix/output",
_.settings(sharedScalafixSettings)
.settings(dontPublish)
.disablePlugins(ScalafixPlugin)
)

lazy val output212Plus =
Def.setting((baseDirectory in ThisBuild).value / "scalafix/output212+/src/main")
lazy val addOutput212Plus = unmanagedSourceDirectories in Compile += output212Plus.value / "scala"
// format: off
val sources = Map( // scala211 scala212 scala213 scala213Pre
"BreakoutSrc212Plus" -> List( scala212, scala213, scala213Pre),
"CompanionSrc212" -> List( scala212 ),
"RetainSrc213" -> List( scala213, scala213Pre),
"RoughlySrc213" -> List( scala213 ),
"SortedSrc212Plus" -> List( scala212, scala213, scala213Pre),
"TupleNZippedSrc213" -> List( scala213, scala213Pre),
"UnsortedSrc212Plus" -> List( scala212, scala213Pre),
"UnsortedSrcPre" -> List(scala211, scala212, scala213Pre)
)
// format: on

lazy val output213 = Def.setting((baseDirectory in ThisBuild).value / "scalafix/output213/src/main")
lazy val addOutput213 = unmanagedSourceDirectories in Compile += output213.value / "scala"
val reverseSources: Map[String, List[String]] =
sources.toList
.flatMap {
case (k, vs) =>
vs.map(v => (v, k))
}
.groupBy(_._1)
.mapValues(_.map(_._2))
.toMap
.withDefaultValue(Nil)

val scalaSpecific =
Def.setting((baseDirectory in ThisBuild).value / "scalafix/output-scala-specific/src/main/")

lazy val sourceForScalaVersion = Seq(
sbt.Keys.sources in Compile ++= {
val fileNames = reverseSources(scalaVersion.value)
fileNames.map(fileName => scalaSpecific.value / "scala/fix" / (fileName + ".scala"))
}
)

lazy val `scalafix-output211` = `scalafix-output`(
scala211,
_.dependsOn(`scalafix-data211`)
_.settings(sourceForScalaVersion)
.dependsOn(`scalafix-data211`)
)

lazy val `scalafix-output212` = `scalafix-output`(
scala212,
_.settings(addOutput212)
.settings(addOutput212Plus)
_.settings(sourceForScalaVersion)
.dependsOn(`scalafix-data212`)
)

lazy val `scalafix-output213` = `scalafix-output`(
scala213,
_.settings(addOutput213)
.settings(addOutput212Plus)
_.settings(sourceForScalaVersion)
.settings(scala213Settings)
.dependsOn(`scalafix-data213`)
)

lazy val `scalafix-output213-pre` = `scalafix-output`(
scala213Pre,
_.settings(sourceForScalaVersion)
.settings(scala213PreSettings)
.dependsOn(`scalafix-data213-pre`)
)

lazy val `scalafix-output213-failure` = project
.in(file("scalafix/output213-failure"))
.settings(sharedScalafixSettings)
.settings(scala213Settings)
.settings(dontPublish)

Expand All @@ -227,21 +274,17 @@ lazy val `scalafix-tests` = project
libraryDependencies += "ch.epfl.scala" % "scalafix-testkit" % scalafixVersion % Test cross CrossVersion.full,
buildInfoPackage := "build",
buildInfoKeys := Seq[BuildInfoKey](
"inputSourceroot" -> sourceDirectory.in(`scalafix-input`, Compile).value,
"outputSourceroot" -> (baseDirectory in ThisBuild).value / "scalafix/output/src/main",
"output212Sourceroot" -> output212.value,
"output212PlusSourceroot" -> output212Plus.value,
"output213Sourceroot" -> output213.value,
"output213FailureSourceroot" -> sourceDirectory
.in(`scalafix-output213-failure`, Compile)
.value,
"inputSourceroot" -> sourceDirectory.in(`scalafix-input`, Compile).value,
"outputSourceroot" -> (baseDirectory in ThisBuild).value / "scalafix/output/src/main",
"outputScalaSpecific" -> scalaSpecific.value,
"inputClassdirectory" -> classDirectory.in(`scalafix-input`, Compile).value
),
test in Test := (test in Test)
.dependsOn(
compile in (`scalafix-output211`, Compile),
compile in (`scalafix-output212`, Compile),
compile in (`scalafix-output213`, Compile)
compile in (`scalafix-output213`, Compile),
compile in (`scalafix-output213-pre`, Compile)
)
.value
)
Expand All @@ -258,7 +301,7 @@ lazy val dontPublish = Seq(
val preRelease = "pre-release"
val travisScalaVersion = sys.env.get("TRAVIS_SCALA_VERSION").flatMap(Version.parse)
val releaseVersion = sys.env.get("TRAVIS_TAG").flatMap(Version.parse)
val isScalaJs = sys.env.get("SCALAJS_VERSION").nonEmpty
val isScalaJs = sys.env.get("SCALAJS_VERSION").map(_.nonEmpty).getOrElse(false)
val isScalafix = sys.env.get("TEST_SCALAFIX").nonEmpty
val isScalafmt = sys.env.get("TEST_SCALAFMT").nonEmpty
val isBinaryCompat = sys.env.get("TEST_BINARY_COMPAT").nonEmpty
Expand Down Expand Up @@ -286,7 +329,7 @@ inThisBuild(releaseCredentials)
// required by sbt-scala-module
inThisBuild(
Seq(
crossScalaVersions := Seq(scala211, scala212, scala213),
crossScalaVersions := Seq(scala211, scala212, scala213, scala213Pre),
commands += Command.command("latest-213") { state =>
LatestScala.printLatestScala213()
state
Expand Down
Loading