From a30cf0a5648b6d693b8021a82d613a532beb486a Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Fri, 28 Dec 2018 17:00:37 +0300 Subject: [PATCH] navigate to testdata: add tests for multifile test data --- .../SomeTestWithTestDataDir.java | 6 ++++ .../SomeTestWithTestDataDirAndSibling.java | 10 ++++++ .../testDataForThisTest/after.java | 0 .../testDataForThisTest/before.java | 0 .../TestDataGuessByExistingFilesUtilTest.java | 33 +++++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDir.java create mode 100644 plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDirAndSibling.java create mode 100644 plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/after.java create mode 100644 plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/before.java diff --git a/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDir.java b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDir.java new file mode 100644 index 000000000000..980785611a8d --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDir.java @@ -0,0 +1,6 @@ +import junit.framework.TestCase; + +public class SomeTestWithTestDataDir extends TestCase { + public void testTestDataForThisTest() { + } +} \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDirAndSibling.java b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDirAndSibling.java new file mode 100644 index 000000000000..09629245475b --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/SomeTestWithTestDataDirAndSibling.java @@ -0,0 +1,10 @@ +import junit.framework.TestCase; + +public class SomeTestWithTestDataDir extends TestCase { + public void testIntelliJIDEA() { + + } + + public void testTestDataForThisTest() { + } +} \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/after.java b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/after.java new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/before.java b/plugins/devkit/devkit-java-tests/testData/guessByExistingFiles/testDataForThisTest/before.java new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/testAssistant/TestDataGuessByExistingFilesUtilTest.java b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/testAssistant/TestDataGuessByExistingFilesUtilTest.java index 61c5904cda83..cac10fd7ab13 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/testAssistant/TestDataGuessByExistingFilesUtilTest.java +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/testAssistant/TestDataGuessByExistingFilesUtilTest.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.devkit.testAssistant; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.projectRoots.ex.JavaSdkUtil; import com.intellij.openapi.util.ThrowableComputable; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; @@ -25,6 +26,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.testFramework.PsiTestUtil; import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; +import com.intellij.util.PathUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.idea.devkit.DevkitJavaTestsUtil; import org.jetbrains.jps.model.java.JavaResourceRootType; @@ -127,6 +129,29 @@ public class TestDataGuessByExistingFilesUtilTest extends TestDataPathTestCase { verifyResultForOnlySame(result); } + public void testCollectTestDataByDirName() { + PsiMethod testMethod = getTestMethodWithTestDataDir(); + List result = TestDataGuessByExistingFilesUtil.suggestTestDataFiles( + TestDataGuessByExistingFilesUtil.getTestName(testMethod.getName()), null, testMethod.getContainingClass()); + assertSize(2, result); + assertTrue(result.get(0).exists() && result.get(1).exists()); + assertEquals(ContainerUtil.set("before.java", "after.java"), ContainerUtil.map2Set(result, TestDataFile::getName)); + } + + public void testGuessTestDataByRelatedByDirName() { + PsiMethod testMethod = getTestMethodWithTestDataDirAndSibling(); + + List result = TestDataGuessByExistingFilesUtil.guessTestDataName(testMethod); + assertSize(2, result); + assertTrue(!result.get(0).exists() && !result.get(1).exists()); + assertEquals(ContainerUtil.set("before.java", "after.java"), ContainerUtil.map2Set(result, TestDataFile::getName)); + String parentName1 = PathUtil.getFileName(PathUtil.getParentPath(result.get(0).getPath())); + String parentName2 = PathUtil.getFileName(PathUtil.getParentPath(result.get(1).getPath())); + + String expected = StringUtil.decapitalize(TestDataGuessByExistingFilesUtil.getTestName(testMethod.getName())); + assertEquals(expected, parentName1); + assertEquals(expected, parentName2); + } private PsiMethod getTestMethodWithBeforeAndAfterTestData() { return getTestMethod("SomeTest_BeforeAndAfter.java", "somethingBA_before.java", "somethingBA_after.java"); @@ -140,6 +165,14 @@ public class TestDataGuessByExistingFilesUtilTest extends TestDataPathTestCase { return getTestMethod("SomeTest_AfterAndSame.java", "somethingAS_after.java", "somethingAS.java"); } + private PsiMethod getTestMethodWithTestDataDir() { + return getTestMethod("SomeTestWithTestDataDir.java", "testDataForThisTest/before.java", "testDataForThisTest/after.java"); + } + + private PsiMethod getTestMethodWithTestDataDirAndSibling() { + return getTestMethod("SomeTestWithTestDataDirAndSibling.java", "testDataForThisTest/before.java", "testDataForThisTest/after.java"); + } + private PsiMethod getTestMethodWithOnlySameTestData() { return getTestMethod("SomeTest_OnlySame.java", "somethingS.java"); }