From ad327f41a2477d570ed87aeb1f4f0a3dc0cfdc39 Mon Sep 17 00:00:00 2001 From: Marco Link Date: Thu, 11 Jan 2018 14:33:11 +0100 Subject: [PATCH] Attach paketUnityInstall task to all relevant tasks (#13) * Attach paketUnityInstall task to all relevant tasks * Removed unused variable declaration --- .../get/PaketInstallIntegrationSpec.groovy | 3 +- .../unity/PaketUnityIntegrationSpec.groovy | 45 +++++++++++++++++-- .../paket/unity/PaketUnityPlugin.groovy | 15 ++++--- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/src/integrationTest/groovy/wooga/gradle/paket/get/PaketInstallIntegrationSpec.groovy b/src/integrationTest/groovy/wooga/gradle/paket/get/PaketInstallIntegrationSpec.groovy index 6b515dc..8835ee4 100644 --- a/src/integrationTest/groovy/wooga/gradle/paket/get/PaketInstallIntegrationSpec.groovy +++ b/src/integrationTest/groovy/wooga/gradle/paket/get/PaketInstallIntegrationSpec.groovy @@ -17,9 +17,9 @@ package wooga.gradle.paket.get -import spock.lang.Ignore import spock.lang.Unroll import wooga.gradle.paket.PaketIntegrationDependencyFileSpec +import wooga.gradle.paket.unity.PaketUnityPlugin class PaketInstallIntegrationSpec extends PaketIntegrationDependencyFileSpec { @@ -188,6 +188,5 @@ class PaketInstallIntegrationSpec extends PaketIntegrationDependencyFileSpec { then: !lockFile.text.contains("$nuget1 ($version1)") lockFile.text.contains("$nuget2 ($version2)") - } } diff --git a/src/integrationTest/groovy/wooga/gradle/paket/unity/PaketUnityIntegrationSpec.groovy b/src/integrationTest/groovy/wooga/gradle/paket/unity/PaketUnityIntegrationSpec.groovy index fa77ad0..2b6817d 100644 --- a/src/integrationTest/groovy/wooga/gradle/paket/unity/PaketUnityIntegrationSpec.groovy +++ b/src/integrationTest/groovy/wooga/gradle/paket/unity/PaketUnityIntegrationSpec.groovy @@ -21,6 +21,7 @@ import nebula.test.IntegrationSpec import nebula.test.functional.ExecutionResult import spock.lang.Shared import spock.lang.Unroll +import wooga.gradle.paket.get.PaketGetPlugin class PaketUnityIntegrationSpec extends IntegrationSpec { @@ -72,7 +73,7 @@ class PaketUnityIntegrationSpec extends IntegrationSpec { then: hasNoSource(result, "paketUnityBootstrap") - hasNoSource(result,taskToRun) + hasNoSource(result, taskToRun) where: taskToRun << bootstrapTestCases @@ -113,12 +114,12 @@ class PaketUnityIntegrationSpec extends IntegrationSpec { then: "bootstrap task was [UP-TO-DATE]" result1.wasUpToDate("paketUnityBootstrap") - when:"delete bootstrapper" + when: "delete bootstrapper" def paketDir = new File(projectDir, '.paket') def paketBootstrap = new File(paketDir, 'paket.unity3d.bootstrapper.exe') paketBootstrap.delete() - and:"run the task again" + and: "run the task again" def result2 = runTasksSuccessfully(taskToRun) then: @@ -145,6 +146,44 @@ class PaketUnityIntegrationSpec extends IntegrationSpec { taskToRun << bootstrapTestCases } + @Unroll + def "run paketUnityInstall after #taskToRun"(String taskToRun) { + given: "a small test nuget package" + def nuget = "Mini" + + and: "apply paket get plugin to get paket unity install task" + buildFile << """ + ${applyPlugin(PaketGetPlugin)} + """.stripIndent() + + and: "paket dependency file and lock" + def dependencies = createFile("paket.dependencies") + createFile("paket.lock") + + dependencies << """ + source https://nuget.org/api/v2 + + nuget $nuget + """.stripIndent() + + and: "the future packages directory" + def packagesDir = new File(projectDir, 'packages') + assert !packagesDir.exists() + + when: + def result = runTasksSuccessfully(taskToRun) + + then: + result.wasExecuted(PaketUnityPlugin.INSTALL_TASK_NAME) + + where: + taskToRun | _ + PaketGetPlugin.INSTALL_TASK_NAME | _ + PaketGetPlugin.UPDATE_TASK_NAME | _ + PaketGetPlugin.RESTORE_TASK_NAME | _ + "paketUpdateMini" | _ + } + boolean hasNoSource(ExecutionResult result, String taskName) { containsOutput(result.standardOutput, taskName, "NO-SOURCE") } diff --git a/src/main/groovy/wooga/gradle/paket/unity/PaketUnityPlugin.groovy b/src/main/groovy/wooga/gradle/paket/unity/PaketUnityPlugin.groovy index ca400fd..a997797 100644 --- a/src/main/groovy/wooga/gradle/paket/unity/PaketUnityPlugin.groovy +++ b/src/main/groovy/wooga/gradle/paket/unity/PaketUnityPlugin.groovy @@ -17,13 +17,13 @@ package wooga.gradle.paket.unity +import org.gradle.api.Action import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.Task import org.gradle.api.tasks.TaskContainer import wooga.gradle.paket.base.PaketBasePlugin -import wooga.gradle.paket.base.tasks.AbstractPaketTask import wooga.gradle.paket.get.PaketGetPlugin +import wooga.gradle.paket.get.tasks.PaketUpdate import wooga.gradle.paket.unity.tasks.PaketUnityBootstrap import wooga.gradle.paket.unity.tasks.PaketUnityInstall @@ -71,13 +71,18 @@ class PaketUnityPlugin implements Plugin { void configurePaketDependencyInstallIfPresent() { project.plugins.withType(PaketGetPlugin) { + + def paketUnityInstall = tasks[INSTALL_TASK_NAME] def paketInstall = project.tasks[PaketGetPlugin.INSTALL_TASK_NAME] - def paketUpdate = project.tasks[PaketGetPlugin.UPDATE_TASK_NAME] def paketRestore = project.tasks[PaketGetPlugin.RESTORE_TASK_NAME] - [paketInstall, paketUpdate, paketRestore].each { Task task -> - task.finalizedBy tasks[PaketUnityPlugin.INSTALL_TASK_NAME] + Closure configClosure = { task -> + task.finalizedBy paketUnityInstall } + + project.tasks.withType(PaketUpdate, configClosure) + + [paketInstall, paketRestore].each configClosure } } }