@@ -15,7 +15,9 @@ import com.jetbrains.rider.plugins.unity.run.configurations.UnityDebugConfigurat
15
15
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfiguration
16
16
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfigurationFactory
17
17
import com.jetbrains.rider.plugins.unity.run.configurations.unityExe.UnityExeConfigurationType
18
+ import com.jetbrains.rider.plugins.unity.util.*
18
19
import com.jetbrains.rider.projectView.solution
20
+ import com.jetbrains.rider.projectView.solutionDirectory
19
21
import java.io.File
20
22
21
23
class DefaultRunConfigurationGenerator (project : Project ) : ProtocolSubscribedProjectComponent(project) {
@@ -24,6 +26,7 @@ class DefaultRunConfigurationGenerator(project: Project) : ProtocolSubscribedPro
24
26
const val ATTACH_CONFIGURATION_NAME = " Attach to Unity Editor"
25
27
const val ATTACH_AND_PLAY_CONFIGURATION_NAME = " Attach to Unity Editor & Play"
26
28
const val RUN_DEBUG_STANDALONE_CONFIGURATION_NAME = " Standalone Player"
29
+ const val RUN_DEBUG_BATCH_MODE_UNITTESTS_CONFIGURATION_NAME = " UnitTests (batch mode)"
27
30
}
28
31
29
32
init {
@@ -54,6 +57,27 @@ class DefaultRunConfigurationGenerator(project: Project) : ProtocolSubscribedPro
54
57
runManager.addConfiguration(runConfiguration)
55
58
}
56
59
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
+
57
81
// create it, if it doesn't exist, to advertise the feature
58
82
project.solution.frontendBackendModel.unityProjectSettings.buildLocation.adviseNotNull(projectComponentLifetime) {
59
83
if (! runManager.allSettings.any { s -> s.type is UnityExeConfigurationType
0 commit comments