From 88bd6e7b74140d04dd25e0baa4451039bfeaaee1 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Tue, 19 Sep 2017 21:43:36 -0400 Subject: [PATCH 1/3] Support paradox for sbt 1.0 --- build.sbt | 17 ++++++++--------- .../sbt/site/paradox/ParadoxSitePlugin.scala | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) rename src/main/{scala-sbt-0.13 => scala}/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala (94%) diff --git a/build.sbt b/build.sbt index 418eefd..01f077c 100644 --- a/build.sbt +++ b/build.sbt @@ -29,14 +29,11 @@ libraryDependencies ++= Seq( "org.asciidoctor" % "asciidoctorj" % "1.5.4" ) +addSbtPlugin("com.lightbend.paradox" % "sbt-paradox" % "0.3.0") + libraryDependencies ++= { - if ((sbtVersion in pluginCrossBuild).value.startsWith("0.13")) { + if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") { Seq( - Defaults.sbtPluginExtra( - "com.lightbend.paradox" % "sbt-paradox" % "0.2.13", - (sbtBinaryVersion in pluginCrossBuild).value, - (scalaBinaryVersion in pluginCrossBuild).value - ), Defaults.sbtPluginExtra( "org.planet42" % "laika-sbt" % "0.7.0", (sbtBinaryVersion in pluginCrossBuild).value, @@ -46,6 +43,9 @@ libraryDependencies ++= { } else Nil } +// fixed in https://github.com/sbt/sbt/pull/3397 (for sbt 0.13.17) +sbtBinaryVersion in update := (sbtBinaryVersion in pluginCrossBuild).value + enablePlugins(ParadoxSitePlugin) sourceDirectory in Paradox := sourceDirectory.value / "main" / "paradox" paradoxTheme := Some(builtinParadoxTheme("generic")) @@ -62,16 +62,15 @@ git.remoteRepo := scmInfo.value.get.connection scriptedSettings TaskKey[Unit]("runScriptedTest") := Def.taskDyn { - if ((sbtVersion in pluginCrossBuild).value.startsWith("0.13")) { + if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") { Def.task{ scripted.toTask("").value } } else { val base = sbtTestDirectory.value val exclude = Seq( - base / "paradox" * AllPassFilter, // paradox does not support sbt 1.0 base / "laika" * AllPassFilter, // https://github.com/planet42/Laika/issues/57 - base / "site" * ("can-run-generator-twice" || "plays-nice-with-tut") // use paradox + base / "site" * "plays-nice-with-tut" // tut does not support sbt 1.0 ) val allTests = base * AllPassFilter * AllPassFilter filter { _.isDirectory } diff --git a/src/main/scala-sbt-0.13/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala b/src/main/scala/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala similarity index 94% rename from src/main/scala-sbt-0.13/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala rename to src/main/scala/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala index ab9e3d6..350be98 100644 --- a/src/main/scala-sbt-0.13/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala +++ b/src/main/scala/com/typesafe/sbt/site/paradox/ParadoxSitePlugin.scala @@ -32,7 +32,7 @@ object ParadoxSitePlugin extends AutoPlugin { mappings := { val _ = paradox.value val output = (target in paradox).value - output ** includeFilter.value --- output pair relativeTo(output) + output ** includeFilter.value --- output pair Path.relativeTo(output) }, siteSubdirName := "" ) From f0769239a24f97698c95fd6528cdde386b1120f5 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Wed, 20 Sep 2017 09:21:14 -0400 Subject: [PATCH 2/3] Test integrating with tut for sbt 1.0 --- build.sbt | 3 +-- src/sbt-test/site/plays-nice-with-tut/project/plugins.sbt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index 01f077c..d85a664 100644 --- a/build.sbt +++ b/build.sbt @@ -69,8 +69,7 @@ TaskKey[Unit]("runScriptedTest") := Def.taskDyn { } else { val base = sbtTestDirectory.value val exclude = Seq( - base / "laika" * AllPassFilter, // https://github.com/planet42/Laika/issues/57 - base / "site" * "plays-nice-with-tut" // tut does not support sbt 1.0 + base / "laika" * AllPassFilter // https://github.com/planet42/Laika/issues/57 ) val allTests = base * AllPassFilter * AllPassFilter filter { _.isDirectory } diff --git a/src/sbt-test/site/plays-nice-with-tut/project/plugins.sbt b/src/sbt-test/site/plays-nice-with-tut/project/plugins.sbt index b6bccfa..45f6e1e 100644 --- a/src/sbt-test/site/plays-nice-with-tut/project/plugins.sbt +++ b/src/sbt-test/site/plays-nice-with-tut/project/plugins.sbt @@ -1,2 +1,2 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-site" % sys.props("project.version")) -addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.5.2") +addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.6.1") From 33fda84702537da29d0d2b2f7cc55b017d508009 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Wed, 20 Sep 2017 12:12:35 -0400 Subject: [PATCH 3/3] Filter scripted tests based on project/build.properties Allows to more easily filter both sbt 0.13 and sbt 1.0 tests. Based on scalacenter/scalajs-bundler#179 --- build.sbt | 47 ++++++++++++------- .../laika/blog-post/project/build.properties | 1 + .../laika/minimal/project/build.properties | 1 + .../plays-nice-with-tut-sbt-0.13/build.sbt | 18 +++++++ .../project/build.properties | 1 + .../project/plugins.sbt | 2 + .../src/main/tut/index.md | 15 ++++++ .../src/main/tut/test.md | 5 ++ .../site/plays-nice-with-tut-sbt-0.13/test | 2 + .../project/build.properties | 1 + 10 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 src/sbt-test/laika/blog-post/project/build.properties create mode 100644 src/sbt-test/laika/minimal/project/build.properties create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/build.sbt create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/build.properties create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/plugins.sbt create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/index.md create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/test.md create mode 100644 src/sbt-test/site/plays-nice-with-tut-sbt-0.13/test create mode 100644 src/sbt-test/site/plays-nice-with-tut/project/build.properties diff --git a/build.sbt b/build.sbt index d85a664..a8712d5 100644 --- a/build.sbt +++ b/build.sbt @@ -62,25 +62,36 @@ git.remoteRepo := scmInfo.value.get.connection scriptedSettings TaskKey[Unit]("runScriptedTest") := Def.taskDyn { - if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") { - Def.task{ - scripted.toTask("").value - } - } else { - val base = sbtTestDirectory.value - val exclude = Seq( - base / "laika" * AllPassFilter // https://github.com/planet42/Laika/issues/57 - ) - - val allTests = base * AllPassFilter * AllPassFilter filter { _.isDirectory } - val tests = allTests --- exclude.reduce(_ +++ _) - val args = tests.get.map(Path.relativeTo(base)).flatten.mkString(" ", " ", "") - streams.value.log.info("scripted test args = " + args) - - Def.task{ - scripted.toTask(args).value - } + val sbtBinVersion = (sbtBinaryVersion in pluginCrossBuild).value + val base = sbtTestDirectory.value + + def isCompatible(directory: File): Boolean = { + val buildProps = new java.util.Properties() + IO.load(buildProps, directory / "project" / "build.properties") + Option(buildProps.getProperty("sbt.version")) + .map { version => + val requiredBinVersion = CrossVersion.binarySbtVersion(version) + val compatible = requiredBinVersion == sbtBinVersion + if (!compatible) { + val testName = directory.relativeTo(base).getOrElse(directory) + streams.value.log.warn(s"Skipping $testName since it requires sbt $requiredBinVersion") + } + compatible + } + .getOrElse(true) } + + val testDirectoryFinder = base * AllPassFilter * AllPassFilter filter { _.isDirectory } + val tests = for { + test <- testDirectoryFinder.get + if isCompatible(test) + path <- Path.relativeTo(base)(test) + } yield path.replace('\\', '/') + + if (tests.nonEmpty) + Def.task(scripted.toTask(tests.mkString(" ", " ", "")).value) + else + Def.task(streams.value.log.warn("No tests can be run for this sbt version")) }.value scriptedLaunchOpts += "-Dproject.version="+version.value diff --git a/src/sbt-test/laika/blog-post/project/build.properties b/src/sbt-test/laika/blog-post/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/src/sbt-test/laika/blog-post/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/sbt-test/laika/minimal/project/build.properties b/src/sbt-test/laika/minimal/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/src/sbt-test/laika/minimal/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/build.sbt b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/build.sbt new file mode 100644 index 0000000..7f272e6 --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/build.sbt @@ -0,0 +1,18 @@ +name := "test" + +enablePlugins(ParadoxSitePlugin, TutPlugin) +sourceDirectory in Paradox := tutTargetDirectory.value +makeSite := makeSite.dependsOn(tut).value + +TaskKey[Unit]("checkContent") := { + val dest = (target in makeSite).value + + def checkFileContent(file: File, expected: String) = { + assert(file.exists, s"${file.getAbsolutePath} did not exist") + val actual = IO.readLines(file) + assert(actual.exists(_.contains(expected)), s"Did not find $expected in:\n${actual.mkString("\n")}") + } + + checkFileContent(dest / "index.html", "Here is how you add numbers") + checkFileContent(dest / "test.html", "scala.util.Try") +} diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/build.properties b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/plugins.sbt b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/plugins.sbt new file mode 100644 index 0000000..b6bccfa --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/project/plugins.sbt @@ -0,0 +1,2 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-site" % sys.props("project.version")) +addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.5.2") diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/index.md b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/index.md new file mode 100644 index 0000000..36ce8c1 --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/index.md @@ -0,0 +1,15 @@ +# Tutorial + + +Here is how you add numbers: + +```tut +1 + 1 +``` + + +@@@ index + + - [test](test.md) + +@@@ diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/test.md b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/test.md new file mode 100644 index 0000000..766d32d --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/src/main/tut/test.md @@ -0,0 +1,5 @@ +# Test + +```tut:silent +import scala.util.Try +``` diff --git a/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/test b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/test new file mode 100644 index 0000000..9f9a269 --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut-sbt-0.13/test @@ -0,0 +1,2 @@ +> makeSite +> checkContent diff --git a/src/sbt-test/site/plays-nice-with-tut/project/build.properties b/src/sbt-test/site/plays-nice-with-tut/project/build.properties new file mode 100644 index 0000000..c9e698a --- /dev/null +++ b/src/sbt-test/site/plays-nice-with-tut/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.0.0-RC2