diff --git a/.idea/libraries/kobalt_jar.xml b/.idea/libraries/kobalt_jar.xml
new file mode 100644
index 00000000..5d9bf9d5
--- /dev/null
+++ b/.idea/libraries/kobalt_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kobalt/wrapper/kobalt-wrapper.jar b/kobalt/wrapper/kobalt-wrapper.jar
index 26650716..08ababd0 100644
Binary files a/kobalt/wrapper/kobalt-wrapper.jar and b/kobalt/wrapper/kobalt-wrapper.jar differ
diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt
index 9b39e3f6..8513a1e0 100644
--- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt
+++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt
@@ -216,22 +216,25 @@ class TaskManager @Inject constructor(val args: Args,
while (toProcess.size > 0) {
log(3, " New batch of nodes to process: $toProcess")
- toProcess.forEach { current ->
+ toProcess.filter { !seen.contains(toName(it)) }.forEach { current ->
result.addNode(current)
seen.add(toName(current))
-// if (! maybeAddEdge(current, invertedDependsOn, true, true)) {
+ if (! maybeAddEdge(current, invertedDependsOn, true, true)) {
maybeAddEdge(current, dependsOn, true, false)
-// }
-// if (! maybeAddEdge(current, invertedRunAfter, false, true)) {
+ }
+ if (! maybeAddEdge(current, invertedRunAfter, false, true)) {
maybeAddEdge(current, runAfter, false, false)
-// }
- if (! maybeAddEdge(current, invertedReverseDependsOn, true, false)) {
- maybeAddEdge(current, reverseDependsOn, true, true)
}
- if (! maybeAddEdge(current, invertedRunBefore, false, false)) {
- maybeAddEdge(current, runBefore, false, true)
+ if (! maybeAddEdge(current, reverseDependsOn, true, true)) {
+ maybeAddEdge(current, invertedReverseDependsOn, true, false)
}
+ if (! maybeAddEdge(current, runBefore, false, true)) {
+ maybeAddEdge(current, invertedRunBefore, false, false)
+ }
+
+ newToProcess.addAll(dependsOn[toName(current)].flatMap { nodeMap[it] })
+ return@forEach Unit
}
toProcess.clear()
toProcess.addAll(newToProcess)
@@ -412,4 +415,4 @@ class TaskWorker(val tasks: List, val dryRun: Boolean, val messages: Muta
// override val timeOut : Long = 10000
override val priority: Int = 0
-}
\ No newline at end of file
+}
diff --git a/src/test/kotlin/com/beust/kobalt/internal/TaskManagerTest.kt b/src/test/kotlin/com/beust/kobalt/internal/TaskManagerTest.kt
index 35dc1d57..71c35b32 100644
--- a/src/test/kotlin/com/beust/kobalt/internal/TaskManagerTest.kt
+++ b/src/test/kotlin/com/beust/kobalt/internal/TaskManagerTest.kt
@@ -1,6 +1,7 @@
package com.beust.kobalt.internal
import com.beust.kobalt.TestModule
+import com.beust.kobalt.misc.KobaltLogger
import com.google.common.collect.ArrayListMultimap
import com.google.common.collect.Multimap
import com.google.common.collect.TreeMultimap
@@ -152,19 +153,19 @@ class TaskManagerTest @Inject constructor(val taskManager: TaskManager) {
@Test
fun jacocoTest() {
+// KobaltLogger.LOG_LEVEL = 3
val runTasks = runTasks(listOf("test"),
dependsOn = TreeMultimap.create().apply {
+ put("coverage", "test")
put("test", "compileTest")
put("test", "compile")
put("compileTest", "compile")
},
reverseDependsOn = TreeMultimap.create().apply {
- put("coverage", "test")
+ put("enableJacoco", "test")
+ put("compileTest", "enableJacoco")
})
- Assert.assertTrue(runTasks[0] == "coverage" && runTasks[1] == "compile"
- || runTasks[1] == "coverage" && runTasks[0] == "compile")
- Assert.assertEquals(runTasks[2], "compileTest")
- Assert.assertEquals(runTasks[3], "test")
+ Assert.assertTrue(runTasks == listOf("compile", "compileTest", "enableJacoco", "test", "coverage"))
}
@Test