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