mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
build scripts: support env variables specified in JUnit run configurations
This commit is contained in:
+6
-2
@@ -15,6 +15,7 @@ class JUnitRunConfigurationProperties {
|
||||
final List<String> testClassPatterns
|
||||
final List<String> vmParameters
|
||||
final List<String> requiredArtifacts
|
||||
final Map<String, String> envVariables
|
||||
|
||||
static JUnitRunConfigurationProperties findRunConfiguration(String projectHome, String name, BuildMessages messages) {
|
||||
def file = new File(projectHome, ".idea/runConfigurations/${FileUtil.sanitizeFileName(name)}.xml")
|
||||
@@ -64,18 +65,21 @@ class JUnitRunConfigurationProperties {
|
||||
artifact?.collect { it.@name } ?: []
|
||||
|
||||
def vmParameters = options["VM_PARAMETERS"].tokenize()
|
||||
return new JUnitRunConfigurationProperties(configuration.@name, moduleName, testClassPatterns, vmParameters, requiredArtifacts)
|
||||
def envVariables = first(configuration.envs)?.env?.collectEntries { [it.@name, it.@value] } ?: [:]
|
||||
return new JUnitRunConfigurationProperties(configuration.@name, moduleName, testClassPatterns, vmParameters, requiredArtifacts, envVariables)
|
||||
}
|
||||
|
||||
private static <T> T first(Collection<T> collection) {
|
||||
collection == null || collection.isEmpty() ? null : collection.first()
|
||||
}
|
||||
|
||||
JUnitRunConfigurationProperties(String name, String moduleName, List<String> testClassPatterns, List<String> vmParameters, List<String> requiredArtifacts) {
|
||||
JUnitRunConfigurationProperties(String name, String moduleName, List<String> testClassPatterns, List<String> vmParameters,
|
||||
List<String> requiredArtifacts, Map<String, String> envVariables) {
|
||||
this.name = name
|
||||
this.moduleName = moduleName
|
||||
this.testClassPatterns = testClassPatterns
|
||||
this.requiredArtifacts = requiredArtifacts
|
||||
this.vmParameters = vmParameters
|
||||
this.envVariables = envVariables
|
||||
}
|
||||
}
|
||||
|
||||
+15
-7
@@ -31,6 +31,7 @@ import org.jetbrains.jps.util.JpsPathUtil
|
||||
|
||||
import java.util.function.Predicate
|
||||
import java.util.jar.Manifest
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
@@ -106,7 +107,7 @@ class TestingTasksImpl extends TestingTasks {
|
||||
context.messages.progress("Running '${runConfigurationProperties.name}' run configuration")
|
||||
List<String> filteredVmOptions = removeStandardJvmOptions(runConfigurationProperties.vmParameters)
|
||||
runTestsProcess(runConfigurationProperties.moduleName, null, runConfigurationProperties.testClassPatterns.join(";"),
|
||||
filteredVmOptions + additionalJvmOptions, [:], false)
|
||||
filteredVmOptions + additionalJvmOptions, [:], runConfigurationProperties.envVariables, false)
|
||||
}
|
||||
|
||||
private static List<String> removeStandardJvmOptions(List<String> vmOptions) {
|
||||
@@ -136,7 +137,7 @@ class TestingTasksImpl extends TestingTasks {
|
||||
additionalSystemProperties["exclude.tests.roots.file"] = excludedRootsFile.absolutePath
|
||||
}
|
||||
|
||||
runTestsProcess(mainModule, options.testGroups, options.testPatterns, additionalJvmOptions, additionalSystemProperties, false)
|
||||
runTestsProcess(mainModule, options.testGroups, options.testPatterns, additionalJvmOptions, additionalSystemProperties, [:], false)
|
||||
}
|
||||
|
||||
private void debugTests(String remoteDebugJvmOptions, List<String> additionalJvmOptions, String defaultMainModule, Predicate<File> rootExcludeCondition) {
|
||||
@@ -161,11 +162,11 @@ class TestingTasksImpl extends TestingTasks {
|
||||
}
|
||||
def mainModule = options.mainModule ?: defaultMainModule
|
||||
def filteredOptions = removeStandardJvmOptions(remoteDebugJvmOptions.split(";").toList())
|
||||
runTestsProcess(mainModule, null, junitClass, filteredOptions + additionalJvmOptions, [:], true)
|
||||
runTestsProcess(mainModule, null, junitClass, filteredOptions + additionalJvmOptions, [:], [:], true)
|
||||
}
|
||||
|
||||
private void runTestsProcess(String mainModule, String testGroups, String testPatterns,
|
||||
List<String> additionalJvmOptions, Map<String, String> additionalSystemProperties, boolean remoteDebugging) {
|
||||
List<String> additionalJvmOptions, Map<String, String> additionalSystemProperties, Map<String, String> envVariables, boolean remoteDebugging) {
|
||||
List<String> testsClasspath = context.getModuleRuntimeClasspath(context.findRequiredModule(mainModule), true)
|
||||
List<String> bootstrapClasspath = context.getModuleRuntimeClasspath(context.findRequiredModule("tests_bootstrap"), false)
|
||||
def classpathFile = new File("$context.paths.temp/junit.classpath")
|
||||
@@ -254,6 +255,9 @@ class TestingTasksImpl extends TestingTasks {
|
||||
context.messages.info("System properties: $systemProperties")
|
||||
context.messages.info("Bootstrap classpath: $bootstrapClasspath")
|
||||
context.messages.info("Tests classpath: $testsClasspath")
|
||||
if (!envVariables.isEmpty()) {
|
||||
context.messages.info("Environment variables: $envVariables")
|
||||
}
|
||||
|
||||
if (suspendDebugProcess) {
|
||||
context.messages.info("""
|
||||
@@ -262,11 +266,11 @@ class TestingTasksImpl extends TestingTasks {
|
||||
""")
|
||||
}
|
||||
if (isBootstrapSuiteDefault()) {
|
||||
runJUnitTask(jvmArgs, systemProperties, bootstrapClasspath)
|
||||
runJUnitTask(jvmArgs, systemProperties, envVariables, bootstrapClasspath)
|
||||
}
|
||||
else {
|
||||
//run other suites instead of BootstrapTests
|
||||
runJUnitTask(jvmArgs, systemProperties, testsClasspath)
|
||||
runJUnitTask(jvmArgs, systemProperties, envVariables, testsClasspath)
|
||||
}
|
||||
|
||||
if (new File(hprofSnapshotFilePath).exists()) {
|
||||
@@ -283,8 +287,9 @@ class TestingTasksImpl extends TestingTasks {
|
||||
return snapshotsDir
|
||||
}
|
||||
|
||||
@SuppressWarnings("GrUnresolvedAccess")
|
||||
@CompileDynamic
|
||||
private void runJUnitTask(List<String> jvmArgs, Map<String, String> systemProperties, List<String> bootstrapClasspath) {
|
||||
private void runJUnitTask(List<String> jvmArgs, Map<String, String> systemProperties, Map<String, String> envVariables, List<String> bootstrapClasspath) {
|
||||
defineJunitTask(context.ant, "$context.paths.communityHome/lib")
|
||||
|
||||
String junitTemp = "$context.paths.temp/junit"
|
||||
@@ -300,6 +305,9 @@ class TestingTasksImpl extends TestingTasks {
|
||||
sysproperty(key: key, value: value)
|
||||
}
|
||||
}
|
||||
envVariables.each {
|
||||
env(key: it.key, value: it.value)
|
||||
}
|
||||
|
||||
if (teamCityFormatterClasspath != null) {
|
||||
classpath {
|
||||
|
||||
+4
@@ -13,6 +13,10 @@
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies"/>
|
||||
</option>
|
||||
<envs>
|
||||
<env name="foo" value="1"/>
|
||||
<env name="bar" value="2"/>
|
||||
</envs>
|
||||
<method>
|
||||
<option name="BuildArtifacts" enabled="true">
|
||||
<artifact name="artifact1"/>
|
||||
|
||||
+1
@@ -17,6 +17,7 @@ class JUnitRunConfigurationPropertiesTest {
|
||||
assertEquals(listOf("com.example.test.MainTest"), properties.testClassPatterns)
|
||||
assertEquals(listOf("-ea", "-Xmx512m"), properties.vmParameters)
|
||||
assertEquals(listOf("artifact1", "artifact2"), properties.requiredArtifacts)
|
||||
assertEquals(mapOf("foo" to "1", "bar" to "2"), properties.envVariables)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user