diff --git a/xml/dom-impl/src/com/intellij/util/xml/stubs/AttributeStubSerializer.java b/xml/dom-impl/src/com/intellij/util/xml/stubs/AttributeStubSerializer.java index 26f1cb92ae9c..c79e6d9be61e 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/stubs/AttributeStubSerializer.java +++ b/xml/dom-impl/src/com/intellij/util/xml/stubs/AttributeStubSerializer.java @@ -38,7 +38,7 @@ public class AttributeStubSerializer implements ObjectStubSerializer + + \ No newline at end of file diff --git a/xml/dom-tests/testData/stubs/parent.xml b/xml/dom-tests/testData/stubs/parent.xml new file mode 100644 index 000000000000..fc85ca16539e --- /dev/null +++ b/xml/dom-tests/testData/stubs/parent.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java index 77b66109dce5..80253b2d3a67 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java @@ -1,11 +1,6 @@ package com.intellij.util.xml.stubs; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.DebugUtil; -import com.intellij.psi.stubs.ObjectStubTree; -import com.intellij.psi.stubs.StubTreeLoader; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.util.xml.XmlName; import com.intellij.util.xml.reflect.DomExtender; @@ -26,12 +21,19 @@ public class DomStubBuilderTest extends DomStubTest { } public void testFoo() throws Exception { - doTest("foo.xml", "File:foo\n" + - " Element:foo\n" + - " Element:bar\n" + - " Attribute:string:xxx\n" + - " Attribute:int:666\n" + - " Element:bar\n"); + doBuilderTest("foo.xml", "File:foo\n" + + " Element:foo\n" + + " Element:bar\n" + + " Attribute:string:xxx\n" + + " Attribute:int:666\n" + + " Element:bar\n"); + } + + public void testIncompleteAttribute() throws Exception { + doBuilderTest("incompleteAttribute.xml", "File:foo\n" + + " Element:foo\n" + + " Element:bar\n" + + " Attribute:string:\n"); } public void testDomExtension() throws Exception { @@ -40,11 +42,11 @@ public class DomStubBuilderTest extends DomStubTest { ep.extenderClassName = TestExtender.class.getName(); PlatformTestUtil.registerExtension(Extensions.getRootArea(), DomExtenderEP.EP_NAME, ep, myTestRootDisposable); - doTest("extender.xml", "File:foo\n" + - " Element:foo\n" + - " Element:bar\n" + - " Attribute:extend:xxx\n" + - " Element:bar\n"); + doBuilderTest("extender.xml", "File:foo\n" + + " Element:foo\n" + + " Element:bar\n" + + " Attribute:extend:xxx\n" + + " Element:bar\n"); } public static class TestExtender extends DomExtender { @@ -54,22 +56,4 @@ public class DomStubBuilderTest extends DomStubTest { registrar.registerAttributeChildExtension(new XmlName("extend"), Custom.class); } } - - private ElementStub getRootStub(String filePath) { - PsiFile psiFile = myFixture.configureByFile(filePath); - - StubTreeLoader loader = StubTreeLoader.getInstance(); - VirtualFile file = psiFile.getVirtualFile(); - assertTrue(loader.canHaveStub(file)); - ObjectStubTree stubTree = loader.readFromVFile(getProject(), file); - assertNotNull(stubTree); - ElementStub root = (ElementStub)stubTree.getRoot(); - assertNotNull(root); - return root; - } - - private void doTest(String file, String stubText) { - ElementStub stub = getRootStub(file); - assertEquals(stubText, DebugUtil.stubTreeToString(stub)); - } } diff --git a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubTest.java b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubTest.java index c0567f9533d5..3679a534520c 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubTest.java @@ -15,6 +15,11 @@ */ package com.intellij.util.xml.stubs; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiFile; +import com.intellij.psi.impl.DebugUtil; +import com.intellij.psi.stubs.ObjectStubTree; +import com.intellij.psi.stubs.StubTreeLoader; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import com.intellij.util.xml.DomFileDescription; import com.intellij.util.xml.DomManager; @@ -44,4 +49,22 @@ public abstract class DomStubTest extends LightCodeInsightFixtureTestCase { protected String getBasePath() { return "/xml/dom-tests/testData/stubs"; } + + protected ElementStub getRootStub(String filePath) { + PsiFile psiFile = myFixture.configureByFile(filePath); + + StubTreeLoader loader = StubTreeLoader.getInstance(); + VirtualFile file = psiFile.getVirtualFile(); + assertTrue(loader.canHaveStub(file)); + ObjectStubTree stubTree = loader.readFromVFile(getProject(), file); + assertNotNull(stubTree); + ElementStub root = (ElementStub)stubTree.getRoot(); + assertNotNull(root); + return root; + } + + protected void doBuilderTest(String file, String stubText) { + ElementStub stub = getRootStub(file); + assertEquals(stubText, DebugUtil.stubTreeToString(stub)); + } } diff --git a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubUsingTest.java b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubUsingTest.java index 09918094c049..0e27b7e2490d 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubUsingTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubUsingTest.java @@ -24,6 +24,7 @@ import com.intellij.psi.stubs.StubTreeLoader; import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; +import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomFileElement; import com.intellij.util.xml.DomManager; import com.intellij.util.xml.GenericAttributeValue; @@ -94,6 +95,14 @@ public class DomStubUsingTest extends DomStubTest { assertFalse(element.getFile().getNode().isParsed()); } + public void testParent() throws Exception { + DomFileElement element = prepare("parent.xml"); + Bar bar = element.getRootElement().getBars().get(0); + GenericAttributeValue notStubbed = bar.getNotStubbed(); + DomElement parent = notStubbed.getParent(); + assertEquals(bar, parent); + } + private DomFileElement prepare(String path) { PsiFile file = myFixture.configureByFile(path); assertFalse(file.getNode().isParsed()); diff --git a/xml/dom-tests/tests/com/intellij/util/xml/stubs/model/Bar.java b/xml/dom-tests/tests/com/intellij/util/xml/stubs/model/Bar.java index 209496658cf3..9ad3ac3d29bd 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/stubs/model/Bar.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/stubs/model/Bar.java @@ -34,4 +34,6 @@ public interface Bar extends DomElement { @Stubbed @Attribute("class") GenericAttributeValue getClazz(); + + GenericAttributeValue getNotStubbed(); }