From 90af7a46c112c0f95e584c5a330b690b6e8f539c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 May 2019 11:59:21 -0400 Subject: [PATCH 1/2] Reproduce Twirl regression Ref #4681 --- sbt/src/sbt-test/plugins/twirl/build.sbt | 12 ++++++++ .../plugins/twirl/project/TwirlPlugin.scala | 29 +++++++++++++++++++ .../src/main/twirl/.hidden/fake.scala.twirl | 0 .../play/routes/forwardsRouter.scala.twirl | 3 ++ sbt/src/sbt-test/plugins/twirl/test | 1 + 5 files changed, 45 insertions(+) create mode 100644 sbt/src/sbt-test/plugins/twirl/build.sbt create mode 100644 sbt/src/sbt-test/plugins/twirl/project/TwirlPlugin.scala create mode 100644 sbt/src/sbt-test/plugins/twirl/src/main/twirl/.hidden/fake.scala.twirl create mode 100644 sbt/src/sbt-test/plugins/twirl/src/main/twirl/play/routes/forwardsRouter.scala.twirl create mode 100644 sbt/src/sbt-test/plugins/twirl/test diff --git a/sbt/src/sbt-test/plugins/twirl/build.sbt b/sbt/src/sbt-test/plugins/twirl/build.sbt new file mode 100644 index 000000000..bee7bb4cf --- /dev/null +++ b/sbt/src/sbt-test/plugins/twirl/build.sbt @@ -0,0 +1,12 @@ + +lazy val check = taskKey[Unit]("") + +lazy val root = (project in file(".")) + .enablePlugins(TwirlPlugin) + .settings( + check := { + val templates = (Compile / twirlCompileTemplates / sources).value + assert(templates.nonEmpty) + assert(!templates.exists(_.toString.contains("hidden"))) + } + ) diff --git a/sbt/src/sbt-test/plugins/twirl/project/TwirlPlugin.scala b/sbt/src/sbt-test/plugins/twirl/project/TwirlPlugin.scala new file mode 100644 index 000000000..5911cdfcc --- /dev/null +++ b/sbt/src/sbt-test/plugins/twirl/project/TwirlPlugin.scala @@ -0,0 +1,29 @@ +import sbt._ +import Keys._ + +object TwirlPlugin extends AutoPlugin { + override def requires = sbt.plugins.JvmPlugin + override def trigger = noTrigger + + object autoImport { + val twirlCompileTemplates = taskKey[Seq[File]]("Compile twirl templates into scala source files") + } + + override def projectSettings: Seq[Setting[_]] = + inConfig(Compile)(twirlSettings) ++ + inConfig(Test)(twirlSettings) + + import autoImport._ + + def twirlSettings: Seq[Setting[_]] = Seq( + twirlCompileTemplates / includeFilter := "*.scala.*", + twirlCompileTemplates / excludeFilter := HiddenFileFilter, + twirlCompileTemplates / sourceDirectories := Seq(sourceDirectory.value / "twirl"), + + twirlCompileTemplates / sources := Defaults.collectFiles( + twirlCompileTemplates / sourceDirectories, + twirlCompileTemplates / includeFilter, + twirlCompileTemplates / excludeFilter + ).value + ) +} diff --git a/sbt/src/sbt-test/plugins/twirl/src/main/twirl/.hidden/fake.scala.twirl b/sbt/src/sbt-test/plugins/twirl/src/main/twirl/.hidden/fake.scala.twirl new file mode 100644 index 000000000..e69de29bb diff --git a/sbt/src/sbt-test/plugins/twirl/src/main/twirl/play/routes/forwardsRouter.scala.twirl b/sbt/src/sbt-test/plugins/twirl/src/main/twirl/play/routes/forwardsRouter.scala.twirl new file mode 100644 index 000000000..8db5bd943 --- /dev/null +++ b/sbt/src/sbt-test/plugins/twirl/src/main/twirl/play/routes/forwardsRouter.scala.twirl @@ -0,0 +1,3 @@ +@import play.routes.compiler._ +@import play.routes.compiler.templates._ +@import InjectedRoutesGenerator.Dependency diff --git a/sbt/src/sbt-test/plugins/twirl/test b/sbt/src/sbt-test/plugins/twirl/test new file mode 100644 index 000000000..15675b169 --- /dev/null +++ b/sbt/src/sbt-test/plugins/twirl/test @@ -0,0 +1 @@ +> check From 5936bd1ff22df61d1c7946f997df6a51ca81ffa3 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 25 May 2019 13:10:17 -0400 Subject: [PATCH 2/2] Revert Defaults.collectFiles Fixes #4681 Ref #4649 --- main/src/main/scala/sbt/Defaults.scala | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index b593c05ae..5427f4f04 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1242,15 +1242,12 @@ object Defaults extends BuildCommon { } def collectFiles( dirs: ScopedTaskable[Seq[File]], - include: ScopedTaskable[FileFilter], - exclude: ScopedTaskable[FileFilter] - ): Initialize[Task[Seq[File]]] = Def.task { - val filter = include.toTask.value -- exclude.toTask.value - val view = fileTreeView.value - view.list(dirs.toTask.value.map(f => Globs(f.toPath, recursive = true, filter))).collect { - case (p, a) if !a.isDirectory => p.toFile + filter: ScopedTaskable[FileFilter], + excludes: ScopedTaskable[FileFilter] + ): Initialize[Task[Seq[File]]] = + Def.task { + dirs.toTask.value.descendantsExcept(filter.toTask.value, excludes.toTask.value).get } - } def artifactPathSetting(art: SettingKey[Artifact]): Initialize[File] = Def.setting { val f = artifactName.value