From 2ef97768a08d7a97448b952888baf39560235798 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Sat, 15 Dec 2018 17:37:35 -0800 Subject: [PATCH] Don't attempt to prevent certain watch loops If the managedSources task writes into an unmanaged source directory, that would cause an infinite loop. I don't think it's worth doing out of band task execution to try and prevent this. --- main/src/main/scala/sbt/Defaults.scala | 18 +----------------- sbt/src/sbt-test/tests/watch-loop/build.sbt | 17 ----------------- .../watch-loop/project/SourceWrapper.scala | 6 ------ .../tests/watch-loop/src/main/scala/Bar.scala | 1 - .../tests/watch-loop/src/main/scala/Foo.scala | 1 - sbt/src/sbt-test/tests/watch-loop/test | 1 - 6 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 sbt/src/sbt-test/tests/watch-loop/build.sbt delete mode 100644 sbt/src/sbt-test/tests/watch-loop/project/SourceWrapper.scala delete mode 100644 sbt/src/sbt-test/tests/watch-loop/src/main/scala/Bar.scala delete mode 100644 sbt/src/sbt-test/tests/watch-loop/src/main/scala/Foo.scala delete mode 100644 sbt/src/sbt-test/tests/watch-loop/test diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index f5749a935..fc9a13321 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -379,23 +379,7 @@ object Defaults extends BuildCommon { val baseDir = baseDirectory.value val bases = unmanagedSourceDirectories.value val include = (includeFilter in unmanagedSources).value - val exclude = (excludeFilter in unmanagedSources).value match { - case e => - val s = state.value - try { - Project.extract(s).runTask(managedSources in Compile in ThisScope, s) match { - case (_, l) if l.nonEmpty => - e || new FileFilter { - private val files = l.toSet - override def accept(pathname: File): Boolean = files.contains(pathname) - override def toString = s"ManagedSourcesFilter($files)" - } - case _ => e - } - } catch { - case NonFatal(_) => e - } - } + val exclude = (excludeFilter in unmanagedSources).value val baseSources = if (sourcesInBase.value) Seq(new Source(baseDir, include, exclude, recursive = false)) else Nil diff --git a/sbt/src/sbt-test/tests/watch-loop/build.sbt b/sbt/src/sbt-test/tests/watch-loop/build.sbt deleted file mode 100644 index effea2c79..000000000 --- a/sbt/src/sbt-test/tests/watch-loop/build.sbt +++ /dev/null @@ -1,17 +0,0 @@ -import java.nio.file.Files - -lazy val watchLoopTest = taskKey[Unit]("Check that managed sources are filtered") - -sourceGenerators in Compile += Def.task { - val path = baseDirectory.value.toPath.resolve("src/main/scala/Foo.scala") - Files.write(path, "object Foo".getBytes).toFile :: Nil -} - -watchLoopTest := { - val watched = watchSources.value - val managedSource = (managedSources in Compile).value.head - assert(!SourceWrapper.accept(watched, managedSource)) - assert((sources in Compile).value.foldLeft((true, Set.empty[File])) { - case ((res, set), f) => (res && !set.contains(f), set + f) - }._1) -} diff --git a/sbt/src/sbt-test/tests/watch-loop/project/SourceWrapper.scala b/sbt/src/sbt-test/tests/watch-loop/project/SourceWrapper.scala deleted file mode 100644 index ff351168a..000000000 --- a/sbt/src/sbt-test/tests/watch-loop/project/SourceWrapper.scala +++ /dev/null @@ -1,6 +0,0 @@ -package sbt - -object SourceWrapper { - def accept(sources: Seq[sbt.internal.io.Source], file: File): Boolean = - sources.exists(_.accept(file.toPath)) -} diff --git a/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Bar.scala b/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Bar.scala deleted file mode 100644 index 3b43dece6..000000000 --- a/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Bar.scala +++ /dev/null @@ -1 +0,0 @@ -object Bar diff --git a/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Foo.scala b/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Foo.scala deleted file mode 100644 index d37c10456..000000000 --- a/sbt/src/sbt-test/tests/watch-loop/src/main/scala/Foo.scala +++ /dev/null @@ -1 +0,0 @@ -object Foo \ No newline at end of file diff --git a/sbt/src/sbt-test/tests/watch-loop/test b/sbt/src/sbt-test/tests/watch-loop/test deleted file mode 100644 index 41d621982..000000000 --- a/sbt/src/sbt-test/tests/watch-loop/test +++ /dev/null @@ -1 +0,0 @@ -> watchLoopTest