Merge branch 'master' of git@git.labs.intellij.net:idea/community

This commit is contained in:
Kirill Kalishev
2011-12-13 20:20:54 +03:00
34 changed files with 452 additions and 260 deletions
@@ -600,6 +600,9 @@
<option name="BACKGROUND" value="434242" />
</value>
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value>
<option name="BACKGROUND" value="000000" />
@@ -611,18 +614,37 @@
<option name="BACKGROUND" value="434242" />
</value>
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="66CC33" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="66CC33" />
</value>
</option>
<option name="HAML_TAG">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="434242" />
</value>
</option>
<option name="HAML_TAG_NAME">
<value />
</option>
<option name="HAML_TEXT">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="434242" />
</value>
</option>
<option name="HAML_WS_REMOVAL">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="434242" />
</value>
</option>
<option name="HAML_XHTML">
<value>
<option name="FOREGROUND" value="FFFFFF" />
@@ -1433,6 +1455,9 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value />
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="FFFFFF" />
@@ -578,13 +578,29 @@
<option name="HAML_LINE_CONTINUATION">
<value />
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value />
</option>
<option name="HAML_RUBY_START">
<value />
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="61CE3C" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="61CE3C" />
</value>
</option>
<option name="HAML_TAG">
<value />
</option>
<option name="HAML_TAG_NAME">
<value>
<option name="FOREGROUND" value="7F90AA" />
</value>
@@ -592,6 +608,9 @@
<option name="HAML_TEXT">
<value />
</option>
<option name="HAML_WS_REMOVAL">
<value />
</option>
<option name="HAML_XHTML">
<value />
</option>
@@ -1403,6 +1422,11 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="FF6400" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="F8F8F8" />
+30
View File
@@ -619,6 +619,11 @@
<option name="HAML_LINE_CONTINUATION">
<value />
</option>
<option name="HAML_PARENTHS">
<value>
<option name="FOREGROUND" value="E1EFFF" />
</value>
</option>
<option name="HAML_RUBY_CODE">
<value>
<option name="BACKGROUND" value="223545" />
@@ -627,7 +632,22 @@
<option name="HAML_RUBY_START">
<value />
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="3AD900" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="3AD900" />
</value>
</option>
<option name="HAML_TAG">
<value>
<option name="FOREGROUND" value="E1EFFF" />
</value>
</option>
<option name="HAML_TAG_NAME">
<value>
<option name="FOREGROUND" value="9EFFFF" />
</value>
@@ -635,6 +655,11 @@
<option name="HAML_TEXT">
<value />
</option>
<option name="HAML_WS_REMOVAL">
<value>
<option name="FOREGROUND" value="E1EFFF" />
</value>
</option>
<option name="HAML_XHTML">
<value />
</option>
@@ -1563,6 +1588,11 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="FFDD00" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="FFFFFF" />
+26
View File
@@ -588,18 +588,39 @@
<option name="HAML_LINE_CONTINUATION">
<value />
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value />
</option>
<option name="HAML_RUBY_START">
<value />
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="E6DB74" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="E6DB74" />
</value>
</option>
<option name="HAML_TAG">
<value />
</option>
<option name="HAML_TAG_NAME">
<value>
<option name="FOREGROUND" value="F92672" />
</value>
</option>
<option name="HAML_TEXT">
<value />
</option>
<option name="HAML_WS_REMOVAL">
<value />
</option>
<option name="HAML_XHTML">
<value />
</option>
@@ -1430,6 +1451,11 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="A6E22E" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="F8F8F2" />
@@ -596,6 +596,9 @@
<option name="HAML_LINE_CONTINUATION">
<value />
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value>
<option name="BACKGROUND" value="232323" />
@@ -604,7 +607,20 @@
<option name="HAML_RUBY_START">
<value />
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="A5C261" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="A5C261" />
</value>
</option>
<option name="HAML_TAG">
<value />
</option>
<option name="HAML_TAG_NAME">
<value>
<option name="FOREGROUND" value="E8BF6A" />
</value>
@@ -612,6 +628,9 @@
<option name="HAML_TEXT">
<value />
</option>
<option name="HAML_WS_REMOVAL">
<value />
</option>
<option name="HAML_XHTML">
<value />
</option>
@@ -1460,6 +1479,11 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="E8BF6A" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="E6E1DC" />
@@ -595,13 +595,29 @@
<option name="HAML_LINE_CONTINUATION">
<value />
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value />
</option>
<option name="HAML_RUBY_START">
<value />
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="8F9D6A" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="8F9D6A" />
</value>
</option>
<option name="HAML_TAG">
<value />
</option>
<option name="HAML_TAG_NAME">
<value>
<option name="FOREGROUND" value="AC885B" />
</value>
@@ -609,6 +625,9 @@
<option name="HAML_TEXT">
<value />
</option>
<option name="HAML_WS_REMOVAL">
<value />
</option>
<option name="HAML_XHTML">
<value />
</option>
@@ -1458,6 +1477,11 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="9B703F" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="F8F8F8" />
@@ -600,6 +600,9 @@
<option name="BACKGROUND" value="0F0F0F" />
</value>
</option>
<option name="HAML_PARENTHS">
<value />
</option>
<option name="HAML_RUBY_CODE">
<value />
</option>
@@ -609,18 +612,37 @@
<option name="BACKGROUND" value="0F0F0F" />
</value>
</option>
<option name="HAML_STRING">
<value>
<option name="FOREGROUND" value="66FF00" />
</value>
</option>
<option name="HAML_STRING_INTERPOLATED">
<value>
<option name="FOREGROUND" value="66FF00" />
</value>
</option>
<option name="HAML_TAG">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="0F0F0F" />
</value>
</option>
<option name="HAML_TAG_NAME">
<value />
</option>
<option name="HAML_TEXT">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="0F0F0F" />
</value>
</option>
<option name="HAML_WS_REMOVAL">
<value>
<option name="FOREGROUND" value="FFFFFF" />
<option name="BACKGROUND" value="0F0F0F" />
</value>
</option>
<option name="HAML_XHTML">
<value>
<option name="FOREGROUND" value="FFFFFF" />
@@ -1448,6 +1470,12 @@
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TAG_ATTR_KEY">
<value>
<option name="FOREGROUND" value="99CC99" />
<option name="FONT_TYPE" value="2" />
</value>
</option>
<option name="TEXT">
<value>
<option name="FOREGROUND" value="FFFFFF" />
@@ -1297,8 +1297,8 @@ public class JavaDocInfoGenerator {
}
@SuppressWarnings({"HardCodedStringLiteral"})
private void generateThrowsSection(StringBuilder buffer, PsiMethod method, final PsiDocComment comment) {
PsiDocTag[] localTags = getThrowsTags(comment);
private void generateThrowsSection(StringBuilder buffer, final PsiMethod method, final PsiDocComment comment) {
final PsiDocTag[] localTags = getThrowsTags(comment);
LinkedList<Pair<PsiDocTag, InheritDocProvider<PsiDocTag>>> collectedTags =
new LinkedList<Pair<PsiDocTag, InheritDocProvider<PsiDocTag>>>();
@@ -1317,7 +1317,18 @@ public class JavaDocInfoGenerator {
}
}
collectedTags.addFirst(new Pair<PsiDocTag, InheritDocProvider<PsiDocTag>>(localTags[i], ourEmptyProvider));
final Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> tag = findInheritDocTag(method, exceptionLocator(valueElement.getText()));
collectedTags.addFirst(new Pair<PsiDocTag, InheritDocProvider<PsiDocTag>>(localTags[i], new InheritDocProvider<PsiDocTag>() {
@Override
public Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> getInheritDoc() {
return tag;
}
@Override
public PsiClass getElement() {
return method.getContainingClass();
}
}));
}
}
@@ -0,0 +1,2 @@
<html><head> <style type="text/css"> #error { background-color: #eeeeee; margin-bottom: 10px; } p { margin: 5px 0; } </style></head><body><small><b><a href="psi_element://InheritedDocInThrows"><code>InheritedDocInThrows</code></a></b></small><PRE>void&nbsp;<b>foo</b>()
throws&nbsp;<a href="psi_element://java.io.IOException"><code>IOException</code></a></PRE><DD><DL><DT><b>Overrides:</b><DD><a href="psi_element://A#foo()"><code>foo</code></a> in class <a href="psi_element://A"><code>A</code></a></DD></DL></DD><DD><DL><DT><b>Throws:</b><DD><a href="psi_element://java.io.IOException"><code>IOException</code></a> - la-la-la</DD></DL></DD></body></html>
@@ -0,0 +1,18 @@
import java.io.IOException;
class InheritedDocInThrows extends A{
/**
* @throws IOException {@inheritDoc}
*/
void foo() throws IOException {
super.foo();
}
}
class A {
/**
* @throws IOException la-la-la
*/
void foo() throws IOException {
}
}
@@ -0,0 +1,2 @@
<html><head> <style type="text/css"> #error { background-color: #eeeeee; margin-bottom: 10px; } p { margin: 5px 0; } </style></head><body><small><b><a href="psi_element://InheritedDocInThrows1"><code>InheritedDocInThrows1</code></a></b></small><PRE>void&nbsp;<b>foo</b>()
throws&nbsp;<a href="psi_element://java.io.IOException"><code>IOException</code></a></PRE><DD><DL><DT><b>Overrides:</b><DD><a href="psi_element://A#foo()"><code>foo</code></a> in class <a href="psi_element://A"><code>A</code></a></DD></DL></DD><DD><DL><DT><b>Throws:</b><DD><a href="psi_element://java.io.IOException"><code>IOException</code></a> - comment</DD></DL></DD></body></html>
@@ -0,0 +1,18 @@
import java.io.IOException;
class InheritedDocInThrows1 extends A{
/**
* @throws java.io.IOException comment
*/
void foo() throws IOException {
super.foo();
}
}
class A {
/**
* @throws java.io.IOException la-la-la
*/
void foo() throws IOException {
}
}
@@ -33,6 +33,14 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase {
public void testMethodTypeParameter() throws Exception {
doTestMethod();
}
public void testInheritedDocInThrows() throws Exception {
doTestMethod();
}
public void testInheritedDocInThrows1() throws Exception {
doTestMethod();
}
public void testClassTypeParameter() throws Exception {
verifyJavaDoc(getTestClass());
@@ -46,7 +46,7 @@ public class InspectionDescriptionLinkHandler extends TooltipLinkHandler {
final PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (file == null) {
LOG.error(editor);
LOG.error(editor.getDocument());
return null;
}
@@ -308,4 +308,8 @@ public abstract class AbstractConsoleRunnerWithHistory<T extends LanguageConsole
public ConsoleExecuteActionHandler getConsoleExecuteActionHandler() {
return myConsoleExecuteActionHandler;
}
protected CommandLineArgumentsProvider getProvider() {
return myProvider;
}
}
@@ -145,11 +145,12 @@
</grid>
<component id="6f8cf" class="javax.swing.JCheckBox" binding="myChkUseSafeWrite">
<constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="3" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<selected value="true"/>
<text value="Use &quot;safe write&quot;"/>
<text value="Use &quot;safe write&quot; (save changes to a temp. file first)"/>
<toolTipText value="&lt;html&gt;Save changes to a temporary file first.&lt;br/&gt;Replace original file if write succeeded, leave original file untouched if write failed.&lt;/html&gt; "/>
</properties>
</component>
</children>
@@ -596,7 +596,7 @@ public class IdeEventQueue extends EventQueue {
boolean mouseEventsAhead = isMouseEventAhead(e);
boolean focusTransferred = IdeFocusManager.getGlobalInstance().isFocusBeingTransferred();
boolean okToFixFocus = !mouseEventsAhead && (!focusTransferred || !Registry.is("actionSystem.fixLostTyping"));
boolean okToFixFocus = !mouseEventsAhead && focusTransferred;
if (okToFixFocus) {
Window showingWindow = mgr.getActiveWindow();
@@ -498,7 +498,7 @@ public abstract class LocalFileSystemBase extends LocalFileSystem {
}
private static boolean shallUseSafeStream(final Object requestor, final VirtualFile file) {
return GeneralSettings.getInstance().isUseSafeWrite() && requestor instanceof SafeWriteRequestor && !file.isSymLink();
return requestor instanceof SafeWriteRequestor && GeneralSettings.getInstance().isUseSafeWrite() && !file.isSymLink();
}
@Override
@@ -27,10 +27,6 @@ import junit.framework.TestSuite;
* To change this template use Options | File Templates.
*/
public class VersionCompareTest extends TestCase {
public static TestSuite suite () {
return new TestSuite (VersionCompareTest.class);
}
public void testEqual () {
String v1 = "0.0.1";
String v2 = "0.0.1";
@@ -31,6 +31,10 @@ import com.intellij.testFramework.*;
import com.intellij.tests.ExternalClasspathClassLoader;
import com.intellij.util.ArrayUtil;
import junit.framework.*;
import org.jetbrains.annotations.Nullable;
import org.junit.runner.Description;
import org.junit.runner.manipulation.Filter;
import org.junit.runner.manipulation.NoTestsRemainException;
import java.io.File;
import java.io.IOException;
@@ -62,9 +66,37 @@ public class TestAll implements Test {
private static final int FILTER_CLASSES = 16;
public static int ourMode = SAVE_MEMORY_SNAPSHOT /*| START_GUARD | RUN_GC | CHECK_MEMORY*/ | FILTER_CLASSES;
private static final boolean PERFORMANCE_TESTS_ONLY = System.getProperty(TestCaseLoader.PERFORMANCE_TESTS_ONLY_FLAG) != null;
private int myLastTestTestMethodCount = 0;
public static final int MAX_FAILURE_TEST_COUNT = 150;
private static final Filter PERFORMANCE_ONLY = new Filter() {
@Override
public boolean shouldRun(Description description) {
String className = description.getClassName();
String methodName = description.getMethodName();
return className != null && hasPerformance(className) ||
methodName != null && hasPerformance(methodName);
}
@Override
public String describe() {
return "Performance Tests Only";
}
};
private static final Filter NO_PERFORMANCE = new Filter() {
@Override
public boolean shouldRun(Description description) {
return !PERFORMANCE_ONLY.shouldRun(description);
}
@Override
public String describe() {
return "All Except Performance";
}
};
@Override
public int countTestCases() {
List<Class> classes = myTestCaseLoader.getClasses();
@@ -247,16 +279,36 @@ public class TestAll implements Test {
return realFreeMemory < needed;
}
private static Test getTest(Class testCaseClass) {
private static boolean isPerformanceTestsRun() {
return PERFORMANCE_TESTS_ONLY;
}
@Nullable
private static Test getTest(final Class testCaseClass) {
if ((testCaseClass.getModifiers() & Modifier.PUBLIC) == 0) return null;
try {
Method suiteMethod = testCaseClass.getMethod("suite", ArrayUtil.EMPTY_CLASS_ARRAY);
return (Test)suiteMethod.invoke(null, ArrayUtil.EMPTY_CLASS_ARRAY);
Method suiteMethod = safeFindMethod(testCaseClass, "suite");
if (suiteMethod != null && !isPerformanceTestsRun()) {
try {
return (Test)suiteMethod.invoke(null, ArrayUtil.EMPTY_CLASS_ARRAY);
}
catch (Exception e) {
System.err.println("Failed to execute suite ()");
e.printStackTrace();
}
}
catch (NoSuchMethodException e) {
else {
if (TestRunnerUtil.isJUnit4TestClass(testCaseClass)) {
return new JUnit4TestAdapter(testCaseClass);
JUnit4TestAdapter adapter = new JUnit4TestAdapter(testCaseClass);
if (!hasPerformance(testCaseClass.getSimpleName()) || !isPerformanceTestsRun()) {
try {
adapter.filter(isPerformanceTestsRun() ? PERFORMANCE_ONLY : NO_PERFORMANCE);
}
catch (NoTestsRemainException e1) {
// Ignore
}
}
return adapter;
}
return new TestSuite(testCaseClass){
@Override
@@ -264,6 +316,8 @@ public class TestAll implements Test {
if (!(test instanceof TestCase)) {
super.addTest(test);
} else {
if (isPerformanceTestsRun() ^ (hasPerformance(((TestCase)test).getName()) || hasPerformance(testCaseClass.getSimpleName()))) return;
Method method = findTestMethod((TestCase)test);
if (method == null || !TestCaseLoader.isBombed(method)) {
super.addTest(test);
@@ -272,24 +326,30 @@ public class TestAll implements Test {
}
@Nullable
private Method findTestMethod(final TestCase testCase) {
try {
return testCase.getClass().getMethod(testCase.getName());
}
catch (NoSuchMethodException e1) {
return null;
}
return safeFindMethod(testCase.getClass(), testCase.getName());
}
};
}
catch (Exception e) {
System.err.println("Failed to execute suite ()");
e.printStackTrace();
}
return null;
}
private static boolean hasPerformance(String name) {
return name.toLowerCase().contains("performance");
}
@Nullable
private static Method safeFindMethod(Class klass, String name) {
try {
return klass.getMethod(name);
}
catch (NoSuchMethodException e) {
return null;
}
}
public static String[] getClassRoots() {
String testRoots = System.getProperty("test.roots");
if (testRoots != null) {
@@ -325,7 +385,7 @@ public class TestAll implements Test {
if (Boolean.parseBoolean(System.getProperty("idea.ignore.predefined.groups")) || (ourMode & FILTER_CLASSES) == 0) {
classFilterName = "";
}
myTestCaseLoader = new TestCaseLoader(classFilterName);
myTestCaseLoader = new TestCaseLoader(classFilterName, isPerformanceTestsRun());
myTestCaseLoader.addFirstTest(Class.forName("_FirstInSuiteTest"));
myTestCaseLoader.addLastTest(Class.forName("_LastInSuiteTest"));
@@ -348,7 +408,6 @@ public class TestAll implements Test {
}
log("Number of test classes found: " + testCaseLoader.getClasses().size());
testCaseLoader.checkClassesExist();
}
private static void log(String message) {
@@ -25,8 +25,6 @@
package com.intellij;
import com.intellij.idea.Bombed;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.TestRunnerUtil;
@@ -39,7 +37,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;
@SuppressWarnings({"HardCodedStringLiteral"})
@SuppressWarnings({"HardCodedStringLiteral", "UseOfSystemOutOrSystemErr", "CallToPrintStackTrace", "TestOnlyProblems"})
public class TestCaseLoader {
/** Holds name of JVM property that is assumed to define target test group name. */
@@ -48,28 +46,31 @@ public class TestCaseLoader {
/** Holds name of JVM property that is assumed to define filtering rules for test classes. */
private static final String TARGET_TEST_PATTERNS = "idea.test.patterns";
/** Holds name of JVM property that is assumed to determine if only 'fast' tests should be executed. */
private static final String FAST_TESTS_ONLY_FLAG = "idea.fast.only";
public static final String PERFORMANCE_TESTS_ONLY_FLAG = "idea.performance.tests";
private final List<Class> myClassList = new ArrayList<Class>();
private Class myFirstTestClass;
private Class myLastTestClass;
private final TestClassesFilter myTestClassesFilter;
private final String myTestGroupName;
private final Set<String> blockedTests = new HashSet<String>();
private final String[] slowTestNames;
private boolean myIsPerformanceTestsRun;
public TestCaseLoader(String classFilterName) {
this(classFilterName, false);
}
public TestCaseLoader(String classFilterName, boolean isPerformanceTestsRun) {
myIsPerformanceTestsRun = isPerformanceTestsRun;
InputStream excludedStream = StringUtil.isEmpty(classFilterName) ? null : getClass().getClassLoader().getResourceAsStream(classFilterName);
String preconfiguredGroup = System.getProperty(TARGET_TEST_GROUP);
if (preconfiguredGroup == null || "".equals(preconfiguredGroup.trim())) {
myTestGroupName = "";
String testGroupName;
if (preconfiguredGroup == null || preconfiguredGroup.trim().isEmpty()) {
testGroupName = "";
} else {
myTestGroupName = preconfiguredGroup.trim();
testGroupName = preconfiguredGroup.trim();
}
if (excludedStream != null) {
try {
myTestClassesFilter = GroupBasedTestClassFilter.createOn(new InputStreamReader(excludedStream), myTestGroupName);
myTestClassesFilter = GroupBasedTestClassFilter.createOn(new InputStreamReader(excludedStream), testGroupName);
}
finally {
try {
@@ -90,40 +91,7 @@ public class TestCaseLoader {
}
}
String[] names;
try {
InputStream stream = getClass().getClassLoader().getResourceAsStream("tests/slowTests.txt");
names = FileUtil.loadTextAndClose(new InputStreamReader(stream)).split("\\s");
}
catch (Exception e) {
// no luck
names = new String[0];
}
slowTestNames = names;
if (Comparing.equal(System.getProperty(FAST_TESTS_ONLY_FLAG), "true")) {
blockedTests.addAll(Arrays.asList(slowTestNames));
}
else {
checkClassesExist();
}
System.out.println("Using test group: [" + myTestGroupName +"]");
}
void checkClassesExist() {
String s = "";
for (String slowTestName : slowTestNames) {
if (slowTestName.trim().length() == 0) continue;
if (blockedTests.contains(slowTestName)) continue;
try {
Class.forName(slowTestName);
}
catch (ClassNotFoundException e) {
s += "\n" + slowTestName;
}
}
if (s.length() != 0) {
throw new RuntimeException("Tests in slowTests.txt which cannot be instantiated: "+s);
}
System.out.println("Using test group: [" + testGroupName +"]");
}
/*
@@ -165,7 +133,10 @@ public class TestCaseLoader {
//System.out.println("testCaseClass = " + testCaseClass);
return true;
}
} catch (NoSuchMethodException e) { }
}
catch (NoSuchMethodException e) {
// can't be
}
return TestRunnerUtil.isJUnit4TestClass(testCaseClass);
}
@@ -174,8 +145,10 @@ public class TestCaseLoader {
* Determine if we should exclude this test case.
*/
private boolean shouldExcludeTestClass(Class testCaseClass) {
return !myTestClassesFilter.matches(testCaseClass.getName()) || isBombed(testCaseClass)
|| blockedTests.contains(testCaseClass.getName());
String className = testCaseClass.getName();
if (className.toLowerCase().contains("performance") && !myIsPerformanceTestsRun) return true;
return !myTestClassesFilter.matches(className) || isBombed(testCaseClass);
}
public static boolean isBombed(final Method method) {
@@ -105,7 +105,6 @@ public class GroovyPsiCreator implements GroovyElementTypes {
if (elem == ANNOTATION_ARGUMENTS) return new GrAnnotationArgumentListImpl(node);
if (elem == ANNOTATION_ARRAY_INITIALIZER) return new GrAnnotationArrrayInitializerImpl(node);
if (elem == ANNOTATION_MEMBER_VALUE_PAIR) return new GrAnnotationNameValuePairImpl(node);
if (elem == ANNOTATION_MEMBER_VALUE_PAIRS) return new GrAnnotationNameValuePairsImpl(node);
if (elem == DEFAULT_ANNOTATION_VALUE) return new GrDefaultAnnotationValueImpl(node);
@@ -93,10 +93,10 @@ public class AnnotationArguments implements GroovyElementTypes {
*/
private static boolean parseAnnotationMemberValuePairs(PsiBuilder builder, GroovyParser parser) {
PsiBuilder.Marker annmvps = builder.mark();
PsiBuilder.Marker start = builder.mark();
if (!parseAnnotationMemberValueSinglePair(builder, parser)) {
annmvps.rollbackTo();
start.rollbackTo();
return false;
}
@@ -104,12 +104,12 @@ public class AnnotationArguments implements GroovyElementTypes {
ParserUtils.getToken(builder, mNLS);
if (!parseAnnotationMemberValueSinglePair(builder, parser)) {
annmvps.rollbackTo();
start.rollbackTo();
return false;
}
}
start.drop();
annmvps.done(ANNOTATION_MEMBER_VALUE_PAIRS);
return true;
}
@@ -321,10 +321,6 @@ public abstract class GroovyElementVisitor {
visitElement(nameValuePair);
}
public void visitAnnotationNameValuePairs(GrAnnotationNameValuePairs nameValuePair) {
visitElement(nameValuePair);
}
public void visitAnnotation(GrAnnotation annotation) {
visitElement(annotation);
}
@@ -1,26 +0,0 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
/**
* @author: Dmitry.Krasilschikov
* @date: 04.04.2007
*/
public interface GrAnnotationNameValuePairs extends GroovyPsiElement {
}
@@ -52,8 +52,7 @@ public class GrAnnotationArgumentListImpl extends GroovyPsiElementImpl implement
@NotNull
public GrAnnotationNameValuePair[] getAttributes() {
final GrAnnotationNameValuePairsImpl pairs = findChildByClass(GrAnnotationNameValuePairsImpl.class);
return pairs == null ? findChildrenByClass(GrAnnotationNameValuePair.class) : pairs.getAttributes();
return findChildrenByClass(GrAnnotationNameValuePair.class);
}
@Override
@@ -1,47 +0,0 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.plugins.groovy.lang.psi.impl.auxiliary.annotation;
import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor;
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotationNameValuePair;
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotationNameValuePairs;
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiElementImpl;
/**
* @author: Dmitry.Krasilschikov
* @date: 04.04.2007
*/
public class GrAnnotationNameValuePairsImpl extends GroovyPsiElementImpl implements GrAnnotationNameValuePairs {
public GrAnnotationNameValuePairsImpl(@NotNull ASTNode node) {
super(node);
}
@NotNull
public GrAnnotationNameValuePair[] getAttributes() {
return findChildrenByClass(GrAnnotationNameValuePair.class);
}
public void accept(GroovyElementVisitor visitor) {
visitor.visitAnnotationNameValuePairs(this);
}
public String toString() {
return "Annotation member value pairs";
}
}
+11 -12
View File
@@ -11,18 +11,17 @@ Groovy script
PsiWhiteSpace(' ')
Annotation arguments
PsiElement(()('(')
Annotation member value pairs
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('notnull')
Annotation arguments
<empty list>
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('notnull')
Annotation arguments
<empty list>
PsiElement())(')')
PsiElement(new line)('\n')
PsiElement(def)('def')
+21 -22
View File
@@ -10,29 +10,28 @@ Groovy script
PsiWhiteSpace(' ')
Annotation arguments
PsiElement(()('(')
Annotation member value pairs
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Conditional expression
Method call
Reference expression
PsiElement(identifier)('isNull')
Arguments
PsiElement(()('(')
PsiElement())(')')
PsiWhiteSpace(' ')
PsiElement(?)('?')
PsiWhiteSpace(' ')
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Conditional expression
Method call
Reference expression
PsiElement(identifier)('b')
PsiWhiteSpace(' ')
PsiElement(:)(':')
PsiWhiteSpace(' ')
Reference expression
PsiElement(identifier)('c')
PsiElement(identifier)('isNull')
Arguments
PsiElement(()('(')
PsiElement())(')')
PsiWhiteSpace(' ')
PsiElement(?)('?')
PsiWhiteSpace(' ')
Reference expression
PsiElement(identifier)('b')
PsiWhiteSpace(' ')
PsiElement(:)(':')
PsiWhiteSpace(' ')
Reference expression
PsiElement(identifier)('c')
PsiElement())(')')
PsiWhiteSpace(' ')
PsiElement(identifier)('a')
+11 -12
View File
@@ -10,18 +10,17 @@ Groovy script
PsiWhiteSpace(' ')
Annotation arguments
PsiElement(()('(')
Annotation member value pairs
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('b')
Annotation arguments
<empty list>
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('b')
Annotation arguments
<empty list>
PsiElement())(')')
PsiWhiteSpace(' ')
PsiElement(class)('class')
+28 -29
View File
@@ -10,38 +10,37 @@ Groovy script
PsiWhiteSpace(' ')
Annotation arguments
PsiElement(()('(')
Annotation member value pairs
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('Ann1')
Annotation arguments
<empty list>
PsiElement(,)(',')
Annotation member value pair
PsiElement(identifier)('a')
PsiWhiteSpace(' ')
Annotation member value pair
PsiElement(identifier)('b')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation
PsiElement(@)('@')
Reference element
PsiElement(identifier)('Ann1')
Annotation arguments
<empty list>
PsiElement(,)(',')
PsiWhiteSpace(' ')
Annotation member value pair
PsiElement(identifier)('b')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Conditional expression
Literal
PsiElement(true)('true')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiElement(?)('?')
PsiWhiteSpace(' ')
Conditional expression
Literal
PsiElement(true)('true')
PsiWhiteSpace(' ')
PsiElement(?)('?')
PsiWhiteSpace(' ')
Reference expression
PsiElement(identifier)('c')
PsiWhiteSpace(' ')
PsiElement(:)(':')
PsiWhiteSpace(' ')
Literal
PsiElement(false)('false')
Reference expression
PsiElement(identifier)('c')
PsiWhiteSpace(' ')
PsiElement(:)(':')
PsiWhiteSpace(' ')
Literal
PsiElement(false)('false')
PsiElement())(')')
PsiWhiteSpace(' ')
Type element
+13 -14
View File
@@ -11,21 +11,20 @@ Groovy script
PsiWhiteSpace(' ')
Annotation arguments
PsiElement(()('(')
Annotation member value pairs
Annotation member value pair
PsiElement(identifier)('foo')
Annotation member value pair
PsiElement(identifier)('foo')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation array initializer
PsiElement([)('[')
Literal
PsiElement(Integer)('1')
PsiElement(,)(',')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
Annotation array initializer
PsiElement([)('[')
Literal
PsiElement(Integer)('1')
PsiElement(,)(',')
PsiWhiteSpace(' ')
Literal
PsiElement(Integer)('2')
PsiElement(])(']')
Literal
PsiElement(Integer)('2')
PsiElement(])(']')
PsiElement())(')')
PsiElement(new line)('\n')
PsiElement(class)('class')
@@ -117,7 +117,12 @@ public class TestRunnerUtil {
}
try {
//noinspection SSBasedInspection
test = (Test)suiteMethod.invoke(null, new Class[0]); // static method
test = (Test)suiteMethod.invoke(null, new Class[0]); // static method
if (test == null) {
return new FailedTestCase(testClass, BaseTestRunner.SUITE_METHODNAME,
MessageFormat.format(ourBundle.getString("junit.failed.to.invoke.suite"), new Object[]{"method " + suiteClassName + ".suite() evaluates to null"}),
null);
}
test = new SuiteMethodWrapper(test, suiteClassName);
}
catch (final InvocationTargetException e) {
+5 -7
View File
@@ -111,15 +111,13 @@
</action>
<action id="DebugListen" internal="true" class="com.intellij.debugger.actions.ThrowDebugExceptionAction">
<add-to-group group-id="Internal1" anchor="before" relative-to-action="VirtualFileInfo"/>
<add-to-group group-id="Internal.Errors"/>
</action>
<group id="Internal2" internal="true">
<action id="GenerateVisitorByHierarchy" internal="true" class="com.intellij.internal.GenerateVisitorByHierarchyAction"
text="Generate Hierarchy Visitor"/>
<separator/>
<add-to-group group-id="Internal1" anchor="before" relative-to-action="CheckVfsSanity"/>
</group>
<action id="GenerateVisitorByHierarchy" internal="true" class="com.intellij.internal.GenerateVisitorByHierarchyAction"
text="Generate Hierarchy Visitor">
<add-to-group group-id="Internal"/>
</action>
<group id="JavaDebuggerActions">
<action id="Debugger.AdjustArrayRange" class="com.intellij.debugger.actions.AdjustArrayRangeAction"/>