mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[gradle] more reliable test re-execution (includng cached tests) IDEA-208398
GitOrigin-RevId: 4bd7a7d17004a300803c79bfc195154cbbb90c2a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b64446de8c
commit
9c90fd26dc
@@ -24,6 +24,7 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -48,7 +49,7 @@ import static org.jetbrains.plugins.gradle.settings.TestRunner.*;
|
||||
* @author Vladislav.Soroka
|
||||
*/
|
||||
public abstract class GradleTestRunConfigurationProducer extends RunConfigurationProducer<ExternalSystemRunConfiguration> {
|
||||
private static final List<String> TEST_SOURCE_SET_TASKS = Arrays.asList("cleanTest", "test");
|
||||
private static final List<String> TEST_SOURCE_SET_TASKS = Collections.singletonList("test");
|
||||
|
||||
protected static final Logger LOG = Logger.getInstance(GradleTestRunConfigurationProducer.class);
|
||||
|
||||
@@ -179,8 +180,7 @@ public abstract class GradleTestRunConfigurationProducer extends RunConfiguratio
|
||||
if (FileUtil.isAncestor(sourceFolder, sourcePath, false)) {
|
||||
String testName = testData.getTestName();
|
||||
String testTaskName = testData.getTestTaskName();
|
||||
String clearTestTaskName = testData.getCleanTestTaskName();
|
||||
List<String> tasks = ContainerUtil.newArrayList(clearTestTaskName, testTaskName);
|
||||
List<String> tasks = new SmartList<>(testTaskName);
|
||||
testTasks.add(new TasksToRun.Impl(testName, tasks));
|
||||
}
|
||||
}
|
||||
@@ -235,7 +235,7 @@ public abstract class GradleTestRunConfigurationProducer extends RunConfiguratio
|
||||
|
||||
if (taskNode == null) return ContainerUtil.emptyList();
|
||||
String taskName = StringUtil.trimStart(taskNode.getData().getName(), taskPrefix);
|
||||
tasks = Arrays.asList("clean" + StringUtil.capitalize(taskName), taskName);
|
||||
tasks = Collections.singletonList(taskName);
|
||||
return ContainerUtil.map(tasks, task -> taskPrefix + task);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,15 +16,15 @@ class GradleTestRunConfigurationProducerTest : GradleTestRunConfigurationProduce
|
||||
fun `test simple configuration`() {
|
||||
val projectData = generateAndImportTemplateProject()
|
||||
assertConfigurationFromContext<TestMethodGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase.test1"""",
|
||||
""":test --tests "TestCase.test1"""",
|
||||
projectData["project"]["TestCase"]["test1"].element
|
||||
)
|
||||
assertConfigurationFromContext<TestClassGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase"""",
|
||||
""":test --tests "TestCase"""",
|
||||
projectData["project"]["TestCase"].element
|
||||
)
|
||||
assertConfigurationFromContext<AllInPackageGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "pkg.*"""",
|
||||
""":test --tests "pkg.*"""",
|
||||
runReadActionAndWait { projectData["project"]["pkg.TestCase"].element.containingFile.containingDirectory }
|
||||
)
|
||||
}
|
||||
@@ -33,22 +33,22 @@ class GradleTestRunConfigurationProducerTest : GradleTestRunConfigurationProduce
|
||||
fun `test pattern configuration`() {
|
||||
val projectData = generateAndImportTemplateProject()
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase.test1" --tests "pkg.TestCase.test1" """ +
|
||||
""":module:cleanTest :module:test --tests "ModuleTestCase.test1" --continue""",
|
||||
""":test --tests "TestCase.test1" --tests "pkg.TestCase.test1" """ +
|
||||
""":module:test --tests "ModuleTestCase.test1" --continue""",
|
||||
projectData["project"]["TestCase"]["test1"].element,
|
||||
projectData["project"]["pkg.TestCase"]["test1"].element,
|
||||
projectData["module"]["ModuleTestCase"]["test1"].element
|
||||
)
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase" --tests "pkg.TestCase" """ +
|
||||
""":module:cleanTest :module:test --tests "ModuleTestCase" --continue""",
|
||||
""":test --tests "TestCase" --tests "pkg.TestCase" """ +
|
||||
""":module:test --tests "ModuleTestCase" --continue""",
|
||||
projectData["project"]["TestCase"].element,
|
||||
projectData["project"]["pkg.TestCase"].element,
|
||||
projectData["module"]["ModuleTestCase"].element
|
||||
)
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase.test1" --tests "pkg.TestCase.test1" """ +
|
||||
""":module:cleanTest :module:test --tests "ModuleTestCase" --continue""",
|
||||
""":test --tests "TestCase.test1" --tests "pkg.TestCase.test1" """ +
|
||||
""":module:test --tests "ModuleTestCase" --continue""",
|
||||
projectData["project"]["TestCase"]["test1"].element,
|
||||
projectData["project"]["pkg.TestCase"]["test1"].element,
|
||||
projectData["module"]["ModuleTestCase"].element
|
||||
@@ -98,24 +98,24 @@ class GradleTestRunConfigurationProducerTest : GradleTestRunConfigurationProduce
|
||||
fun `test configuration escaping`() {
|
||||
val projectData = generateAndImportTemplateProject()
|
||||
assertConfigurationFromContext<TestMethodGradleConfigurationProducer>(
|
||||
"""':my module:cleanTest' ':my module:test' --tests "MyModuleTestCase.test1"""",
|
||||
"""':my module:test' --tests "MyModuleTestCase.test1"""",
|
||||
projectData["my module"]["MyModuleTestCase"]["test1"].element
|
||||
)
|
||||
assertConfigurationFromContext<TestClassGradleConfigurationProducer>(
|
||||
"""':my module:cleanTest' ':my module:test' --tests "MyModuleTestCase"""",
|
||||
"""':my module:test' --tests "MyModuleTestCase"""",
|
||||
projectData["my module"]["MyModuleTestCase"].element
|
||||
)
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
"""':my module:cleanTest' ':my module:test' --tests "MyModuleTestCase.test1" --tests "MyModuleTestCase.test2"""",
|
||||
"""':my module:test' --tests "MyModuleTestCase.test1" --tests "MyModuleTestCase.test2"""",
|
||||
projectData["my module"]["MyModuleTestCase"]["test1"].element,
|
||||
projectData["my module"]["MyModuleTestCase"]["test2"].element
|
||||
)
|
||||
assertConfigurationFromContext<TestMethodGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "GroovyTestCase.Don\'t use single * quo\*tes"""",
|
||||
""":test --tests "GroovyTestCase.Don\'t use single * quo\*tes"""",
|
||||
projectData["project"]["GroovyTestCase"]["""Don\'t use single . quo\"tes"""].element
|
||||
)
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "GroovyTestCase.Don\'t use single * quo\*tes" --tests "GroovyTestCase.test2"""",
|
||||
""":test --tests "GroovyTestCase.Don\'t use single * quo\*tes" --tests "GroovyTestCase.test2"""",
|
||||
projectData["project"]["GroovyTestCase"]["""Don\'t use single . quo\"tes"""].element,
|
||||
projectData["project"]["GroovyTestCase"]["test2"].element
|
||||
)
|
||||
@@ -126,7 +126,7 @@ class GradleTestRunConfigurationProducerTest : GradleTestRunConfigurationProduce
|
||||
currentExternalProjectSettings.isResolveModulePerSourceSet = false
|
||||
val projectData = generateAndImportTemplateProject()
|
||||
assertConfigurationFromContext<PatternGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "TestCase" :cleanAutoTest :autoTest --tests "AutomationTestCase" --continue""",
|
||||
""":test --tests "TestCase" :autoTest --tests "AutomationTestCase" --continue""",
|
||||
projectData["project"]["TestCase"].element,
|
||||
projectData["project"]["AutomationTestCase"].element,
|
||||
testTasksFilter = { it in setOf("test", "autoTest") }
|
||||
@@ -137,31 +137,31 @@ class GradleTestRunConfigurationProducerTest : GradleTestRunConfigurationProduce
|
||||
fun `test configuration tests for directory`() {
|
||||
val projectData = generateAndImportTemplateProject()
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":cleanAutoTest :autoTest --tests * :cleanAutomationTest :automationTest --tests * :cleanTest :test --tests * --continue""",
|
||||
""":autoTest --tests * :automationTest --tests * :test --tests * --continue""",
|
||||
projectData["project"].root
|
||||
)
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests *""",
|
||||
""":test --tests *""",
|
||||
projectData["project"].root.subDirectory("src")
|
||||
)
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests *""",
|
||||
""":test --tests *""",
|
||||
projectData["project"].root.subDirectory("src", "test")
|
||||
)
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests *""",
|
||||
""":test --tests *""",
|
||||
projectData["project"].root.subDirectory("src", "test", "java")
|
||||
)
|
||||
assertConfigurationFromContext<AllInPackageGradleConfigurationProducer>(
|
||||
""":cleanTest :test --tests "pkg.*"""",
|
||||
""":test --tests "pkg.*"""",
|
||||
projectData["project"].root.subDirectory("src", "test", "java", "pkg")
|
||||
)
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":cleanAutoTest :autoTest --tests * :cleanAutomationTest :automationTest --tests * --continue""",
|
||||
""":autoTest --tests * :automationTest --tests * --continue""",
|
||||
projectData["project"].root.subDirectory("automation")
|
||||
)
|
||||
assertConfigurationFromContext<AllInDirectoryGradleConfigurationProducer>(
|
||||
""":module:cleanTest :module:test --tests *""",
|
||||
""":module:test --tests *""",
|
||||
projectData["module"].root
|
||||
)
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ gradle.taskGraph.beforeTask { Task task ->
|
||||
|
||||
if (task instanceof Test || (abstractTestTaskClass != null && abstractTestTaskClass.isAssignableFrom(task.class))) {
|
||||
try {
|
||||
task.outputs.upToDateWhen { false }
|
||||
if(ijTestIncludes != ['*'] && ijTestFilteringSupported) {
|
||||
def filter = task.getFilter()
|
||||
filter.setIncludePatterns(new String[0])
|
||||
|
||||
Reference in New Issue
Block a user