Skip to content

Commit 79dd856

Browse files
committed
generate batchmode tests run configuration
1 parent e081216 commit 79dd856

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

rider/src/main/kotlin/com/jetbrains/rider/plugins/unity/run/DefaultRunConfigurationGenerator.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import com.jetbrains.rider.plugins.unity.run.configurations.UnityDebugConfigurat
1515
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfiguration
1616
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfigurationFactory
1717
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfigurationType
18+
import com.jetbrains.rider.plugins.unity.util.*
1819
import com.jetbrains.rider.projectView.solution
20+
import com.jetbrains.rider.projectView.solutionDirectory
1921
import java.io.File
2022

2123
class DefaultRunConfigurationGenerator(project: Project) : ProtocolSubscribedProjectComponent(project) {
@@ -24,6 +26,7 @@ class DefaultRunConfigurationGenerator(project: Project) : ProtocolSubscribedPro
2426
const val ATTACH_CONFIGURATION_NAME = "Attach to Unity Editor"
2527
const val ATTACH_AND_PLAY_CONFIGURATION_NAME = "Attach to Unity Editor & Play"
2628
const val RUN_DEBUG_STANDALONE_CONFIGURATION_NAME = "Standalone Player"
29+
const val RUN_DEBUG_BATCH_MODE_UNITTESTS_CONFIGURATION_NAME = "UnitTests (batch mode)"
2730
}
2831

2932
init {
@@ -54,6 +57,27 @@ class DefaultRunConfigurationGenerator(project: Project) : ProtocolSubscribedPro
5457
runManager.addConfiguration(runConfiguration)
5558
}
5659

60+
if (project.isUnityProject() && !runManager.allSettings.any { s -> s.type is UnityExeConfigurationType
61+
&& s.factory is UnityExeConfigurationFactory && s.name == RUN_DEBUG_BATCH_MODE_UNITTESTS_CONFIGURATION_NAME}) {
62+
val exePath = UnityInstallationFinder.getInstance(project).getApplicationExecutablePath()
63+
if (exePath != null) {
64+
val configurationType = ConfigurationTypeUtil.findConfigurationType(UnityExeConfigurationType::class.java)
65+
val runConfiguration = runManager.createConfiguration(
66+
RUN_DEBUG_BATCH_MODE_UNITTESTS_CONFIGURATION_NAME,
67+
configurationType.factory
68+
)
69+
val unityExeConfiguration = runConfiguration.configuration as UnityExeConfiguration
70+
unityExeConfiguration.parameters.exePath = exePath.toFile().canonicalPath
71+
unityExeConfiguration.parameters.workingDirectory = project.solutionDirectory.canonicalPath
72+
unityExeConfiguration.parameters.programParameters =
73+
mutableListOf<String>().withRunTests(project).withBatchMode(project)
74+
.withProjectPath(project).withTestResults(project).withDebugCodeOptimization()
75+
.toProgramParameters()
76+
runConfiguration.storeInLocalWorkspace()
77+
runManager.addConfiguration(runConfiguration)
78+
}
79+
}
80+
5781
// create it, if it doesn't exist, to advertise the feature
5882
project.solution.frontendBackendModel.unityProjectSettings.buildLocation.adviseNotNull(projectComponentLifetime) {
5983
if (!runManager.allSettings.any { s -> s.type is UnityExeConfigurationType

rider/src/main/kotlin/com/jetbrains/rider/plugins/unity/util/UnityUtils.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,21 @@ fun MutableList<String>.withProjectPath(project: Project) : MutableList<String>
4343
return this
4444
}
4545

46+
fun MutableList<String>.withBatchMode(project: Project) : MutableList<String> {
47+
this.add("-batchmode")
48+
return this
49+
}
50+
51+
fun MutableList<String>.withRunTests(project: Project) : MutableList<String> {
52+
this.add("-runTests")
53+
return this
54+
}
55+
56+
fun MutableList<String>.withTestResults(project: Project) : MutableList<String> {
57+
this.addAll(listOf("-testResults", project.solutionDirectory.resolve("results.xml").canonicalPath))
58+
return this
59+
}
60+
4661
fun MutableList<String>.toProgramParameters() : String {
4762
return ParametersListUtil.join(this)
4863
}

0 commit comments

Comments
 (0)