import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ContentEntry;
+import com.intellij.openapi.roots.JavaProjectRootsUtil;
import com.intellij.openapi.roots.ModuleRootManager;
+import com.intellij.openapi.roots.SourceFolder;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
public class CreateTestAction extends PsiElementBaseIntentionAction {
private static final String CREATE_TEST_IN_THE_SAME_ROOT = "create.test.in.the.same.root";
+ @Override
@NotNull
public String getText() {
return CodeInsightBundle.message("intention.create.test");
}
+ @Override
@NotNull
public String getFamilyName() {
return getText();
}
+ @Override
public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) {
if (!isAvailableForElement(element)) return false;
}
protected static void checkForTestRoots(Module srcModule, Set<VirtualFile> testFolders) {
- testFolders.addAll(ModuleRootManager.getInstance(srcModule).getSourceRoots(JavaSourceRootType.TEST_SOURCE));
+ List<VirtualFile> sourceRoots = ModuleRootManager.getInstance(srcModule).getSourceRoots(JavaSourceRootType.TEST_SOURCE);
+ for (VirtualFile sourceRoot : sourceRoots) {
+ if (!JavaProjectRootsUtil.isInGeneratedCode(sourceRoot, srcModule.getProject())) {
+ testFolders.add(sourceRoot);
+ }
+ }
//create test in the same module
if (!testFolders.isEmpty()) return;
return psiClass;
}
+ @Override
public boolean startInWriteAction() {
return false;
}
-}
\ No newline at end of file
+}