navigate to testdata: add tests for multifile test data

This commit is contained in:
Dmitry Batkovich
2018-12-28 17:01:11 +03:00
parent 557688c7b4
commit a30cf0a564
5 changed files with 49 additions and 0 deletions
@@ -0,0 +1,6 @@
import junit.framework.TestCase;
public class SomeTestWithTestDataDir extends TestCase {
public void test<caret>TestDataForThisTest() {
}
}
@@ -0,0 +1,10 @@
import junit.framework.TestCase;
public class SomeTestWithTestDataDir extends TestCase {
public void testIntelliJ<caret>IDEA() {
}
public void testTestDataForThisTest() {
}
}
@@ -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<TestDataFile> 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<TestDataFile> 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");
}