IJI-532 Safe Push: add IdeaUltimateLibraryLicensesTest to smoke tests (like project structure tests)

GitOrigin-RevId: 34b597eb546a06e69dabbd6ffb2eab3472d11ad5
This commit is contained in:
Dmitriy.Panov
2020-12-11 23:22:50 +00:00
committed by intellij-monorepo-bot
parent b9d1e88402
commit ad82f676fe
4 changed files with 57 additions and 21 deletions
@@ -20,8 +20,8 @@ class TestingOptions {
String testPatterns = System.getProperty("intellij.build.test.patterns", OLD_TEST_PATTERNS)
/**
* Semicolon-separated names of JUnit run configurations in the project which need to be executed. If this option is specified,
* {@link #testGroups}, {@link #testPatterns} and {@link #mainModule} will be ignored.
* Semicolon-separated names of JUnit run configurations (with optional custom test bootstrap suite in parentheses after each) in the project which need to be executed.
* If this option is specified {@link #testGroups}, {@link #testPatterns} and {@link #mainModule} will be ignored.
*/
String testConfigurations = System.getProperty("intellij.build.test.configurations")
@@ -9,10 +9,11 @@ import org.jetbrains.intellij.build.BuildMessages
final class JUnitRunConfigurationProperties extends RunConfigurationProperties {
final List<String> testClassPatterns
final List<String> requiredArtifacts
final String testBootstrapSuite
@SuppressWarnings(["GrUnresolvedAccess", "GroovyAssignabilityCheck"])
@CompileDynamic
static JUnitRunConfigurationProperties loadRunConfiguration(File file, BuildMessages messages) {
static JUnitRunConfigurationProperties loadRunConfiguration(File file, String testBootstrapSuite, BuildMessages messages) {
def configuration = getConfiguration(file, messages)
if (configuration.@type != "JUnit") {
@@ -54,11 +55,13 @@ final class JUnitRunConfigurationProperties extends RunConfigurationProperties {
// Pattern is a regex already, we don't need to escape it in com.intellij.TestClassesFilter
("pattern" == testKind ? ["-Dintellij.build.test.patterns.escaped=true"] : [])
def envVariables = first(configuration.envs)?.env?.collectEntries { [it.@name, it.@value] } ?: [:]
return new JUnitRunConfigurationProperties(configuration.@name, moduleName, testClassPatterns, vmParameters, requiredArtifacts, envVariables)
return new JUnitRunConfigurationProperties(configuration.@name, moduleName, testBootstrapSuite,
testClassPatterns, vmParameters, requiredArtifacts, envVariables)
}
JUnitRunConfigurationProperties(String name,
String moduleName,
String testBootstrapSuite,
List<String> testClassPatterns,
List<String> vmParameters,
List<String> requiredArtifacts,
@@ -66,5 +69,6 @@ final class JUnitRunConfigurationProperties extends RunConfigurationProperties {
super(name, moduleName, vmParameters, envVariables)
this.testClassPatterns = testClassPatterns
this.requiredArtifacts = requiredArtifacts
this.testBootstrapSuite = testBootstrapSuite
}
}
@@ -10,7 +10,11 @@ import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import org.apache.tools.ant.AntClassLoader
import org.apache.tools.ant.types.Path
import org.jetbrains.intellij.build.*
import org.jetbrains.intellij.build.BuildOptions
import org.jetbrains.intellij.build.CompilationContext
import org.jetbrains.intellij.build.CompilationTasks
import org.jetbrains.intellij.build.TestingOptions
import org.jetbrains.intellij.build.TestingTasks
import org.jetbrains.intellij.build.causal.CausalProfilingOptions
import org.jetbrains.intellij.build.impl.compilation.PortableCompilationCache
import org.jetbrains.jps.model.java.JpsJavaClasspathKind
@@ -49,10 +53,7 @@ class TestingTasksImpl extends TestingTasks {
if (projectArtifacts) {
compilationTasks.buildProjectArtifacts(projectArtifacts)
}
def runConfigurations = options.testConfigurations?.split(";")?.collect { String name ->
def file = JUnitRunConfigurationProperties.findRunConfiguration(context.paths.projectHome, name, context.messages)
JUnitRunConfigurationProperties.loadRunConfiguration(file, context.messages)
}
def runConfigurations = options.testConfigurations?.split(";")?.collect { loadRunConfiguration(it) }
if (runConfigurations != null) {
compilationTasks.compileModules(["intellij.tools.testsBootstrap"], ["intellij.platform.buildScripts"] + runConfigurations.collect { it.moduleName })
compilationTasks.buildProjectArtifacts(runConfigurations.collectMany {it.requiredArtifacts})
@@ -125,8 +126,11 @@ class TestingTasksImpl extends TestingTasks {
Map<String, String> additionalSystemProperties) {
context.messages.progress("Running '${runConfigurationProperties.name}' run configuration")
List<String> filteredVmOptions = removeStandardJvmOptions(runConfigurationProperties.vmParameters)
runTestsProcess(runConfigurationProperties.moduleName, null, runConfigurationProperties.testClassPatterns.join(";"),
filteredVmOptions + additionalJvmOptions, additionalSystemProperties, runConfigurationProperties.envVariables, false)
runTestsProcess(runConfigurationProperties.moduleName,
runConfigurationProperties.testBootstrapSuite, null,
runConfigurationProperties.testClassPatterns.join(";"),
filteredVmOptions + additionalJvmOptions, additionalSystemProperties,
runConfigurationProperties.envVariables, false)
}
private static List<String> removeStandardJvmOptions(List<String> vmOptions) {
@@ -158,7 +162,9 @@ class TestingTasksImpl extends TestingTasks {
additionalSystemProperties["exclude.tests.roots.file"] = excludedRootsFile.absolutePath
}
runTestsProcess(mainModule, options.testGroups, options.testPatterns, additionalJvmOptions, additionalSystemProperties, [:], false)
runTestsProcess(mainModule, options.bootstrapSuite,
options.testGroups, options.testPatterns,
additionalJvmOptions, additionalSystemProperties, [:], false)
}
private loadTestDiscovery(List<String> additionalJvmOptions, LinkedHashMap<String, String> additionalSystemProperties) {
@@ -260,10 +266,12 @@ class TestingTasksImpl extends TestingTasks {
}
def mainModule = options.mainModule ?: defaultMainModule
def filteredOptions = removeStandardJvmOptions(StringUtil.splitHonorQuotes(remoteDebugJvmOptions, ' ' as char))
runTestsProcess(mainModule, null, junitClass, filteredOptions + additionalJvmOptions, [:], [:], true)
runTestsProcess(mainModule, options.bootstrapSuite, null,
junitClass, filteredOptions + additionalJvmOptions,
[:], [:], true)
}
private void runTestsProcess(String mainModule, String testGroups, String testPatterns,
private void runTestsProcess(String mainModule, String testBootstrapSuite, String testGroups, String testPatterns,
List<String> jvmArgs, Map<String, String> systemProperties, Map<String, String> envVariables, boolean remoteDebugging) {
List<String> testsClasspath = context.getModuleRuntimeClasspath(context.findRequiredModule(mainModule), true)
List<String> bootstrapClasspath = context.getModuleRuntimeClasspath(context.findRequiredModule("intellij.tools.testsBootstrap"), false)
@@ -302,7 +310,8 @@ class TestingTasksImpl extends TestingTasks {
context.messages.info("Environment variables: $envVariables")
}
runJUnitTask(mainModule, allJvmArgs, allSystemProperties, envVariables, isBootstrapSuiteDefault() && !isRunningInBatchMode() ? bootstrapClasspath : testsClasspath)
runJUnitTask(mainModule, testBootstrapSuite, allJvmArgs, allSystemProperties, envVariables,
isBootstrapSuiteDefault(testBootstrapSuite) && !isRunningInBatchMode() ? bootstrapClasspath : testsClasspath)
notifySnapshotBuilt(allJvmArgs)
}
@@ -417,7 +426,8 @@ class TestingTasksImpl extends TestingTasks {
@SuppressWarnings("GrUnresolvedAccess")
@CompileDynamic
private void runJUnitTask(String mainModule, List<String> jvmArgs, Map<String, String> systemProperties,
private void runJUnitTask(String mainModule, String testBootstrapSuite,
List<String> jvmArgs, Map<String, String> systemProperties,
Map<String, String> envVariables, List<String> bootstrapClasspath) {
defineJunitTask(context.ant, "$context.paths.communityHome/lib")
@@ -458,7 +468,7 @@ class TestingTasksImpl extends TestingTasks {
}
//test classpath may exceed the maximum command line, so we need to wrap a classpath in a jar
if (!isBootstrapSuiteDefault()) {
if (!isBootstrapSuiteDefault(testBootstrapSuite)) {
def classpathJarFile = CommandLineWrapperUtil.createClasspathJarFile(new Manifest(), bootstrapClasspath)
classpath {
pathelement(location: classpathJarFile.path)
@@ -477,7 +487,7 @@ class TestingTasksImpl extends TestingTasks {
fileset dir: mainModuleTestsOutput, includes: options.batchTestIncludes
}
} else {
test(name: options.bootstrapSuite)
test(name: testBootstrapSuite)
}
}
}
@@ -554,8 +564,8 @@ class TestingTasksImpl extends TestingTasks {
ant.taskdef(name: "junit", classname: "org.apache.tools.ant.taskdefs.optional.junit.JUnitTask", loaderRef: junitTaskLoaderRef)
}
protected boolean isBootstrapSuiteDefault() {
return options.bootstrapSuite == TestingOptions.BOOTSTRAP_SUITE_DEFAULT
protected static boolean isBootstrapSuiteDefault(String testBootstrapSuite) {
return testBootstrapSuite == TestingOptions.BOOTSTRAP_SUITE_DEFAULT
}
protected boolean isRunningInBatchMode() {
@@ -584,4 +594,21 @@ class TestingTasksImpl extends TestingTasks {
return causalProfilingJvmArgs
}
private JUnitRunConfigurationProperties loadRunConfiguration(String descriptor) {
String name
String testBootstrapSuite
def openingIndex = descriptor.indexOf('(')
def closingIndex = descriptor.indexOf(')')
if (openingIndex > -1 && closingIndex > -1 && closingIndex > openingIndex) {
name = descriptor.substring(0, openingIndex).trim()
testBootstrapSuite = descriptor.substring(openingIndex + 1, closingIndex).trim()
}
else {
name = descriptor.trim()
testBootstrapSuite = options.bootstrapSuite
}
def file = JUnitRunConfigurationProperties.findRunConfiguration(context.paths.projectHome, name, context.messages)
return JUnitRunConfigurationProperties.loadRunConfiguration(file, testBootstrapSuite, context.messages)
}
}
@@ -6,6 +6,7 @@ package org.jetbrains.intellij.build
import com.intellij.util.io.URLUtil
import junit.framework.AssertionFailedError
import org.jetbrains.intellij.build.impl.JUnitRunConfigurationProperties
import org.jetbrains.intellij.build.TestingOptions
import org.junit.Assert.assertEquals
import org.junit.Test
@@ -55,6 +56,10 @@ class JUnitRunConfigurationPropertiesTest {
private fun loadRunConfiguration(fileName: String): JUnitRunConfigurationProperties {
val url = JUnitRunConfigurationPropertiesTest::class.java.getResource("runConfigurations/$fileName")
return JUnitRunConfigurationProperties.loadRunConfiguration(URLUtil.urlToFile(url), MockBuildMessages())
return JUnitRunConfigurationProperties.loadRunConfiguration(
URLUtil.urlToFile(url),
TestingOptions.BOOTSTRAP_SUITE_DEFAULT,
MockBuildMessages()
)
}
}