mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge branch 'master' of git@git.labs.intellij.net:idea/community
This commit is contained in:
@@ -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" />
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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 <b>foo</b>()
|
||||
throws <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 <b>foo</b>()
|
||||
throws <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());
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -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 "safe write""/>
|
||||
<text value="Use "safe write" (save changes to a temp. file first)"/>
|
||||
<toolTipText value="<html>Save changes to a temporary file first.<br/>Replace original file if write succeeded, leave original file untouched if write failed.</html> "/>
|
||||
</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();
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+4
-4
@@ -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);
|
||||
}
|
||||
|
||||
-26
@@ -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 {
|
||||
}
|
||||
+1
-2
@@ -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
|
||||
|
||||
-47
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user