-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix MXParser failing to parse properly 'standalone' declaration (#131)
- Loading branch information
1 parent
724c56d
commit 2bd2a43
Showing
13 changed files
with
325 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
269 changes: 269 additions & 0 deletions
269
...MLConformanceTestSuite_not_wftests_Test_IBMXMLConformanceTestSuite_Production32_Test.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,269 @@ | ||
package org.codehaus.plexus.util.xml.pull; | ||
|
||
import static org.junit.Assert.assertTrue; | ||
import static org.junit.Assert.fail; | ||
|
||
import java.io.File; | ||
import java.io.FileReader; | ||
import java.io.IOException; | ||
import java.io.Reader; | ||
|
||
import org.junit.Before; | ||
import org.junit.Test; | ||
|
||
/** | ||
* Test class that execute a particular set of tests associated to a TESCASES tag from the XML W3C Conformance Tests. | ||
* TESCASES PROFILE: <pre>IBM XML Conformance Test Suite - Production 32</pre> | ||
* XML test files base folder: <pre>xmlconf/ibm/</pre> | ||
* | ||
* @author <a href="mailto:[email protected]">Gabriel Belingueres</a> | ||
*/ | ||
public class IBMXML10Tests_Test_IBMXMLConformanceTestSuite_not_wftests_Test_IBMXMLConformanceTestSuite_Production32_Test | ||
{ | ||
|
||
final static File testResourcesDir = new File( "src/test/resources/", "xmlconf/ibm/" ); | ||
|
||
MXParser parser; | ||
|
||
@Before | ||
public void setUp() | ||
{ | ||
parser = new MXParser(); | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n01.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n01.xml</pre> | ||
* Comment: <pre>Tests SDDecl with a required field missing. The leading white space is missing with the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n01xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n01.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with a required field missing. The leading white space is missing with the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n02.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n02.xml</pre> | ||
* Comment: <pre>Tests SDDecl with a required field missing. The "=" sign is missing in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n02xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n02.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with a required field missing. The \"=\" sign is missing in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n03.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n03.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong key word. The word "Standalone" occurs in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n03xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n03.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong key word. The word \"Standalone\" occurs in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n04.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n04.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong key word. The word "Yes" occurs in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n04xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n04.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong key word. The word \"Yes\" occurs in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n05.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n05.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong key word. The word "YES" occurs in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n05xml() | ||
throws IOException | ||
{ | ||
|
||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n05.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong key word. The word \"YES\" occurs in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n06.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n06.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong key word. The word "No" occurs in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n06xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n06.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong key word. The word \"No\" occurs in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n07.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n07.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong key word. The word "NO" occurs in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n07xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n07.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong key word. The word \"NO\" occurs in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n08.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n08.xml</pre> | ||
* Comment: <pre>Tests SDDecl with wrong field ordering. The "=" sign occurs after the key word "yes" in the SDDecl in the XMLDecl.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n08xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n08.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests SDDecl with wrong field ordering. The \"=\" sign occurs after the key word \"yes\" in the SDDecl in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P32-ibm32n09.xml</pre> | ||
* Test URI: <pre>not-wf/P32/ibm32n09.xml</pre> | ||
* Comment: <pre>This is test violates WFC: Entity Declared in P68. The standalone document declaration has the value yes, BUT there is an external markup declaration of an entity (other than amp, lt, gt, apos, quot), and references to this entity appear in the document.</pre> | ||
* Sections: <pre>2.9</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P32_ibm32n09xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P32/ibm32n09.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "This is test violates WFC: Entity Declared in P68. The standalone document declaration has the value yes, BUT there is an external markup declaration of an entity (other than amp, lt, gt, apos, quot), and references to this entity appear in the document." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected ?> as last part of <?xml not t" ) ); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0"standalone="yes" ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Missing a S in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" standalone"yes" ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Missing Eq in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" Standalone="yes" ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Wrong keyword in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" standalone="Yes" ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Wrong keyword in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" standalone="YES" ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Wrong keyword in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<!ELEMENT animal EMPTY> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
<?xml version="1.0" standalone="No" ?> | ||
<!DOCTYPE animal SYSTEM "ibm32n06.dtd"> | ||
<!-- Wrong keyword in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
<?xml version="1.0" standalone="NO" ?> | ||
<!DOCTYPE animal SYSTEM "ibm32n06.dtd"> | ||
<!-- Wrong keyword in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" standalone"Yes"= ?> | ||
<!DOCTYPE animal [ | ||
<!ELEMENT animal EMPTY> | ||
]> | ||
<!-- Wrong ordering in SDDecl --> | ||
<animal/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<!ENTITY animal_content "This is a yellow tiger"> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" standalone="yes" ?> | ||
<!DOCTYPE animal SYSTEM "ibm32n09.dtd" [ | ||
<!ELEMENT animal (#PCDATA)> | ||
]> | ||
<!-- This is test violates WFC: Entity Declared in P68 | ||
The standalone document declaration has the value "yes", there is an | ||
external markup declaration of an entity (other than amp, lt, gt, apos, quot), and references to this entity appear in the document. | ||
--> | ||
<animal>&animal_content;</animal> |