From d029b0b4857fea27f3b91c08f09a2332fa4a0fcb Mon Sep 17 00:00:00 2001 From: Bart van Helvert Date: Fri, 13 Jun 2025 16:23:15 +0200 Subject: [PATCH] [ssr] Remove dependency from Java tests to SSR platform test Moves Java specific tests into the Java SSR plugin. #IJPL-190621 GitOrigin-RevId: 71b175b4e3591318d8a6d516c580d6ec8051d1d3 --- java/structuralsearch-java/BUILD.bazel | 7 + .../intellij.java.structuralSearch.iml | 6 + .../JavaCommunityDetectFileTypeTest.java | 14 + .../JavaPredefinedConfigurationsTest.java | 42 +- .../JavaShouldShowProblemTest.java | 6 +- .../JavaStructuralReplaceTest.java | 545 +++++++++--------- .../JavaStructuralSearchTest.java | 30 +- .../OptimizedSearchScanTest.java | 5 +- .../SSRSerializationTest.java | 5 +- .../TemplatesCompletionTest.kt | 8 +- .../SSBasedInspectionSerializationTest.java | 5 +- .../inspection/SSBasedInspectionTest.java | 6 +- .../inspection/SSBasedInspectionTestCase.java | 11 +- platform/structuralsearch/BUILD.bazel | 5 +- ...tellij.platform.structuralSearch.tests.iml | 3 +- .../StructuralReplaceTestCase.java | 6 +- .../StructuralSearchTestCase.java | 6 +- .../ui/CommunityDetectFileTypeTest.java | 7 +- 18 files changed, 413 insertions(+), 304 deletions(-) create mode 100644 java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaCommunityDetectFileTypeTest.java rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/JavaPredefinedConfigurationsTest.java (94%) rename {platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui => java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch}/JavaShouldShowProblemTest.java (85%) rename platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java => java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralReplaceTest.java (80%) rename platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java => java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralSearchTest.java (99%) rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/OptimizedSearchScanTest.java (96%) rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/SSRSerializationTest.java (96%) rename {platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui => java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch}/TemplatesCompletionTest.kt (82%) rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/inspection/SSBasedInspectionSerializationTest.java (99%) rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/inspection/SSBasedInspectionTest.java (94%) rename {platform/structuralsearch/testSource/com/intellij => java/structuralsearch-java/testSrc/com/intellij/java}/structuralsearch/inspection/SSBasedInspectionTestCase.java (88%) diff --git a/java/structuralsearch-java/BUILD.bazel b/java/structuralsearch-java/BUILD.bazel index 678ab035ea6c..a6b3a59fb966 100644 --- a/java/structuralsearch-java/BUILD.bazel +++ b/java/structuralsearch-java/BUILD.bazel @@ -44,6 +44,13 @@ jvm_library( "//java/java-impl:impl", "//platform/duplicates-analysis", "//java/testFramework", + "//platform/structuralsearch:structuralSearch-tests_test_lib", + "//tools/intellij.tools.ide.metrics.benchmark:ide-metrics-benchmark", + "//tools/intellij.tools.ide.metrics.benchmark:ide-metrics-benchmark_test_lib", + "//platform/core-ui", + "//platform/util/jdom", + "//platform/projectModel-api:projectModel", + "//platform/code-style-api:codeStyle", ], runtime_deps = [":structuralSearch_resources"] ) diff --git a/java/structuralsearch-java/intellij.java.structuralSearch.iml b/java/structuralsearch-java/intellij.java.structuralSearch.iml index 9bedc0451384..11d64f6bfc9e 100644 --- a/java/structuralsearch-java/intellij.java.structuralSearch.iml +++ b/java/structuralsearch-java/intellij.java.structuralSearch.iml @@ -20,5 +20,11 @@ + + + + + + \ No newline at end of file diff --git a/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaCommunityDetectFileTypeTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaCommunityDetectFileTypeTest.java new file mode 100644 index 000000000000..d7ae21d6d33d --- /dev/null +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaCommunityDetectFileTypeTest.java @@ -0,0 +1,14 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch; + +import com.intellij.ide.highlighter.JavaFileType; +import com.intellij.structuralsearch.plugin.ui.DetectFileTypeTestCase; + +/** + * @author Bas Leijdekkers + */ +public class JavaCommunityDetectFileTypeTest extends DetectFileTypeTestCase { + public void testDetectJava() { + doTest(JavaFileType.INSTANCE, "class X {{ System.out.println();}}"); + } +} \ No newline at end of file diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/JavaPredefinedConfigurationsTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaPredefinedConfigurationsTest.java similarity index 94% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/JavaPredefinedConfigurationsTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaPredefinedConfigurationsTest.java index ffdfe55585de..754895d7bd54 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/JavaPredefinedConfigurationsTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaPredefinedConfigurationsTest.java @@ -1,10 +1,17 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch; import com.intellij.ide.highlighter.JavaFileType; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.util.Disposer; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiElement; +import com.intellij.structuralsearch.JavaPredefinedConfigurations; +import com.intellij.structuralsearch.PredefinedConfigurationsTestCase; +import com.intellij.structuralsearch.SSRBundle; import com.intellij.structuralsearch.plugin.ui.Configuration; +import com.intellij.testFramework.IdeaTestUtil; import org.intellij.lang.annotations.Language; import java.util.Map; @@ -15,6 +22,32 @@ import java.util.stream.Stream; * @author Bas Leijdekkers */ public class JavaPredefinedConfigurationsTest extends PredefinedConfigurationsTestCase { + private final Disposable myBeforeParentDisposeDisposable = Disposer.newDisposable(); + + @Override + protected void setUp() throws Exception { + super.setUp(); + IdeaTestUtil.setProjectLanguageLevel(getProject(), LanguageLevel.JDK_16, myBeforeParentDisposeDisposable); + } + + @Override + protected void tearDown() throws Exception { + try { + Disposer.dispose(myBeforeParentDisposeDisposable); + } + catch (Throwable e) { + addSuppressedException(e); + } + finally { + super.tearDown(); + } + } + + @Override + protected Sdk getProjectJDK() { + return IdeaTestUtil.getMockJdk18(); + } + public void testAll() { final Configuration[] templates = JavaPredefinedConfigurations.createPredefinedTemplates(); final Map configurationMap = Stream.of(templates).collect(Collectors.toMap(Configuration::getName, x -> x)); @@ -560,9 +593,4 @@ public class JavaPredefinedConfigurationsTest extends PredefinedConfigurationsTe protected void doTest(Configuration template, @Language("JAVA") String source, String... results) { doTest(template, source, JavaFileType.INSTANCE, results); } - - @Override - protected LanguageLevel getLanguageLevel() { - return LanguageLevel.JDK_16; - } } \ No newline at end of file diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/JavaShouldShowProblemTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaShouldShowProblemTest.java similarity index 85% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/JavaShouldShowProblemTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaShouldShowProblemTest.java index 43f6f39dcdbc..c1292f7c1a98 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/JavaShouldShowProblemTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaShouldShowProblemTest.java @@ -1,11 +1,13 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.structuralsearch.plugin.ui; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.psi.JavaCodeFragment; import com.intellij.psi.JavaCodeFragmentFactory; import com.intellij.structuralsearch.JavaStructuralSearchProfile; +import com.intellij.structuralsearch.plugin.ui.StructuralSearchDialogKeys; +import com.intellij.structuralsearch.plugin.ui.StructuralSearchHighlightInfoFilter; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralReplaceTest.java similarity index 80% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralReplaceTest.java index b1b9210fe07b..73335387bea6 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralReplaceTest.java @@ -1,12 +1,18 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch; +package com.intellij.java.structuralsearch; import com.intellij.ide.highlighter.JavaFileType; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.util.Disposer; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.CommonClassNames; import com.intellij.psi.codeStyle.JavaCodeStyleSettings; +import com.intellij.structuralsearch.*; +import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.tools.ide.metrics.benchmark.Benchmark; +import junit.framework.TestCase; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -14,16 +20,35 @@ import java.io.IOException; /** * @author Maxim.Mossienko */ -public class StructuralReplaceTest extends StructuralReplaceTestCase { +public class JavaStructuralReplaceTest extends StructuralReplaceTestCase { + private final Disposable myBeforeParentDisposeDisposable = Disposer.newDisposable(); @Override protected void setUp() throws Exception { super.setUp(); - setLanguageLevel(LanguageLevel.JDK_16); + IdeaTestUtil.setProjectLanguageLevel(getProject(), LanguageLevel.JDK_16, myBeforeParentDisposeDisposable); final MatchOptions matchOptions = options.getMatchOptions(); matchOptions.setFileType(JavaFileType.INSTANCE); } + @Override + protected void tearDown() throws Exception { + try { + Disposer.dispose(myBeforeParentDisposeDisposable); + } + catch (Throwable e) { + addSuppressedException(e); + } + finally { + super.tearDown(); + } + } + + @Override + protected Sdk getProjectJDK() { + return IdeaTestUtil.getMockJdk18(); + } + public void testReplaceInLiterals() { String s1 = "String ID_SPEED = \"Speed\";"; String s2 = "String 'name = \"'_string\";"; @@ -31,8 +56,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String s3 = "VSegAttribute $name$ = new VSegAttribute(\"$string$\");"; String expectedResult = "VSegAttribute ID_SPEED = new VSegAttribute(\"Speed\");"; - assertEquals("Matching/replacing literals", expectedResult, replace(s1, s2, s3)); - assertEquals("Matching/replacing literals", expectedResult, replace(s1, s2_2, s3)); + TestCase.assertEquals("Matching/replacing literals", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Matching/replacing literals", expectedResult, replace(s1, s2_2, s3)); String s4 = "params.put(\"BACKGROUND\", \"#7B528D\");"; String s5 = "params.put(\"$FieldName$\", \"#$exp$\");"; @@ -41,7 +66,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult2 = "String BACKGROUND = \"BACKGROUND\";\n" + "params.put(BACKGROUND, \"7B528D\");"; - assertEquals("string literal replacement 2", expectedResult2, replace(s4, s5, s6)); + TestCase.assertEquals("string literal replacement 2", expectedResult2, replace(s4, s5, s6)); String s7 = """ IconLoader.getIcon("/ant/property.png"); @@ -54,7 +79,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { IconLoader.getIcon("/ant/another/property.png"); """; - assertEquals("string literal replacement 3", expectedResult3, replace(s7, s8, s9)); + TestCase.assertEquals("string literal replacement 3", expectedResult3, replace(s7, s8, s9)); String s10 = """ configureByFile(path + "1.html"); @@ -69,7 +94,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { checkResultByFile(path + "1_after2."+ext); checkResultByFile(path + "1_after3."+ext);"""; - assertEquals("string literal replacement 4", expectedResult4, replace(s10, s11, s12)); + TestCase.assertEquals("string literal replacement 4", expectedResult4, replace(s10, s11, s12)); } public void testReplace2() { @@ -101,7 +126,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("adding comment to statement inside the if body", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("adding comment to statement inside the if body", expectedResult, replace(s1, s2, s3)); String s4 = "myButton.setText(\"Ok\");"; String s5 = "'_Instance.'_MethodCall:[regex( setText )]('_Parameter*:[regex( \"Ok\" )]);"; @@ -109,7 +134,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult2 = "myButton.setText(\"OK\");"; - assertEquals("adding comment to statement inside the if body", expectedResult2, replace(s4, s5, s6)); + TestCase.assertEquals("adding comment to statement inside the if body", expectedResult2, replace(s4, s5, s6)); } public void testReplace() { @@ -152,7 +177,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String str4 = ""; options.setToReformatAccordingToStyle(true); - assertEquals("Basic replacement with formatter", expectedResult1, replace(str, str2, str3)); + TestCase.assertEquals("Basic replacement with formatter", expectedResult1, replace(str, str2, str3)); options.setToReformatAccordingToStyle(false); String expectedResult2 = """ @@ -165,7 +190,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { //options.setLooseMatching(true); // searching for several constructions"""; - assertEquals("Empty replacement", expectedResult2, replace(str, str2, str4)); + TestCase.assertEquals("Empty replacement", expectedResult2, replace(str, str2, str4)); String str5 = "testMatcher.findMatches('_In,'_Pattern, options).size()"; String str6 = "findMatchesCount($In$,$Pattern$)"; @@ -181,7 +206,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { //options.setLooseMatching(true); // searching for several constructions assertEquals("several constructions 3", findMatchesCount(s7,s8), 2);"""; - assertEquals("Expression replacement", expectedResult3, replace(expectedResult1, str5, str6)); + TestCase.assertEquals("Expression replacement", expectedResult3, replace(expectedResult1, str5, str6)); String str7 = "try { a.doSomething(); /*1*/b.doSomething(); } catch(IOException ex) { ex.printStackTrace(); throw new RuntimeException(ex); }"; @@ -189,7 +214,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String str9 = "$Statements$;"; String expectedResult4 = "a.doSomething(); /*1*/b.doSomething();"; - assertEquals("Multi line match in replacement", expectedResult4, replace(str7, str8, str9)); + TestCase.assertEquals("Multi line match in replacement", expectedResult4, replace(str7, str8, str9)); String str10 = """ parentNode.insert(compositeNode, i); @@ -206,36 +231,36 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String str12 = "addChild($parentNode$,$newNode$, $i$);"; String expectedResult5 = " addChild(parentNode,compositeNode, i);"; - assertEquals("Array initializer replacement", expectedResult5, replace(str10, str11, str12)); + TestCase.assertEquals("Array initializer replacement", expectedResult5, replace(str10, str11, str12)); String str13 = " aaa(5,6,3,4,1,2);"; String str14 = "aaa('_t{2,2},3,4,'_q{2,2});"; String str15 = "aaa($q$,3,4,$t$);"; String expectedResult6 = " aaa(1,2,3,4,5,6);"; - assertEquals("Parameter multiple match", expectedResult6, replace(str13, str14, str15)); + TestCase.assertEquals("Parameter multiple match", expectedResult6, replace(str13, str14, str15)); String str16 = " int c = a();"; String str17 = "'_t:a ('_q*,'_p*)"; String str18 = "$t$($q$,1,$p$)"; String expectedResult7 = " int c = a(1);"; - assertEquals("Replacement of init in definition + empty substitution", expectedResult7, - replace(str16, str17, str18)); + TestCase.assertEquals("Replacement of init in definition + empty substitution", expectedResult7, + replace(str16, str17, str18)); String str19 = " aaa(bbb);"; String str20 = "'_t('_);"; String str21 = "$t$(ccc);"; String expectedResult8 = " aaa(ccc);"; - assertEquals("One substitution replacement", expectedResult8, replace(str19, str20, str21)); + TestCase.assertEquals("One substitution replacement", expectedResult8, replace(str19, str20, str21)); String str22 = " instance.setAAA(anotherInstance.getBBB());"; String str23 = " '_i.'_m:set(.+) ('_a.'_m2:get(.+) ());"; String str24 = " $a$.set$m2_1$( $i$.get$m_1$() );"; String expectedResult9 = " anotherInstance.setBBB( instance.getAAA() );"; - assertEquals("Reg exp substitution replacement", expectedResult9, replace(str22, str23, str24)); + TestCase.assertEquals("Reg exp substitution replacement", expectedResult9, replace(str22, str23, str24)); String str25 = """ LaterInvocator.invokeLater(new Runnable() { @@ -264,7 +289,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { });\ """; - assertEquals("Anonymous in parameter", expectedResult10, replace(str25, str26, str27)); + TestCase.assertEquals("Anonymous in parameter", expectedResult10, replace(str25, str26, str27)); String str28 = """ UTElementNode elementNode = new UTElementNode(myProject, processedElement, psiFile, @@ -278,21 +303,21 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult11 = "UTElementNode elementNode = new UTElementNode(myProject, processedElement, psiFile, processedElement.getTextOffset(), true, true,\n" + " null);"; - assertEquals("Replace in def initializer", expectedResult11, replace(str28, str29, str30)); + TestCase.assertEquals("Replace in def initializer", expectedResult11, replace(str28, str29, str30)); String s31 = "a = b; b = c; a=a; c=c;"; String s32 = "'_a = '_a;"; String s33 = "1 = 1;"; String expectedResult12 = "a = b; b = c; 1 = 1; 1 = 1;"; - assertEquals("replace silly assignments", expectedResult12, replace(s31, s32, s33)); + TestCase.assertEquals("replace silly assignments", expectedResult12, replace(s31, s32, s33)); String s34 = "ParamChecker.isTrue(1==1, \"!!!\");"; String s35 = "ParamChecker.isTrue('_expr, '_msg);"; String s36 = "assert $expr$ : $msg$;"; String expectedResult13 = "assert 1==1 : \"!!!\";"; - assertEquals("replace with assert", expectedResult13, replace(s34, s35, s36)); + TestCase.assertEquals("replace with assert", expectedResult13, replace(s34, s35, s36)); String s37 = """ try {\s @@ -314,7 +339,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { // comment we want to leave \s ParamChecker.isTrue(2==2, "!!!");"""; - assertEquals("remove try with comments inside", expectedResult14, replace(s37, s38, s39)); + TestCase.assertEquals("remove try with comments inside", expectedResult14, replace(s37, s38, s39)); String s40 = "ParamChecker.instanceOf(queryKey, GroupBySqlTypePolicy.GroupKey.class);"; String s41 = "ParamChecker.instanceOf('_obj, '_class.class);"; @@ -323,7 +348,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { "assert queryKey instanceof GroupBySqlTypePolicy.GroupKey : \"queryKey is an instance of \" + queryKey.getClass() + " + "\"; expected \" + GroupBySqlTypePolicy.GroupKey.class;"; - assertEquals("Matching/replacing .class literals", expectedResult15, replace(s40, s41, s42)); + TestCase.assertEquals("Matching/replacing .class literals", expectedResult15, replace(s40, s41, s42)); String s43 = """ class Wpd { @@ -342,7 +367,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { XmlTag beanTag = jetbrains.fabrique.util.XmlApiUtil.findSubTag(rootTag, Wpd.TAG_BEAN_VALUE); }"""; - assertEquals("Matching/replacing static fields", expectedResult16, replace(s43, s44, s45, true)); + TestCase.assertEquals("Matching/replacing static fields", expectedResult16, replace(s43, s44, s45, true)); String s46 = """ Rectangle2D rec = new Rectangle2D.Double( @@ -358,7 +383,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { OtherClass.round(drec.getY(),5), OtherClass.round(drec.getWidth(),5), OtherClass.round(drec.getWidth(),5));"""; - assertEquals("Replace in constructor", expectedResult17, replace(s46, s47, s48)); + TestCase.assertEquals("Replace in constructor", expectedResult17, replace(s46, s47, s48)); String s49 = """ class A {} @@ -375,7 +400,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { A a = new B("a"); }"""; - assertEquals("Class navigation", expectedResult18, replace(s49, s50, s51, true)); + TestCase.assertEquals("Class navigation", expectedResult18, replace(s49, s50, s51, true)); String s52 = """ try { @@ -420,7 +445,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { options.getMatchOptions().setLooseMatching(false); try { - assertEquals("Try/finally unwrapped with strict matching", expectedResult19, replace(s52, s53, s54)); + TestCase.assertEquals("Try/finally unwrapped with strict matching", expectedResult19, replace(s52, s53, s54)); } finally { options.getMatchOptions().setLooseMatching(true); @@ -435,7 +460,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { aaa5(); } """; - assertEquals("Try/finally unwrapped with loose matching", expectedResult19Loose, replace(s52, s53, s54)); + TestCase.assertEquals("Try/finally unwrapped with loose matching", expectedResult19Loose, replace(s52, s53, s54)); String s55 = """ @@ -457,7 +482,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { System.out.println( str ); }"""; - assertEquals("for with foreach", expectedResult20, replace(s55, s56, s57)); + TestCase.assertEquals("for with foreach", expectedResult20, replace(s55, s56, s57)); String s58 = """ class A { @@ -472,7 +497,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { int c; }"""; - assertEquals("replace symbol in definition", expectedResult21, replace(s58, s59, s60)); + TestCase.assertEquals("replace symbol in definition", expectedResult21, replace(s58, s59, s60)); String s64 = "int x = 42;\n" + "int y = 42; // Stuff"; @@ -489,14 +514,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { */ int y = 42;"""; - assertEquals("Replacement of the comment with javadoc", expectedResult23, replace(s64, s65, s66)); + TestCase.assertEquals("Replacement of the comment with javadoc", expectedResult23, replace(s64, s65, s66)); String s61 = "try { 1=1; } catch(Exception e) { 1=1; } catch(Throwable t) { 2=2; }"; String s62 = "try { '_a; } catch(Exception e) { '_b; }"; String s63 = "try { $a$; } catch(Exception1 e) { $b$; } catch(Exception2 e) { $b$; }"; String expectedResult22 = "try { 1=1; } catch(Exception1 e) { 1=1; } catch(Exception2 e) { 1=1; } catch(Throwable t) { 2=2; }"; - assertEquals("try replacement by another try will leave the unmatched catch", expectedResult22, replace(s61, s62, s63)); + TestCase.assertEquals("try replacement by another try will leave the unmatched catch", expectedResult22, replace(s61, s62, s63)); } public void testReplaceExpr() { @@ -505,14 +530,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String s3 = "new AtomicReference($expr$)"; String expectedResult = "new AtomicReference(new SimpleDateFormat(\"yyyyMMddHHmmss\"))"; - assertEquals("Replacement of top-level expression only", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Replacement of top-level expression only", expectedResult, replace(s1, s2, s3)); String s4 = "get(\"smth\")"; String s5 = "'expr"; String s6 = "new Integer($expr$)"; String expectedResult1 = "new Integer(get(\"smth\"))"; - assertEquals("Replacement of top-level expression only", expectedResult1, replace(s4, s5, s6)); + TestCase.assertEquals("Replacement of top-level expression only", expectedResult1, replace(s4, s5, s6)); String in = """ class X { @@ -529,7 +554,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("No errors in pattern", expected, replace(in, what, by)); + TestCase.assertEquals("No errors in pattern", expected, replace(in, what, by)); } public void testReplaceRecordComponents() { @@ -539,7 +564,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String ex1 = """ record Bar(String field, int i) {} // comment """; - assertEquals(ex1, replace(in1, "record '_Record('_Type '_component* ) {}", "record $Record$($Type$ $component$) {} // comment")); + TestCase.assertEquals(ex1, replace(in1, "record '_Record('_Type '_component* ) {}", "record $Record$($Type$ $component$) {} // comment")); } public void testReplaceParameter() { @@ -554,21 +579,21 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void b(int c, int d2, /*1*/ int e) {} }"""; - assertEquals("replace method parameter", expected1a, replace(in1, "int d;", "int d2;")); + TestCase.assertEquals("replace method parameter", expected1a, replace(in1, "int d;", "int d2;")); String expected1b = """ class A { void b(int /*!*/ c, int /*!*/ d, /*1*/ int /*!*/ e) {} }"""; - assertEquals(expected1b, replace(in1, "void b('_T '_v*);", "void b($T$ /*!*/ $v$);")); + TestCase.assertEquals(expected1b, replace(in1, "void b('_T '_v*);", "void b($T$ /*!*/ $v$);")); String expected1c = """ class A { void /**/ b(int c, int d, /*1*/ int e) {} }"""; - assertEquals("replace multi match parameter", expected1c, replace(in1, "void b(int '_x*);", "void /**/ b(int $x$);")); + TestCase.assertEquals("replace multi match parameter", expected1c, replace(in1, "void b(int '_x*);", "void /**/ b(int $x$);")); String expected1d = """ class A { @@ -577,8 +602,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void c(int c, int d, /*1*/ int e) {} }"""; - assertEquals("replace multiple occurrences of the same variable", expected1d, replace(in1, "void b('_T '_p*);", "void b($T$ $p$);\n" + - "void c($T$ $p$) {}")); + TestCase.assertEquals("replace multiple occurrences of the same variable", expected1d, replace(in1, "void b('_T '_p*);", "void b($T$ $p$);\n" + + "void c($T$ $p$) {}")); String in2 = """ class X { @@ -588,7 +613,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { class X { void /**/ x() {} }"""; - assertEquals("replace no match parameter", expected2, replace(in2, "void x(int '_a*);", "void /**/ x() {}")); + TestCase.assertEquals("replace no match parameter", expected2, replace(in2, "void x(int '_a*);", "void /**/ x() {}")); String in3 = """ class X { @@ -598,7 +623,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { class X { void x(List /*>*/ s, List /*>*/ i) {} }"""; - assertEquals(expected3, replace(in3, "void x('_T '_v*);", "void x(List<$T$> /*>*/ $v$);")); + TestCase.assertEquals(expected3, replace(in3, "void x('_T '_v*);", "void x(List<$T$> /*>*/ $v$);")); String in4 = """ class X { @@ -607,7 +632,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expected4 = "class X {\n" + " void a(Map /*!*/ b, Map<, > /*!*/ c) {}\n" + // todo fix replacement of second parameter type "}"; - assertEquals(expected4, replace(in4, "void a('_T<'_K, '_V> '_p*);", "void a($T$<$K$, $V$> /*!*/ $p$);")); + TestCase.assertEquals(expected4, replace(in4, "void a('_T<'_K, '_V> '_p*);", "void a($T$<$K$, $V$> /*!*/ $p$);")); } public void testReplaceWithComments() { @@ -616,7 +641,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String s3 = "map.put(key, value); // line 1"; String expectedResult = "map.put(key, value); // line 1"; - assertEquals("replace self with comment after", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("replace self with comment after", expectedResult, replace(s1, s2, s3)); String s4 = "if (true) System.out.println(\"1111\"); else System.out.println(\"2222\");\n" + "while(true) System.out.println(\"1111\");"; @@ -624,7 +649,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String s6 = "/* System.out.println($Test$); */"; String expectedResult2 = "if (true) /* System.out.println(\"1111\"); */; else /* System.out.println(\"2222\"); */;\n" + "while(true) /* System.out.println(\"1111\"); */;"; - assertEquals("replace with comment", expectedResult2, replace(s4, s5, s6)); + TestCase.assertEquals("replace with comment", expectedResult2, replace(s4, s5, s6)); String source1 = """ public class AnotherTestClass extends TestClass { @@ -649,7 +674,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final ReplacementVariableDefinition variable = options.addNewVariableDefinition("NewMethod"); variable.setScriptCodeConstraint("Method.name.toLowerCase()"); - assertEquals(""" + TestCase.assertEquals(""" public class AnotherTestClass extends TestClass { /* Test comment */ public void testmethod() { @@ -703,7 +728,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { System.out.println(1); }"""; options.setToReformatAccordingToStyle(true); - assertEquals("three statements replacement", expectedResult1, replace(s1, s2, s3)); + TestCase.assertEquals("three statements replacement", expectedResult1, replace(s1, s2, s3)); options.setToReformatAccordingToStyle(false); String s4 = """ @@ -726,7 +751,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String s6 = "$statement$;"; String expectedResult2 = "read(id, READ_PARENT);\n" + " return myViewport.parent;"; - assertEquals("extra ;", expectedResult2, replace(s4, s5, s6)); + TestCase.assertEquals("extra ;", expectedResult2, replace(s4, s5, s6)); String s7 = """ public class A { @@ -790,7 +815,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; boolean formatAccordingToStyle = options.isToReformatAccordingToStyle(); options.setToReformatAccordingToStyle(true); - assertEquals("extra ; 2", expectedResult3, replace(s7, s8, s9)); + TestCase.assertEquals("extra ; 2", expectedResult3, replace(s7, s8, s9)); String s10 = """ public class A { @@ -894,7 +919,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { abstract void f(); }"""; - assertEquals("same multiple occurrences 2 times", expectedResult4, replace(s10, s11, s12)); + TestCase.assertEquals("same multiple occurrences 2 times", expectedResult4, replace(s10, s11, s12)); options.setToReformatAccordingToStyle(formatAccordingToStyle); @@ -946,7 +971,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { return value; }"""; options.setToReformatAccordingToStyle(true); - assertEquals("extra ; over return", expectedResult5, replace(s13, s14, s15)); + TestCase.assertEquals("extra ; over return", expectedResult5, replace(s13, s14, s15)); options.setToReformatAccordingToStyle(false); @@ -957,7 +982,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; options.setToReformatAccordingToStyle(true); - assertEquals("extra ; over if", expectedResult6, replace(s13_2, s14, s15)); + TestCase.assertEquals("extra ; over if", expectedResult6, replace(s13_2, s14, s15)); options.setToReformatAccordingToStyle(false); @@ -972,7 +997,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; options.setToReformatAccordingToStyle(true); - assertEquals("newlines in matches of several lines", expectedResult7, replace(s13_3, s14, s15)); + TestCase.assertEquals("newlines in matches of several lines", expectedResult7, replace(s13_3, s14, s15)); options.setToReformatAccordingToStyle(false); String s16 = """ @@ -1019,9 +1044,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("extra ;", expectedResult8, replace(s16, s17, s18)); + TestCase.assertEquals("extra ;", expectedResult8, replace(s16, s17, s18)); - assertEquals("missed ;", expectedResult8_2, replace(s16_2, s17, s18)); + TestCase.assertEquals("missed ;", expectedResult8_2, replace(s16_2, s17, s18)); } public void testSpecialClassReplacement() { @@ -1052,7 +1077,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { /** @author me */ record R(int i, int j) {} """; - assertEquals("Special class replacement", expected, replace(in, what, by, true)); + TestCase.assertEquals("Special class replacement", expected, replace(in, what, by, true)); String in2 = """ new ArrayList(null) { @@ -1078,8 +1103,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { return super.hashCode(); } }"""; - assertEquals("Special anonymous class replacement", expected2, replace(in2, what, by2, false)); - assertTrue(true); + TestCase.assertEquals("Special anonymous class replacement", expected2, replace(in2, what, by2, false)); + TestCase.assertTrue(true); } public void testClassReplacement() { @@ -1095,7 +1120,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { public void b() { } }"""; - assertEquals("Basic class replacement", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Basic class replacement", expectedResult, replace(s1, s2, s3, true)); String s4 = "class A { class C {} public void b() {} int f; }"; String s5 = "class 'a { '_Other* }"; @@ -1113,7 +1138,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { int f; }"""; - assertEquals("Order of members in class replacement", expectedResult2, replace(s4, s5, s6, true)); + TestCase.assertEquals("Order of members in class replacement", expectedResult2, replace(s4, s5, s6, true)); String s7 = "class A extends B { int c; void b() {} { a = 1; } }"; String s8 = "class 'A extends B { '_Other* }"; @@ -1130,7 +1155,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("Unsupported pattern exception", expectedResult3, replace(s7, s8, s9, true)); + TestCase.assertEquals("Unsupported pattern exception", expectedResult3, replace(s7, s8, s9, true)); String s10 = """ /** @example */ @@ -1159,7 +1184,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; options.setToReformatAccordingToStyle(true); - assertEquals("Make class public", expectedResult4, replace(s10, s11, s12, true)); + TestCase.assertEquals("Make class public", expectedResult4, replace(s10, s11, s12, true)); options.setToReformatAccordingToStyle(false); String s13 = """ @@ -1206,7 +1231,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; options.setToReformatAccordingToStyle(true); - assertEquals("Constructor replacement", expectedResult5, replace(s13, s14, s15, true)); + TestCase.assertEquals("Constructor replacement", expectedResult5, replace(s13, s14, s15, true)); options.setToReformatAccordingToStyle(false); String s16 = "public class A {}\n" + @@ -1218,25 +1243,25 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult6 = "public class A { private Log log = LogFactory.createLog(); }\n" + "final class B { private Log log = LogFactory.createLog(); }"; - assertEquals("Modifier list for class", expectedResult6, replace(s16, s17, s18)); + TestCase.assertEquals("Modifier list for class", expectedResult6, replace(s16, s17, s18)); String expectedResult7 = "public class A { }\n" + "final class B { }"; - assertEquals("Removing field", expectedResult7, replace(expectedResult6, s17_2, s18_2)); + TestCase.assertEquals("Removing field", expectedResult7, replace(expectedResult6, s17_2, s18_2)); String s19 = "public class A extends Object implements Cloneable {}\n"; String s20 = "class 'A { '_Other* }"; String s21 = "class $A$ { private Log log = LogFactory.createLog(); $Other$ }"; String expectedResult8 = "public class A extends Object implements Cloneable { private Log log = LogFactory.createLog(); }\n"; - assertEquals("Extends / implements list for class", expectedResult8, replace(s19, s20, s21, true)); + TestCase.assertEquals("Extends / implements list for class", expectedResult8, replace(s19, s20, s21, true)); String s22 = "public class A { int Afield; }\n"; String s23 = "class 'A { '_Other* }"; String s24 = "class $A$ { private Log log = LogFactory.createLog(); $Other$ }"; String expectedResult9 = "public class A { private Log log = LogFactory.createLog(); int Afield; }\n"; - assertEquals("Type parameters for the class", expectedResult9, replace(s22, s23, s24)); + TestCase.assertEquals("Type parameters for the class", expectedResult9, replace(s22, s23, s24)); String s25 = """ class A { @@ -1251,7 +1276,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { protected Object a; // comment after }"""; - assertEquals("Replacing dcl with saving access modifiers", expectedResult10, replace(s25, s26, s27)); + TestCase.assertEquals("Replacing dcl with saving access modifiers", expectedResult10, replace(s25, s26, s27)); String s28 = "aaa"; String s29 = """ @@ -1268,7 +1293,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; String expectedResult11 = "aaa"; - assertEquals("Complex class replacement", expectedResult11, replace(s28, s29, s30)); + TestCase.assertEquals("Complex class replacement", expectedResult11, replace(s28, s29, s30)); String s31 = """ class A { @@ -1294,7 +1319,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { int c; }"""; options.setToReformatAccordingToStyle(true); - assertEquals("Replacing comments with javadoc for fields", expectedResult12, replace(s31, s32, s33, true)); + TestCase.assertEquals("Replacing comments with javadoc for fields", expectedResult12, replace(s31, s32, s33, true)); options.setToReformatAccordingToStyle(false); String s34 = """ @@ -1327,7 +1352,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { \s }"""; - assertEquals("Replacing interface with interface, saving comments properly", expectedResult13, replace(s34, s35, s36, true)); + TestCase.assertEquals("Replacing interface with interface, saving comments properly", expectedResult13, replace(s34, s35, s36, true)); } @SuppressWarnings("unused") @@ -1342,7 +1367,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult14_2 = "class A { int a = 1; void B( ) { System.out.println(\"B\"); } int C(char ch) { System.out.println(\"C\"); int z = 1; } int b = 2;}"; - assertEquals("Multiple methods replacement", expectedResult14, replace(s37, s38, s39, true) + TestCase.assertEquals("Multiple methods replacement", expectedResult14, replace(s37, s38, s39, true) ); } @@ -1364,7 +1389,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { private int c = 2; }"""; - assertEquals("Multiple fields replacement", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Multiple fields replacement", expectedResult, replace(s1, s2, s3, true)); } public void testClassReplacement5() { @@ -1401,7 +1426,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void f(){} }"""; - assertEquals("Not preserving comment if it is present", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Not preserving comment if it is present", expectedResult, replace(s1, s2, s3, true)); } public void testClassReplacement6() { @@ -1439,7 +1464,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("Correct class replacement", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Correct class replacement", expectedResult, replace(s1, s2, s3)); String s1_2 = """ public class X { @@ -1461,7 +1486,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("Correct class replacement, 2", expectedResult2, replace(s1_2, s2, s3)); + TestCase.assertEquals("Correct class replacement, 2", expectedResult2, replace(s1_2, s2, s3)); } public void testClassReplacement7() { @@ -1510,7 +1535,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("Class with comment replacement", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Class with comment replacement", expectedResult, replace(s1, s2, s3, true)); } public void testClassReplacement8() { @@ -1525,7 +1550,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { /** AAA*/ long c = 2; // comment }"""; - assertEquals("Class field replacement with simple pattern", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Class field replacement with simple pattern", expectedResult, replace(s1, s2, s3, true)); } @NotNull @@ -1552,7 +1577,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult = loadFile("after1.java"); options.setToReformatAccordingToStyle(true); - assertEquals("Class replacement 9", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Class replacement 9", expectedResult, replace(s1, s2, s3, true)); } public void testReplaceReturnWithArrayInitializer() { @@ -1561,7 +1586,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String replaceBy = "return $A$;"; String expectedResult = "return new String[]{CoreVars.CMUAudioPort + \"\"};"; - assertEquals("ReplaceReturnWithArrayInitializer", expectedResult, replace(searchIn, searchFor, replaceBy)); + TestCase.assertEquals("ReplaceReturnWithArrayInitializer", expectedResult, replace(searchIn, searchFor, replaceBy)); } @SuppressWarnings("unused") @@ -1583,7 +1608,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String expectedResult = loadFile("after2.java"); options.setToReformatAccordingToStyle(true); - assertEquals("Class replacement 10", expectedResult, replace(s1, s2, s3, true)); + TestCase.assertEquals("Class replacement 10", expectedResult, replace(s1, s2, s3, true)); } public void testCatchReplacement() { @@ -1602,7 +1627,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { if (false) LOG.assertTrue(false); }"""; options.setToReformatAccordingToStyle(true); - assertEquals("Catch replacement by block", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Catch replacement by block", expectedResult, replace(s1, s2, s3)); options.setToReformatAccordingToStyle(false); } @@ -1625,7 +1650,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void m(){} }"""; - assertEquals( + TestCase.assertEquals( "Preserving var modifiers and generic information in type during replacement", expectedResult16, replace(s43, s44, s45, true) @@ -1647,8 +1672,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { public class A { private class B {} }"""; - assertEquals("No illegal modifier combinations during replacement", expected1, - replace(in1, what1, by1)); + TestCase.assertEquals("No illegal modifier combinations during replacement", expected1, + replace(in1, what1, by1)); } public void testDontRequireSpecialVarsForUnmatchedContent() { @@ -1668,7 +1693,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void m(){} }"""; - assertEquals( + TestCase.assertEquals( "Preserving class modifiers and generic information in type during replacement", expectedResult16, replace(s43, s44, s45, true) @@ -1690,8 +1715,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { class $A$ { \tprivate void $m$() {} }"""; - assertEquals("Should keep member order when replacing", - """ + TestCase.assertEquals("Should keep member order when replacing", + """ public class A { int i ,j , k; void m1() {} @@ -1699,7 +1724,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { private void m2() {} void m3() {} }""", - replace(in, what, by)); + replace(in, what, by)); } public void testClassReplacement2() { @@ -1743,15 +1768,15 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { \s }"""; - assertEquals("Preserving var modifiers and generic information in type during replacement", - expectedResult15, replace(s40, s41, s42, true)); + TestCase.assertEquals("Preserving var modifiers and generic information in type during replacement", + expectedResult15, replace(s40, s41, s42, true)); String s46 = "class Foo { int xxx; void foo() { assert false; } void yyy() {}}"; String s47 = "class '_Class { void '_foo:[regex( foo )](); }"; String s48 = "class $Class$ { void $foo$(int a); }"; String expectedResult17 = "class Foo { int xxx; void foo(int a) { assert false; } void yyy() {}}"; - assertEquals( + TestCase.assertEquals( "Preserving method bodies", expectedResult17, replace(s46, s47, s48, true) @@ -1765,7 +1790,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { try { replace(s1, s2, s3); - fail("Undefined replace variable is not checked"); + TestCase.fail("Undefined replace variable is not checked"); } catch (MalformedPatternException ignored) { } @@ -1776,14 +1801,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { try { replace(s4, s6, s5); - fail("Undefined no ; in search"); + TestCase.fail("Undefined no ; in search"); } catch (UnsupportedPatternException ignored) { } try { replace(s4, "'_Instance.'MethodCall('_Parameter*);", "$Instance$.$MethodCall$($Parameter$);"); - fail("Method call expression target can't be replaced with statement"); + TestCase.fail("Method call expression target can't be replaced with statement"); } catch (UnsupportedPatternException ignored) { } @@ -1809,7 +1834,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { options.setToReformatAccordingToStyle(true); options.setToShortenFQN(true); - assertEquals("Replace in anonymous class parameter", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Replace in anonymous class parameter", expectedResult, replace(s1, s2, s3)); options.setToShortenFQN(false); options.setToReformatAccordingToStyle(false); } @@ -1853,7 +1878,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; options.setToReformatAccordingToStyle(true); - assertEquals("Removing comments", expectedResult, replace(s1, s2, s3)); + TestCase.assertEquals("Removing comments", expectedResult, replace(s1, s2, s3)); options.setToReformatAccordingToStyle(false); @@ -1873,7 +1898,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals("Removing comments", expectedResult2, replace(s1, s2_2, s3)); + TestCase.assertEquals("Removing comments", expectedResult2, replace(s1, s2_2, s3)); } public void testTryCatchInLoop() { @@ -1908,7 +1933,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { catch(final Throwable e) { continue; } }"""; - assertEquals("Replacing try/catch in loop", expectedResult, replace(code, toFind, replacement)); + TestCase.assertEquals("Replacing try/catch in loop", expectedResult, replace(code, toFind, replacement)); } public void testUseStaticImport() { @@ -1920,21 +1945,21 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { import static java.lang.Math.abs; class X {{ abs(-1); }}"""; - assertEquals("Replacing with static import", expected, replace(in, what, by, true, true)); + TestCase.assertEquals("Replacing with static import", expected, replace(in, what, by, true, true)); final String in2 = "class X { void m(java.util.Random r) { Math.abs(r.nextInt()); }}"; final String expected2 = """ import static java.lang.Math.abs; class X { void m(java.util.Random r) { abs(r.nextInt()); }}"""; - assertEquals("don't add broken static imports", expected2, replace(in2, what, by, true, true)); + TestCase.assertEquals("don't add broken static imports", expected2, replace(in2, what, by, true, true)); final String by2 = "new java.util.Map.Entry() {}"; final String expected3 = """ import static java.util.Map.Entry; class X {{ new Entry() {}; }}"""; - assertEquals("", expected3, replace(in, what, by2, true, true)); + TestCase.assertEquals("", expected3, replace(in, what, by2, true, true)); final String in3 = """ import java.util.Collections; @@ -1955,8 +1980,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { out.println(Collections.emptyList()); } }"""; - assertEquals("don't break references with type parameters", expected4, - replace(in3, what3, by3, true, true)); + TestCase.assertEquals("don't break references with type parameters", expected4, + replace(in3, what3, by3, true, true)); final String in4 = """ import java.util.Collections; @@ -1979,8 +2004,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { boolean b = Collections.eq(null, null); } }"""; - assertEquals("don't add static import to inaccessible members", expected5, - replace(in4, what4, by4, true, true)); + TestCase.assertEquals("don't add static import to inaccessible members", expected5, + replace(in4, what4, by4, true, true)); final String in5 = """ package cz.ahoj.sample.annotations; @@ -2007,9 +2032,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String what5 = "@'_a:[regex( InnerAnnotation )](classes = { String.class })"; final String by5 = "@$a$(classes = { Integer.class })\n" + "@$a$(classes = { String.class })"; - assertEquals("add import when reference is just outside the class", + TestCase.assertEquals("add import when reference is just outside the class", - """ + """ package cz.ahoj.sample.annotations; import static cz.ahoj.sample.annotations.ReplacementTest.ReplacementTestConfig; @@ -2035,7 +2060,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { InnerAnnotation[] value(); }""", - replace(in5, what5, by5, true, true)); + replace(in5, what5, by5, true, true)); final String in6 = """ class X {{ @@ -2046,14 +2071,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what6 = "Integer::valueOf"; final String by6 = "Boolean::valueOf"; - assertEquals(""" + TestCase.assertEquals(""" class X {{ Predicate p = Boolean::valueOf; }} interface Predicate { boolean test(T t); }""", - replace(in6, what6, by6, true)); + replace(in6, what6, by6, true)); } public void testUseStaticStarImport() { @@ -2078,7 +2103,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { sin(0.5); max(1, 2); }}"""; - assertEquals("Replacing with static star import", expected, replace(in, what, by, true, true)); + TestCase.assertEquals("Replacing with static star import", expected, replace(in, what, by, true, true)); } finally { options.setToUseStaticImport(save); @@ -2093,16 +2118,16 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String replacement = loadFile("ReformatAndShortenClassRefPerformance_replacement.java"); Benchmark.newBenchmark("SSR Reformat", - () -> assertEquals("Reformat Performance", loadFile("ReformatPerformance_result.java"), - replace(source, pattern, replacement, true, true))) + () -> TestCase.assertEquals("Reformat Performance", loadFile("ReformatPerformance_result.java"), + replace(source, pattern, replacement, true, true))) .startAsSubtest(); options.setToReformatAccordingToStyle(false); options.setToShortenFQN(true); Benchmark.newBenchmark("SSR Shorten Class Reference", - () -> assertEquals("Shorten Class Ref Performance", loadFile("ShortenPerformance_result.java"), - replace(source, pattern, replacement, true, true))) + () -> TestCase.assertEquals("Shorten Class Ref Performance", loadFile("ShortenPerformance_result.java"), + replace(source, pattern, replacement, true, true))) .startAsSubtest(); } @@ -2123,10 +2148,10 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { java.util.List a = java.util.List.valueOf(' '); String2 a2 = String2.valueOf(' '); } }"""; - assertEquals(expected, replace(s1, s2, replacement)); - assertEquals(expected, replace(s1, s2_2, replacement)); - assertEquals(expected, replace(s1, s2_3, replacement)); - assertEquals(expected, replace(s1, s2_4, replacement)); + TestCase.assertEquals(expected, replace(s1, s2, replacement)); + TestCase.assertEquals(expected, replace(s1, s2_2, replacement)); + TestCase.assertEquals(expected, replace(s1, s2_3, replacement)); + TestCase.assertEquals(expected, replace(s1, s2_4, replacement)); } public void testLeastSurprise2() { @@ -2135,7 +2160,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String replacement = "a2"; String expected = "class B { int s(int a2) { a2 = 1; a2 = 2; c(a2); } }"; - assertEquals(expected, replace(s1, s2, replacement)); + TestCase.assertEquals(expected, replace(s1, s2, replacement)); } public void testReplaceTry() { @@ -2150,7 +2175,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { "try { $TryStatement$; } catch($ExceptionType$ $ExceptionDcl$) { _logger.warning(\"$CommentContent$\", $ExceptionDcl$); }"; String expected = "try { em.persist(p); } catch(PersistenceException e) { _logger.warning(\"good\", e); }"; - assertEquals(expected, replace(s1, s2, replacement)); + TestCase.assertEquals(expected, replace(s1, s2, replacement)); final String in1 = """ try { @@ -2186,8 +2211,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { System.out.println(3); } """; - assertEquals("Replacing try/finally should leave unmatched catch sections alone", - expected1, replace(in1, what1, by1)); + TestCase.assertEquals("Replacing try/finally should leave unmatched catch sections alone", + expected1, replace(in1, what1, by1)); final String in2 = """ try (AutoCloseable a = null) { @@ -2215,9 +2240,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } finally { System.out.println(3); }"""; - assertEquals("Replacing try/finally should also keep unmatched resource lists and finally blocks", - expected2, - replace(in2, what2, by2)); + TestCase.assertEquals("Replacing try/finally should also keep unmatched resource lists and finally blocks", + expected2, + replace(in2, what2, by2)); final String in3 = """ class Foo { @@ -2239,8 +2264,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } catch(Exception ignored) { //2 }"""; - assertEquals("don't break the order of catch blocks", - """ + TestCase.assertEquals("don't break the order of catch blocks", + """ class Foo { { try { @@ -2252,7 +2277,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } }""", - replace(in3, what3, by3)); + replace(in3, what3, by3)); } public void testReplaceExtraSemicolon() { @@ -2275,7 +2300,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { System.out.println("blah"); """; - assertEquals(expected, replace(in, what, replacement)); + TestCase.assertEquals(expected, replace(in, what, replacement)); String in2 = """ try { @@ -2289,7 +2314,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { while(true) return ; System.out.println("blah2");"""; - assertEquals(expected_2, replace(in2, what, replacement)); + TestCase.assertEquals(expected_2, replace(in2, what, replacement)); String in3 = """ { @@ -2306,7 +2331,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { System.out.println("blah2"); }"""; - assertEquals(expected_3, replace(in3, what, replacement)); + TestCase.assertEquals(expected_3, replace(in3, what, replacement)); String in4 = """ { @@ -2323,7 +2348,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { // indented comment System.out.println("blah2"); }"""; - assertEquals(expected_4, replace(in4, what, replacement)); + TestCase.assertEquals(expected_4, replace(in4, what, replacement)); String in5 = """ class X { @@ -2352,7 +2377,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { {} } }"""; - assertEquals(expected5, replace(in5, what5, replacement5)); + TestCase.assertEquals(expected5, replace(in5, what5, replacement5)); } public void testReplaceFinalModifier() { @@ -2372,7 +2397,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } }"""; - assertEquals(expected, replace(s1, s2, s3)); + TestCase.assertEquals(expected, replace(s1, s2, s3)); } public void testKeepUnmatchedModifiers() { @@ -2385,7 +2410,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { protected static final int foo = 1; }"""; - assertEquals(expected, replace(in, "private '_Type '_field = '_init;", "protected $Type$ $field$ = $init$;")); + TestCase.assertEquals(expected, replace(in, "private '_Type '_field = '_init;", "protected $Type$ $field$ = $init$;")); } public void testRemovingRedundancy() { @@ -2406,7 +2431,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { int b = a; b2 = 3;"""; - assertEquals(expected, replace(s1, s2, s3)); + TestCase.assertEquals(expected, replace(s1, s2, s3)); String s2_2 = """ int '_a = '_i; @@ -2419,7 +2444,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { int b = 1; b2 = 3;"""; - assertEquals(expected_2, replace(s1, s2_2, s3_2)); + TestCase.assertEquals(expected_2, replace(s1, s2_2, s3_2)); } public void testReplaceWithEmptyString() { @@ -2428,7 +2453,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String replace = ""; String expectedResult = "public class Peepers { \n}"; - assertEquals(expectedResult, replace(source, search, replace, true)); + TestCase.assertEquals(expectedResult, replace(source, search, replace, true)); } public void testReplaceMultipleFieldsInSingleDeclaration() { @@ -2437,7 +2462,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String replace = "class $Name$ {\n $ClassContent$\n}"; String expectedResult = "abstract class MyClass {\n private String a, b;\n}"; - assertEquals(expectedResult, replace(source, search, replace, true)); + TestCase.assertEquals(expectedResult, replace(source, search, replace, true)); } public void testReplaceInImplementsList() { @@ -2454,7 +2479,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { \s }"""; - assertEquals(expectedResult, replace(source, search, replace, true)); + TestCase.assertEquals(expectedResult, replace(source, search, replace, true)); } public void testReplaceFieldWithEndOfLineComment() { @@ -2480,7 +2505,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { void bar() {} }"""; - assertEquals(expectedResult, replace(source, search, replace, true)); + TestCase.assertEquals(expectedResult, replace(source, search, replace, true)); } public void testReplaceAnnotation() { @@ -2489,22 +2514,22 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String what = "@SuppressWarnings(\"ALL\")"; final String expected1a = "public class A {}"; - assertEquals(expected1a, replace(in1, what, "")); + TestCase.assertEquals(expected1a, replace(in1, what, "")); final String expected1b = "@SuppressWarnings(\"NONE\") @Deprecated\n" + "public class A {}"; - assertEquals(expected1b, replace(in1, what, "@SuppressWarnings(\"NONE\") @Deprecated")); + TestCase.assertEquals(expected1b, replace(in1, what, "@SuppressWarnings(\"NONE\") @Deprecated")); final String expected1c = """ @SuppressWarnings("ALL") public class B {}"""; - assertEquals("Should replace unmatched annotation parameters", - expected1c, replace(in1, "@SuppressWarnings class A {}", "@SuppressWarnings class B {}")); + TestCase.assertEquals("Should replace unmatched annotation parameters", + expected1c, replace(in1, "@SuppressWarnings class A {}", "@SuppressWarnings class B {}")); final String expected1d = "@ SuppressWarnings(\"ALL\")\n" + "public class A {}"; - assertEquals("Should replace unmatched annotation parameters when matching just annotation", - expected1d, replace(in1, "@SuppressWarnings", "@ SuppressWarnings")); + TestCase.assertEquals("Should replace unmatched annotation parameters when matching just annotation", + expected1d, replace(in1, "@SuppressWarnings", "@ SuppressWarnings")); String what1 = "@SuppressWarnings(\"'value\")"; String by = "$lower_case$"; @@ -2512,7 +2537,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { variable.setScriptCodeConstraint("value.getText().toLowerCase()"); final String expected1e = "@SuppressWarnings(\"all\")\n" + "public class A {}"; - assertEquals(expected1e, replace(in1, what1, by)); + TestCase.assertEquals(expected1e, replace(in1, what1, by)); final String in2 = """ @@ -2523,32 +2548,32 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { class X { @SuppressWarnings({"unused", "other"}) String s; }"""; - assertEquals(expected2a, replace(in2, "@SuppressWarnings(\"unused\") String '_s;", - "@SuppressWarnings({\"unused\", \"other\"}) String $s$;")); + TestCase.assertEquals(expected2a, replace(in2, "@SuppressWarnings(\"unused\") String '_s;", + "@SuppressWarnings({\"unused\", \"other\"}) String $s$;")); final String expected2b = """ class X { @SuppressWarnings("unused") String s = "undoubtedly"; }"""; - assertEquals(expected2b, replace(in2, "@'_Anno('_v) String '_s;", "@$Anno$($v$) String $s$ = \"undoubtedly\";")); + TestCase.assertEquals(expected2b, replace(in2, "@'_Anno('_v) String '_s;", "@$Anno$($v$) String $s$ = \"undoubtedly\";")); final String expected2c = """ class X { @SuppressWarnings(value="unused") String s; }"""; - assertEquals(expected2c, replace(in2, "@'_A('_v='_x)", "@$A$($v$=$x$)")); + TestCase.assertEquals(expected2c, replace(in2, "@'_A('_v='_x)", "@$A$($v$=$x$)")); final String expected2d = """ class X { @SuppressWarnings({"unused", "raw"}) String s; }"""; - assertEquals(expected2d, replace(in2, "@'_A('_x)", "@$A$({$x$, \"raw\"})")); + TestCase.assertEquals(expected2d, replace(in2, "@'_A('_x)", "@$A$({$x$, \"raw\"})")); final String expected2e = """ class X { @SuppressWarnings(value={1,2}, value="unused") String s; }"""; - assertEquals(expected2e, replace(in2, "@'_A('_n='_v)", "@$A$($n$={1,2}, $n$=$v$)")); + TestCase.assertEquals(expected2e, replace(in2, "@'_A('_n='_v)", "@$A$($n$={1,2}, $n$=$v$)")); final String in3 = """ @@ -2561,7 +2586,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { @ A(value="RegExp", prefix="xxx", suffix="") String pattern; }"""; - assertEquals(expected3, replace(in3, "@'_A('_v*='_x)", "@ A($v$=$x$, suffix=\"\")")); + TestCase.assertEquals(expected3, replace(in3, "@'_A('_v*='_x)", "@ A($v$=$x$, suffix=\"\")")); final String in4 = """ class X { @@ -2571,13 +2596,13 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { class X { @Anno(one=1, two=1, three=1) String s; }"""; - assertEquals(expected4, replace(in4, "@'_A('_p*=1)", "@$A$($p$=1, three=1)")); + TestCase.assertEquals(expected4, replace(in4, "@'_A('_p*=1)", "@$A$($p$=1, three=1)")); final String expected4b = """ class X { @Anno(one=2, two=1) String s; }"""; - assertEquals(expected4b, replace(in4, "@'_A('_p:one =1)", "@$A$($p$=2)")); + TestCase.assertEquals(expected4b, replace(in4, "@'_A('_p:one =1)", "@$A$($p$=2)")); final String in5 = """ @RunWith(SpringJUnit4ClassRunner.class) @@ -2597,7 +2622,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }) @Transactional public class SomeTest {}"""; - assertEquals(expected5, replace(in5, "@ContextConfiguration(classes = {'_X*})", """ + TestCase.assertEquals(expected5, replace(in5, "@ContextConfiguration(classes = {'_X*})", """ @ContextHierarchy(classes = { @ContextConfiguration(classes = {$X$, Object.class}) })""")); @@ -2616,8 +2641,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { return null; } }"""; - assertEquals(expected6, replace(in6, "'_ReturnType '_method('_ParameterType '_parameter*);", - "private $ReturnType$ $method$($ParameterType$ $parameter$);")); + TestCase.assertEquals(expected6, replace(in6, "'_ReturnType '_method('_ParameterType '_parameter*);", + "private $ReturnType$ $method$($ParameterType$ $parameter$);")); final String in7 = """ public class IssueLink { @@ -2630,8 +2655,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { @XmlAttribute(name="default", namespace = "space") public String typeInward; }"""; - assertEquals(expected7, replace(in7, "@XmlAttribute(name=\"default\") @Deprecated '_Type '_field;", - "@XmlAttribute(name=\"default\") $Type$ $field$;")); + TestCase.assertEquals(expected7, replace(in7, "@XmlAttribute(name=\"default\") @Deprecated '_Type '_field;", + "@XmlAttribute(name=\"default\") $Type$ $field$;")); final String expected7b = """ class IssueLink { @@ -2639,7 +2664,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { @Deprecated public String typeInward; }"""; - assertEquals(expected7b, replace(in7, "@'_Anno* public class '_X {}", "@$Anno$ class $X$ {}")); + TestCase.assertEquals(expected7b, replace(in7, "@'_Anno* public class '_X {}", "@$Anno$ class $X$ {}")); } public void testReplacePolyadicExpression() { @@ -2650,38 +2675,38 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String what1 = "1 + '_a+"; final String by1 = "4"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 4; }""", replace(in1, what1, by1)); final String by2 = "$a$"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 2 + 3; }""", replace(in1, what1, by2)); final String by3 = "$a$+4"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 2 + 3+4; }""", replace(in1, what1, by3)); final String what2 = "1 + 2 + 3 + '_a*"; final String by4 = "1 + 3 + $a$"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 1 + 3; }""", replace(in1, what2, by4)); final String by5 = "$a$ + 1 + 3"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 1 + 3; }""", replace(in1, what2, by5)); final String by6 = "1 + $a$ + 3"; - assertEquals(""" + TestCase.assertEquals(""" class A { int i = 1 + 3; }""", replace(in1, what2, by6)); @@ -2692,13 +2717,13 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what3 = "true && true && '_a*"; final String by7 = "true && true && $a$"; - assertEquals(""" + TestCase.assertEquals(""" class A { boolean b = true && true; }""", replace(in2, what3, by7)); final String by8 = "$a$ && true && true"; - assertEquals(""" + TestCase.assertEquals(""" class A { boolean b = true && true; }""", replace(in2, what3, by8)); @@ -2714,7 +2739,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String what = "assert '_a > '_b : '_c?;"; final String by = "assert $b$ < $a$ : $c$;"; - assertEquals(""" + TestCase.assertEquals(""" class A { void m(int i) { assert i < 10; @@ -2735,7 +2760,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { """; final String what1 = "int '_i+;"; final String by1 = "float $i$;"; - assertEquals(""" + TestCase.assertEquals(""" class A { private float i, /*1*/j, k; void m() { @@ -2745,11 +2770,11 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in, what1, by1)); + replace(in, what1, by1)); final String what2 = "int '_a, '_b, '_c = '_d?;"; final String by2 = "float $a$, $b$, $c$ = $d$;"; - assertEquals(""" + TestCase.assertEquals(""" class A { private float i, j, k; void m() { @@ -2757,7 +2782,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in, what2, by2)); + replace(in, what2, by2)); } public void testReplaceWithScriptedVariable() { @@ -2782,7 +2807,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { method((String)a); } }"""; - assertEquals(expected, replace(in, what, by)); + TestCase.assertEquals(expected, replace(in, what, by)); options.clearVariableDefinitions(); final String in2 = """ @@ -2810,7 +2835,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final ReplacementVariableDefinition variable2 = options.addNewVariableDefinition("field"); variable2.setScriptCodeConstraint("String name = property.methodExpression.referenceName[3..-1]\n" + "name[0].toLowerCase() + name[1..-1]"); - assertEquals(""" + TestCase.assertEquals(""" class Limitless { public int id; public String field; @@ -2843,7 +2868,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { """; final String what = "class '_A { void '_b:[regex( test.* )](); }"; final String by = "class $A$ {\n @java.lang.Override void $b$();\n}"; - assertEquals(""" + TestCase.assertEquals(""" class A extends TestCase { @Override void testOne() { System.out.println(); @@ -2853,14 +2878,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { final String what2 = "void '_a:[regex( test.* )]();"; final String by2 = "@org.junit.Test void $a$();"; - assertEquals(""" + TestCase.assertEquals(""" class A extends TestCase { @org.junit.Test void testOne() { System.out.println(); } } """, - replace(in, what2, by2)); + replace(in, what2, by2)); } public void testReplaceMethodWithoutBody() { @@ -2870,19 +2895,19 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what = "void '_a();"; final String by = "void $a$(int i);"; - assertEquals(""" + TestCase.assertEquals(""" abstract class A { abstract void a(int i); }""", - replace(in, what, by)); + replace(in, what, by)); final String what2 = "abstract void '_a('_T '_p*);"; final String by2 = "void $a$($T$ $p$) {}"; - assertEquals(""" + TestCase.assertEquals(""" abstract class A { void a() {} }""", - replace(in, what2, by2)); + replace(in, what2, by2)); } public void testReplaceParameterWithComment() { @@ -2892,11 +2917,11 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what = "int '_a = '_b{0,1};"; final String by = "final long /*!*/ $a$ = $b$;"; - assertEquals(""" + TestCase.assertEquals(""" class A { void a(final long /*!*/ b) {} }""", - replace(in, what, by)); + replace(in, what, by)); final String in2 = """ class X { @@ -2906,14 +2931,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what2 = "'_T '_v = '_i{0,1};"; final String by2 = "final $T$ /*!*/ $v$ = $i$;"; - assertEquals("foreach parameter replaced incorrectly", - """ + TestCase.assertEquals("foreach parameter replaced incorrectly", + """ class X { void m() { for (final int /*!*/ x : new int[]{1, 2, 3}) {} } }""", - replace(in2, what2, by2)); + replace(in2, what2, by2)); } public void testReplaceInnerClass() { @@ -2930,12 +2955,12 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { private class $B$ { } }"""; - assertEquals(""" + TestCase.assertEquals(""" public class A { private class B extends A implements java.io.Serializable { } }""", - replace(in, what, by)); + replace(in, what, by)); String in2 = """ public class A { @@ -2948,8 +2973,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } void m3() {} }"""; - assertEquals("should replace unmatched class content correctly", - """ + TestCase.assertEquals("should replace unmatched class content correctly", + """ public class A { void m1() {} public void m2() {} @@ -2960,7 +2985,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } void m3() {} }""", - replace(in2, what, by)); + replace(in2, what, by)); } public void testReplaceQualifiedReference() { @@ -2974,8 +2999,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; String what = "System.out.println('_a);"; String by = "System.out.println(\"$a$\" + $a$);"; - assertEquals("don't drop this", - """ + TestCase.assertEquals("don't drop this", + """ class A { String s; void setS(String s) { @@ -2983,7 +3008,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { this.s = s; } }""", - replace(in, what, by)); + replace(in, what, by)); } public void testReplaceExpressionStatement() { @@ -2995,14 +3020,14 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; String what = "'_expr;"; String by = "$expr$.toString();"; - assertEquals("too many semicolons", - """ + TestCase.assertEquals("too many semicolons", + """ class A { void m() { new Object().toString(); } }""", - replace(in, what, by, true)); + replace(in, what, by, true)); } public void testReplaceVariableInitializer() { @@ -3012,12 +3037,12 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; String what = "int '_v;"; String by = "long $v$;"; - assertEquals("initializer should remain", - """ + TestCase.assertEquals("initializer should remain", + """ class X { private final long i=1; }""", - replace(in, what, by, true)); + replace(in, what, by, true)); } public void testReplaceParentheses() { @@ -3035,9 +3060,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { String what = "'_expr:[exprtype( String )].length() == 0"; String by = "$expr$.isEmpty()"; - assertEquals("parentheses should remain", + TestCase.assertEquals("parentheses should remain", - """ + """ public class MyFile { void test(String a, Object b) { if(a.isEmpty()) { @@ -3048,7 +3073,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } }""", - replace(in, what, by, true)); + replace(in, what, by, true)); options.getMatchOptions().setRecursiveSearch(true); String in2 = """ @@ -3057,12 +3082,12 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }}"""; String what2 = "('_expr:[exprtype( int )])"; String by2 = "2"; - assertEquals("don't throw exceptions when replacing", - """ + TestCase.assertEquals("don't throw exceptions when replacing", + """ class X {{ int i = 2; }}""", - replace(in2, what2, by2, true)); + replace(in2, what2, by2, true)); } public void testReplaceTarget() { @@ -3095,7 +3120,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { $Statement$; } }"""; - assertEquals(""" + TestCase.assertEquals(""" import org.junit.Test; class Help { private String s="hello"; @@ -3120,8 +3145,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { List list3 = new ArrayList<>(); }"""; - assertEquals("should properly replace with diamond", - """ + TestCase.assertEquals("should properly replace with diamond", + """ import java.util.ArrayList; import java.util.List; class X { @@ -3129,9 +3154,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { List list2 = new ArrayList<>(); List list3 = new ArrayList<>(); }""", - replace(in, "new '_X<'_p+>()", "new $X$<>()", true)); - assertEquals("should keep generics when matching without", - """ + replace(in, "new '_X<'_p+>()", "new $X$<>()", true)); + TestCase.assertEquals("should keep generics when matching without", + """ import java.util.ArrayList; import java.util.List; class X { @@ -3139,9 +3164,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { List list2 = new /*1*/ArrayList(); List list3 = new /*1*/ArrayList<>(); }""", - replace(in, "new '_X()", "new /*1*/$X$()", true)); - assertEquals("should not duplicate generic parameters", - """ + replace(in, "new '_X()", "new /*1*/$X$()", true)); + TestCase.assertEquals("should not duplicate generic parameters", + """ import java.util.ArrayList; import java.util.List; class X { @@ -3149,7 +3174,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { List list2 = new ArrayList(); List list3 = new ArrayList<>(); }""", - replace(in, "new '_X<'_p+>()", "new $X$()", true)); + replace(in, "new '_X<'_p+>()", "new $X$()", true)); String in2 = """ import java.util.Map; @@ -3161,8 +3186,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """; - assertEquals("replace multiple generic parameters correctly", - """ + TestCase.assertEquals("replace multiple generic parameters correctly", + """ import java.util.Map; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -3172,12 +3197,12 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in2, + replace(in2, "'_Type<'_GenericArgument+> '_Var = new '_Ctor<>('_Params*);", "var $Var$ = new $Ctor$<$GenericArgument$>($Params$);", true)); - assertEquals("replace multiple class type parameters correctly", - """ + TestCase.assertEquals("replace multiple class type parameters correctly", + """ import java.util.Map; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -3187,7 +3212,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in2, "class '_C<'_P+> {}", "class $C$<$P$> {}", true)); + replace(in2, "class '_C<'_P+> {}", "class $C$<$P$> {}", true)); } public void testArrays() { @@ -3197,33 +3222,33 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { abstract String[] foo(String[] x); }"""; - assertEquals("should keep array brackets 1", - """ + TestCase.assertEquals("should keep array brackets 1", + """ public abstract class Bar { String[] x; abstract String[] foo(String[] x); }""", - replace(in, "'_FieldType 'Field = '_Init?;", "$FieldType$ $Field$ = $Init$;", true)); + replace(in, "'_FieldType 'Field = '_Init?;", "$FieldType$ $Field$ = $Init$;", true)); - assertEquals("should keep array brackets 2", - """ + TestCase.assertEquals("should keep array brackets 2", + """ public abstract class Bar { String[] x; abstract String[] foo (String[] x); }""", - replace(in, "'_ReturnType '_Method('_ParameterType '_Parameter*);", + replace(in, "'_ReturnType '_Method('_ParameterType '_Parameter*);", "$ReturnType$ $Method$ ($ParameterType$ $Parameter$);", true)); String in2 = """ class X { public final X[] EMPTY_ARRAY = {}; }"""; - assertEquals("shouldn't delete semicolon", - """ + TestCase.assertEquals("shouldn't delete semicolon", + """ class X { public final X[] EMPTY_ARRAY = {}; }""", - replace(in2, "'_FieldType 'Field = '_Init?;", "$FieldType$ $Field$ = $Init$;", true)); + replace(in2, "'_FieldType 'Field = '_Init?;", "$FieldType$ $Field$ = $Init$;", true)); String in3 = """ class X { @@ -3234,8 +3259,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """; - assertEquals("Should keep commas", - """ + TestCase.assertEquals("Should keep commas", + """ class X { void x(int... ss) {} @@ -3244,9 +3269,9 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in3, "new int[] {'_a*}", "$a$", true)); - assertEquals("Should keep commas 2", - """ + replace(in3, "new int[] {'_a*}", "$a$", true)); + TestCase.assertEquals("Should keep commas 2", + """ class X { void x(int... ss) {} @@ -3255,7 +3280,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in3, "new int[] {'_a*}", "new long[] {$a$}")); + replace(in3, "new int[] {'_a*}", "new long[] {$a$}")); String in4 = """ class X { @@ -3266,8 +3291,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """; - assertEquals("Should keep commas 3", - """ + TestCase.assertEquals("Should keep commas 3", + """ class X { void x(int... ss) {} @@ -3276,7 +3301,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in4, "x('_arg*)", "x(new int[] {$arg$})")); + replace(in4, "x('_arg*)", "x(new int[] {$arg$})")); } public void testMethodCall() { @@ -3288,8 +3313,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { this.x(); } }"""; - assertEquals("replace (un)qualified calls correctly", - """ + TestCase.assertEquals("replace (un)qualified calls correctly", + """ class X { void x() {} void y() { @@ -3297,7 +3322,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { this.x(); } }""", - replace(in, "'_Instance?.'_MethodCall('_arguments*)", "$Instance$.$MethodCall$($arguments$)", true)); + replace(in, "'_Instance?.'_MethodCall('_arguments*)", "$Instance$.$MethodCall$($arguments$)", true)); String in2 = """ class X { void x() { @@ -3311,8 +3336,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """; - assertEquals("copy unmatched qualifiers", - """ + TestCase.assertEquals("copy unmatched qualifiers", + """ class X { void x() { System.out.println(Some.x()); @@ -3325,7 +3350,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { } } """, - replace(in2, "System.out.println(\"\"+'_x());", "System.out.println($x$());", true)); + replace(in2, "System.out.println(\"\"+'_x());", "System.out.println($x$());", true)); } public void testKeepModifierFormatting() { @@ -3338,8 +3363,8 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { /** comment */ @Deprecated public class X {}"""; - assertEquals("keep newline in modifier list", - expected, replace(in, what, replacement, true)); + TestCase.assertEquals("keep newline in modifier list", + expected, replace(in, what, replacement, true)); } public void testTypeParameterReplacement() { @@ -3353,7 +3378,7 @@ public class StructuralReplaceTest extends StructuralReplaceTestCase { }"""; final String what = "$RT$ ar($T$ $p$);"; final String replacement = "$RT$ ar($T$ $p$);"; - assertEquals("keep method type parameters", - in, replace(in, what, replacement, true)); + TestCase.assertEquals("keep method type parameters", + in, replace(in, what, replacement, true)); } } \ No newline at end of file diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralSearchTest.java similarity index 99% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralSearchTest.java index c0e388bb23b8..f8ada671e62d 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/JavaStructuralSearchTest.java @@ -1,11 +1,16 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch; +package com.intellij.java.structuralsearch; import com.intellij.ide.highlighter.JavaFileType; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.util.Disposer; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; +import com.intellij.structuralsearch.*; import com.intellij.structuralsearch.impl.matcher.CompiledPattern; import com.intellij.structuralsearch.impl.matcher.compiler.PatternCompiler; +import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.PlatformTestUtil; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; @@ -18,12 +23,31 @@ import java.util.List; * @author Maxim.Mossienko */ @SuppressWarnings("ALL") -public class StructuralSearchTest extends StructuralSearchTestCase { +public class JavaStructuralSearchTest extends StructuralSearchTestCase { + private final Disposable myBeforeParentDisposeDisposable = Disposer.newDisposable(); @Override protected void setUp() throws Exception { super.setUp(); - setLanguageLevel(LanguageLevel.JDK_16); + IdeaTestUtil.setProjectLanguageLevel(getProject(), LanguageLevel.JDK_16, myBeforeParentDisposeDisposable); + } + + @Override + protected void tearDown() throws Exception { + try { + Disposer.dispose(myBeforeParentDisposeDisposable); + } + catch (Throwable e) { + addSuppressedException(e); + } + finally { + super.tearDown(); + } + } + + @Override + protected Sdk getProjectJDK() { + return IdeaTestUtil.getMockJdk18(); } protected List findMatches(@Language("JAVA") String in, String pattern) { diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/OptimizedSearchScanTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/OptimizedSearchScanTest.java similarity index 96% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/OptimizedSearchScanTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/OptimizedSearchScanTest.java index d33c3d2faa30..20fe9a5e4c8a 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/OptimizedSearchScanTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/OptimizedSearchScanTest.java @@ -1,8 +1,9 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch; import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.structuralsearch.StructuralSearchTestCase; import com.intellij.testFramework.IdeaTestUtil; /** diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/SSRSerializationTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/SSRSerializationTest.java similarity index 96% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/SSRSerializationTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/SSRSerializationTest.java index d725bd152d3f..aca5b82fbc86 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/SSRSerializationTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/SSRSerializationTest.java @@ -1,5 +1,5 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch; import com.intellij.codeInspection.ex.InspectionProfileImpl; import com.intellij.codeInspection.ex.InspectionToolWrapper; @@ -9,6 +9,7 @@ import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.util.JDOMUtil; import com.intellij.profile.codeInspection.BaseInspectionProfileManager; import com.intellij.profile.codeInspection.InspectionProfileManager; +import com.intellij.structuralsearch.MatchOptions; import com.intellij.structuralsearch.inspection.SSBasedInspection; import com.intellij.structuralsearch.plugin.ui.Configuration; import com.intellij.structuralsearch.plugin.ui.SearchConfiguration; diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/TemplatesCompletionTest.kt b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/TemplatesCompletionTest.kt similarity index 82% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/TemplatesCompletionTest.kt rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/TemplatesCompletionTest.kt index dcd35d1a3b20..2e9b011977f5 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/TemplatesCompletionTest.kt +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/TemplatesCompletionTest.kt @@ -1,13 +1,14 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.structuralsearch.plugin.ui +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.ide.highlighter.JavaFileType import com.intellij.structuralsearch.PredefinedConfigurationUtil +import com.intellij.structuralsearch.plugin.ui.ConfigurationManager +import com.intellij.structuralsearch.plugin.ui.StructuralSearchDialogKeys import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase class TemplatesCompletionTest : LightJavaCodeInsightFixtureTestCase() { - fun prepare(text: String) { myFixture.configureByText(JavaFileType.INSTANCE, text) myFixture.editor.putUserData(StructuralSearchDialogKeys.TEST_STRUCTURAL_SEARCH_DIALOG, true) @@ -28,5 +29,4 @@ class TemplatesCompletionTest : LightJavaCodeInsightFixtureTestCase() { assert("All fields of a class" to "Java search template" in elements) // Predefined legacy Java configuration assert("all fields of a class bis" to "Java search template, user defined" in elements) // Newly created configuration } - } \ No newline at end of file diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionSerializationTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionSerializationTest.java similarity index 99% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionSerializationTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionSerializationTest.java index b29846370b16..db14b1d4b68a 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionSerializationTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionSerializationTest.java @@ -1,11 +1,12 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch.inspection; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch.inspection; import com.intellij.codeInspection.ex.InspectionProfileImpl; import com.intellij.codeInspection.ex.InspectionToolsSupplier; import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.JDOMUtil; +import com.intellij.structuralsearch.inspection.SSBasedInspection; import com.intellij.structuralsearch.plugin.ui.Configuration; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import org.jdom.Element; diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTest.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTest.java similarity index 94% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTest.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTest.java index 4eb1c8ebe666..29c7a2653dae 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTest.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTest.java @@ -1,5 +1,5 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch.inspection; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch.inspection; import com.intellij.codeHighlighting.HighlightDisplayLevel; import com.intellij.codeInsight.daemon.impl.DaemonProgressIndicator; @@ -11,6 +11,8 @@ import com.intellij.ide.highlighter.JavaFileType; import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.psi.PsiFile; import com.intellij.structuralsearch.MatchOptions; +import com.intellij.structuralsearch.inspection.SSBasedInspection; +import com.intellij.structuralsearch.inspection.StructuralSearchProfileActionProvider; import com.intellij.structuralsearch.plugin.ui.SearchConfiguration; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.tools.ide.metrics.benchmark.Benchmark; diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTestCase.java b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTestCase.java similarity index 88% rename from platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTestCase.java rename to java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTestCase.java index 8a722befc1c4..6af4ef7373e8 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/inspection/SSBasedInspectionTestCase.java +++ b/java/structuralsearch-java/testSrc/com/intellij/java/structuralsearch/inspection/SSBasedInspectionTestCase.java @@ -1,5 +1,5 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.structuralsearch.inspection; +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.java.structuralsearch.inspection; import com.intellij.codeHighlighting.HighlightDisplayLevel; import com.intellij.codeInsight.daemon.HighlightDisplayKey; @@ -10,11 +10,16 @@ import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.project.Project; import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.structuralsearch.MatchOptions; +import com.intellij.structuralsearch.inspection.SSBasedInspection; +import com.intellij.structuralsearch.inspection.StructuralSearchProfileActionProvider; import com.intellij.structuralsearch.plugin.replace.ui.ReplaceConfiguration; import com.intellij.structuralsearch.plugin.ui.Configuration; import com.intellij.structuralsearch.plugin.ui.SearchConfiguration; import com.intellij.testFramework.UsefulTestCase; -import com.intellij.testFramework.fixtures.*; +import com.intellij.testFramework.fixtures.CodeInsightTestFixture; +import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; +import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; +import com.intellij.testFramework.fixtures.TestFixtureBuilder; import com.intellij.testFramework.fixtures.impl.LightTempDirTestFixtureImpl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/platform/structuralsearch/BUILD.bazel b/platform/structuralsearch/BUILD.bazel index 33e95d744102..bfa1a88cfdc3 100644 --- a/platform/structuralsearch/BUILD.bazel +++ b/platform/structuralsearch/BUILD.bazel @@ -66,13 +66,12 @@ jvm_library( "//platform/testFramework", "//platform/testFramework:testFramework_test_lib", "//platform/structuralsearch:structuralSearch", - "//java/testFramework", "//xml/impl", - "//java/structuralsearch-java:structuralSearch", - "//java/structuralsearch-java:structuralSearch_test_lib", "//platform/util/jdom", "//tools/intellij.tools.ide.metrics.benchmark:ide-metrics-benchmark", "//tools/intellij.tools.ide.metrics.benchmark:ide-metrics-benchmark_test_lib", + "//platform/testRunner", + "//platform/testRunner:testRunner_test_lib", ] ) diff --git a/platform/structuralsearch/intellij.platform.structuralSearch.tests.iml b/platform/structuralsearch/intellij.platform.structuralSearch.tests.iml index 6ea0a4e2b2f7..8a252d53dff4 100644 --- a/platform/structuralsearch/intellij.platform.structuralSearch.tests.iml +++ b/platform/structuralsearch/intellij.platform.structuralSearch.tests.iml @@ -15,10 +15,9 @@ - - + \ No newline at end of file diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTestCase.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTestCase.java index 6987ca69b09b..84dced917d52 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTestCase.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTestCase.java @@ -1,7 +1,6 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.structuralsearch; -import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.psi.search.LocalSearchScope; @@ -9,11 +8,12 @@ import com.intellij.structuralsearch.impl.matcher.CompiledPattern; import com.intellij.structuralsearch.impl.matcher.compiler.PatternCompiler; import com.intellij.structuralsearch.plugin.replace.ReplaceOptions; import com.intellij.structuralsearch.plugin.replace.impl.Replacer; +import com.intellij.testFramework.LightPlatformCodeInsightTestCase; import java.io.File; import java.io.IOException; -public abstract class StructuralReplaceTestCase extends LightQuickFixTestCase { +public abstract class StructuralReplaceTestCase extends LightPlatformCodeInsightTestCase { protected ReplaceOptions options; @Override diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTestCase.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTestCase.java index a78e9b33e0c8..7b9f894c6d40 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTestCase.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTestCase.java @@ -1,7 +1,6 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.structuralsearch; -import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase; import com.intellij.lang.Language; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.util.io.FileUtilRt; @@ -11,6 +10,7 @@ import com.intellij.psi.PsiElement; import com.intellij.structuralsearch.impl.matcher.CompiledPattern; import com.intellij.structuralsearch.impl.matcher.compiler.PatternCompiler; import com.intellij.structuralsearch.plugin.ui.UIUtil; +import com.intellij.testFramework.LightPlatformCodeInsightTestCase; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; @@ -18,7 +18,7 @@ import java.io.File; import java.io.IOException; import java.util.List; -public abstract class StructuralSearchTestCase extends LightQuickFixTestCase { +public abstract class StructuralSearchTestCase extends LightPlatformCodeInsightTestCase { protected MatchOptions options; @Override diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/CommunityDetectFileTypeTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/CommunityDetectFileTypeTest.java index 48bf82e80b4f..7a601139a241 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/CommunityDetectFileTypeTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/plugin/ui/CommunityDetectFileTypeTest.java @@ -1,8 +1,7 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.structuralsearch.plugin.ui; import com.intellij.ide.highlighter.HtmlFileType; -import com.intellij.ide.highlighter.JavaFileType; import com.intellij.ide.highlighter.XmlFileType; /** @@ -17,8 +16,4 @@ public class CommunityDetectFileTypeTest extends DetectFileTypeTestCase { public void testDetectXml() { doTest(XmlFileType.INSTANCE, "Hello <caret>Wrold"); } - - public void testDetectJava() { - doTest(JavaFileType.INSTANCE, "class X {{ System.out.println();}}"); - } } \ No newline at end of file