-
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 not failing when space is missing in xml declaration (#128…
- Loading branch information
1 parent
761ac42
commit 724c56d
Showing
11 changed files
with
326 additions
and
1 deletion.
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
271 changes: 271 additions & 0 deletions
271
...MLConformanceTestSuite_not_wftests_Test_IBMXMLConformanceTestSuite_Production24_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,271 @@ | ||
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.FileNotFoundException; | ||
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 24</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_Production24_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-P24-ibm24n01.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n01.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with a required field missing. The VersionNum is missing in the VersionInfo in the XMLDecl.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n01xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n01.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with a required field missing. The VersionNum is missing in the VersionInfo in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected apostrophe (') or quotation mark (\") after version and not ?" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n02.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n02.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with a required field missing. The white space is missing between the key word "xml" and the VersionInfo in the XMLDecl.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws XmlPullParserException if there is a problem parsing the XML file | ||
* @throws FileNotFoundException if the testing XML file is not found | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n02xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n02.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with a required field missing. The white space is missing between the key word \"xml\" and the VersionInfo in the XMLDecl." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected v in version and not ?" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n03.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n03.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with a required field missing. The "=" (equal sign) is missing between the key word "version" and the VersionNum.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n03xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n03.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with a required field missing. The \"=\" (equal sign) is missing between the key word \"version\" and the VersionNum." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected equals sign (=) after version and not \\'" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n04.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n04.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with wrong field ordering. The VersionNum occurs before "=" and "version".</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n04xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n04.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with wrong field ordering. The VersionNum occurs before \"=\" and \"version\"." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected v in version and not \\'" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n05.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n05.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with wrong field ordering. The "=" occurs after "version" and the VersionNum.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n05xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n05.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with wrong field ordering. The \"=\" occurs after \"version\" and the VersionNum." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected equals sign (=) after version and not \\'" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n06.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n06.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with the wrong key word "Version".</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n06xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n06.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with the wrong key word \"Version\"." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected v in version and not V" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n07.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n07.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with the wrong key word "versioN".</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n07xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n07.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with the wrong key word \"versioN\"." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "expected n in version and not N" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n08.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n08.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with mismatched quotes around the VersionNum. version = '1.0" is used as the VersionInfo.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n08xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n08.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with mismatched quotes around the VersionNum. version = '1.0\" is used as the VersionInfo." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "<?xml version value expected to be in ([a-zA-Z0-9_.:] | '-') not \"" ) ); | ||
} | ||
} | ||
|
||
/** | ||
* Test ID: <pre>ibm-not-wf-P24-ibm24n09.xml</pre> | ||
* Test URI: <pre>not-wf/P24/ibm24n09.xml</pre> | ||
* Comment: <pre>Tests VersionInfo with mismatched quotes around the VersionNum. The closing bracket for the VersionNum is missing.</pre> | ||
* Sections: <pre>2.8</pre> | ||
* Version: | ||
* | ||
* @throws IOException if there is an I/O error | ||
*/ | ||
@Test | ||
public void testibm_not_wf_P24_ibm24n09xml() | ||
throws IOException | ||
{ | ||
try ( Reader reader = new FileReader( new File( testResourcesDir, "not-wf/P24/ibm24n09.xml" ) ) ) | ||
{ | ||
parser.setInput( reader ); | ||
while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) | ||
; | ||
fail( "Tests VersionInfo with mismatched quotes around the VersionNum. The closing bracket for the VersionNum is missing." ); | ||
} | ||
catch ( XmlPullParserException e ) | ||
{ | ||
assertTrue( e.getMessage().contains( "<?xml version value expected to be in ([a-zA-Z0-9_.:] | '-') not " ) ); | ||
} | ||
} | ||
|
||
} |
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= ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- VersioNum is missing in VersionInfo --> |
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 @@ | ||
<?xmlversion='1.0' ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- S is missing in VersionInfo --> |
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' ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Eq is missing in VersionInfo --> |
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 '1.0'=version ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Wrong ordering VersionNum Eq 'version' --> |
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'= ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Wrong ordering version VersionNum Eq --> |
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' ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Wrong key word 'Version' --> |
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' ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Wrong key word 'versioN' --> |
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" ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Mismatched qotes in VersionInfo --> |
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 ?> | ||
<!DOCTYPE doc [ | ||
<!ELEMENT doc EMPTY> | ||
]> | ||
<doc/> | ||
<!-- Mismatched qotes in VersionInfo --> |