Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new generate solution task #112

Merged
merged 3 commits into from
Aug 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -339,4 +339,13 @@ class UnityPluginIntegrationSpec extends UnityIntegrationSpec {
result.wasSkipped("returnUnityLicense")
result.wasExecuted("activateUnity")
}

@UnityPluginTestOptions(forceMockTaskRun = false, disableAutoActivateAndLicense = false)
def "runs generateSolution task"() {
when:
def result = runTasksSuccessfully("generateSolution")

then:
result.wasExecuted("generateSolution")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package wooga.gradle.unity.tasks

import com.wooga.spock.extensions.unity.UnityPathResolution
import com.wooga.spock.extensions.unity.UnityPluginTestOptions
import com.wooga.spock.extensions.uvm.UnityInstallation
import net.wooga.uvm.Installation
import spock.lang.Requires
import wooga.gradle.unity.UnityTaskIntegrationSpec

class GenerateSolutionTaskIntegrationSpec extends UnityTaskIntegrationSpec<GenerateSolution> {

@UnityPluginTestOptions(addMockTask = false, disableAutoActivateAndLicense = false)
def "calls unity SyncSolution method from command line"() {
given: "applied atlas-unity plugin"
when: "generateSolution task is called"
def res = runTasksSuccessfully("generateSolution")
Azurelol marked this conversation as resolved.
Show resolved Hide resolved
then: "unity sync solution entrypoint is called in batchmode"
res.standardOutput.contains("-batchmode")
res.standardOutput.contains("-quit")
res.standardOutput.contains("-executeMethod UnityEditor.SyncVS.SyncSolution")
}

@Requires({ os.macOs })
@UnityPluginTestOptions(unityPath = UnityPathResolution.Default)
@UnityInstallation(version = "2019.4.24f1", cleanup = false)
def "generates .sln file when running generateSolution task"(Installation unity) {
given: "an unity3D project"
def project_path = "build/test_project"
environmentVariables.set("UNITY_PATH", unity.getExecutable().getPath())
appendToSubjectTask("""createProject = "${project_path}" """,
"""buildTarget = "Android" """)

when:"generateSolution task is called"
def result = runTasksSuccessfully(subjectUnderTestName)

then:"solution file is generated"
result.standardOutput.contains("Starting process 'command '${unity.getExecutable().getPath()}'")
fileExists(project_path)
fileExists(project_path, "test_project.sln")
}
}
15 changes: 10 additions & 5 deletions src/main/groovy/wooga/gradle/unity/UnityPlugin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,13 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin
import wooga.gradle.unity.models.APICompatibilityLevel
import wooga.gradle.unity.models.DefaultUnityAuthentication
import wooga.gradle.unity.internal.DefaultUnityPluginExtension
import wooga.gradle.unity.models.BuildTarget
import wooga.gradle.unity.models.TestPlatform
import wooga.gradle.unity.tasks.Activate

import wooga.gradle.unity.tasks.GenerateSolution
import wooga.gradle.unity.tasks.ReturnLicense
import wooga.gradle.unity.tasks.SetAPICompatibilityLevel
import wooga.gradle.unity.tasks.Test
import wooga.gradle.unity.utils.ProjectSettingsFile
import wooga.gradle.unity.utils.UnityTestTaskReport
import wooga.gradle.unity.utils.UnityTestTaskReportsImpl

/**
* A {@link org.gradle.api.Plugin} which provides tasks to run unity batch-mode commands.
Expand Down Expand Up @@ -76,7 +73,8 @@ class UnityPlugin implements Plugin<Project> {
activateUnity(Activate),
returnUnityLicense(ReturnLicense),
setAPICompatibilityLevel(APICompatibilityLevel),
unsetAPICompatibilityLevel(APICompatibilityLevel)
unsetAPICompatibilityLevel(APICompatibilityLevel),
generateSolution(GenerateSolution)

private final Class taskClass

Expand Down Expand Up @@ -161,6 +159,7 @@ class UnityPlugin implements Plugin<Project> {
addTestTasks(project, extension)
addSetAPICompatibilityLevelTasks(project, extension)
addActivateAndReturnLicenseTasks(project, extension)
addGenerateSolutionTask(project)
}

private static void addTestTasks(final Project project, final UnityPluginExtension extension) {
Expand Down Expand Up @@ -314,6 +313,12 @@ class UnityPlugin implements Plugin<Project> {
t.finalizedBy(returnLicenseTask)
}
})
}

private static void addGenerateSolutionTask(Project project) {
project.tasks.register(Tasks.generateSolution.toString(), GenerateSolution) {task ->
task.description = "Generates a synchronized solution file for the unity project"
task.group = GROUP
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package wooga.gradle.unity.tasks

import wooga.gradle.unity.UnityTask

class GenerateSolution extends UnityTask {

GenerateSolution() {
executeMethod = "UnityEditor.SyncVS.SyncSolution"
quit = true
}
}