mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-11-15 13:02:19 +00:00
[JENKINS-48463] refactored XStream2 to default to KXml2Driver by default.
Changed all explicit references of the hierarchical driver to use a static convinience method XStream2.getDefaultDriver() to ensure all XML operations are using the same driver.
This commit is contained in:
1 parent
37365eeca7
commit
570b52dbcc
11 files changed
+50
-38
No files matched your search
@@ -64,7 +64,7 @@ public class PluginManagerTest {
|
||||
@Issue("SECURITY-167")
|
||||
@Test
|
||||
public void parseInvalidRequestedPlugins() throws Exception {
|
||||
String evilXML = "<?xml version='1.1' encoding='UTF-8'?>\n" +
|
||||
String evilXML = "<?xml version='1.0' encoding='UTF-8'?>\n" +
|
||||
"<!DOCTYPE project[<!ENTITY foo SYSTEM \"file:///\">]>\n" +
|
||||
"<root>\n" +
|
||||
" <stuff plugin='stuff@1.0'>\n" +
|
||||
|
||||
@@ -70,7 +70,7 @@ public class XStream2EncodingTest {
|
||||
Thing t = (Thing) xs.fromXML(new ByteArrayInputStream(ambiguousXml));
|
||||
assertThat(t.field, not(msg));
|
||||
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
|
||||
baos2.write("<?xml version='1.1' encoding='UTF-8'?>\n".getBytes("UTF-8"));
|
||||
baos2.write("<?xml version='1.0' encoding='UTF-8'?>\n".getBytes("UTF-8"));
|
||||
baos2.write(ambiguousXml);
|
||||
t = (Thing) xs.fromXML(new ByteArrayInputStream(ambiguousXml));
|
||||
assertThat(t.field, not(msg));
|
||||
|
||||
@@ -83,13 +83,13 @@ public class RunIdMigratorTest {
|
||||
|
||||
@Test public void legacy() throws Exception {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
write("2014-01-02_03-04-05/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("2014-01-02_03-04-05/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
link("99", "2014-01-02_03-04-05");
|
||||
link("lastFailedBuild", "-1");
|
||||
link("lastSuccessfulBuild", "99");
|
||||
assertEquals("{2014-01-02_03-04-05={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>'}, 99=→2014-01-02_03-04-05, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
assertEquals("{2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>'}, 99=→2014-01-02_03-04-05, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
assertTrue(migrator.migrate(dir, null));
|
||||
assertEquals("{99={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-05 99\n'}", summarize());
|
||||
assertEquals("{99={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-05 99\n'}", summarize());
|
||||
assertEquals(99, migrator.findNumber("2014-01-02_03-04-05"));
|
||||
migrator = new RunIdMigrator();
|
||||
assertFalse(migrator.migrate(dir, null));
|
||||
@@ -104,58 +104,58 @@ public class RunIdMigratorTest {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
write("2014-01-02_03-04-04/build.xml", "<run>\n <number>98</number>\n</run>");
|
||||
link("98", "2014-01-02_03-04-04");
|
||||
write("99/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("99/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
link("lastFailedBuild", "-1");
|
||||
link("lastSuccessfulBuild", "99");
|
||||
assertEquals("{2014-01-02_03-04-04={build.xml='<run>\n <number>98</number>\n</run>'}, 98=→2014-01-02_03-04-04, 99={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
assertEquals("{2014-01-02_03-04-04={build.xml='<run>\n <number>98</number>\n</run>'}, 98=→2014-01-02_03-04-04, 99={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
assertTrue(migrator.migrate(dir, null));
|
||||
assertEquals("{98={build.xml='<run>\n <id>2014-01-02_03-04-04</id>\n <timestamp>1388649844000</timestamp>\n</run>'}, 99={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-04 98\n'}", summarize());
|
||||
assertEquals("{98={build.xml='<run>\n <id>2014-01-02_03-04-04</id>\n <timestamp>1388649844000</timestamp>\n</run>'}, 99={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-04 98\n'}", summarize());
|
||||
}
|
||||
|
||||
@Test public void reverseImmediately() throws Exception {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
File root = dir;
|
||||
dir = new File(dir, "jobs/somefolder/jobs/someproject/promotions/OK/builds");
|
||||
write("99/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("99/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
link("lastFailedBuild", "-1");
|
||||
link("lastSuccessfulBuild", "99");
|
||||
write("legacyIds", "2014-01-02_03-04-05 99\n");
|
||||
assertEquals("{99={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-05 99\n'}", summarize());
|
||||
assertEquals("{99={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <id>2014-01-02_03-04-05</id>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, lastFailedBuild=→-1, lastSuccessfulBuild=→99, legacyIds='2014-01-02_03-04-05 99\n'}", summarize());
|
||||
RunIdMigrator.main(root.getAbsolutePath());
|
||||
assertEquals("{2014-01-02_03-04-05={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>'}, 99=→2014-01-02_03-04-05, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
assertEquals("{2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>99</number>\n <otherstuff>ok</otherstuff>\n</run>'}, 99=→2014-01-02_03-04-05, lastFailedBuild=→-1, lastSuccessfulBuild=→99}", summarize());
|
||||
}
|
||||
|
||||
@Test public void reverseAfterNewBuilds() throws Exception {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
File root = dir;
|
||||
dir = new File(dir, "jobs/someproject/modules/test$test/builds");
|
||||
write("1/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("1/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("legacyIds", "");
|
||||
assertEquals("{1={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
assertEquals("{1={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
RunIdMigrator.main(root.getAbsolutePath());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
}
|
||||
|
||||
@Test public void reverseMatrixAfterNewBuilds() throws Exception {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
File root = dir;
|
||||
dir = new File(dir, "jobs/someproject/Environment=prod/builds");
|
||||
write("1/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("1/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("legacyIds", "");
|
||||
assertEquals("{1={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
assertEquals("{1={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
RunIdMigrator.main(root.getAbsolutePath());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
}
|
||||
|
||||
@Test public void reverseMavenAfterNewBuilds() throws Exception {
|
||||
assumeFalse("Symlinks don't work well on Windows", Functions.isWindows());
|
||||
File root = dir;
|
||||
dir = new File(dir, "jobs/someproject/test$test/builds");
|
||||
write("1/build.xml", "<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("1/build.xml", "<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>");
|
||||
write("legacyIds", "");
|
||||
assertEquals("{1={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
assertEquals("{1={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <timestamp>1388649845000</timestamp>\n <otherstuff>ok</otherstuff>\n</run>'}, legacyIds=''}", summarize());
|
||||
RunIdMigrator.main(root.getAbsolutePath());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.1' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='<?xml version='1.0' encoding='UTF-8'?>\n<run>\n <stuff>ok</stuff>\n <number>1</number>\n <otherstuff>ok</otherstuff>\n</run>'}}", summarize());
|
||||
}
|
||||
|
||||
// TODO test sane recovery from various error conditions
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
*/
|
||||
package jenkins.util.xstream;
|
||||
|
||||
import com.thoughtworks.xstream.io.xml.KXml2Driver;
|
||||
import hudson.util.XStream2;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Before;
|
||||
@@ -54,7 +53,7 @@ public class XStreamDOMTest {
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
xs = new XStream2(new KXml2Driver());
|
||||
xs = new XStream2();
|
||||
xs.alias("foo", Foo.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class XMLUtilsTest {
|
||||
@Issue("SECURITY-167")
|
||||
@Test()
|
||||
public void testSafeTransformDoesNotProcessForeignResources() throws Exception {
|
||||
final String xml = "<?xml version='1.1' encoding='UTF-8'?>\n" +
|
||||
final String xml = "<?xml version='1.0' encoding='UTF-8'?>\n" +
|
||||
"<!DOCTYPE project[\n" +
|
||||
" <!ENTITY foo SYSTEM \"file:///\">\n" +
|
||||
"]>\n" +
|
||||
@@ -82,7 +82,7 @@ public class XMLUtilsTest {
|
||||
@Issue("SECURITY-167")
|
||||
@Test()
|
||||
public void testUpdateByXmlIDoesNotFail() throws Exception {
|
||||
final String xml = "<?xml version='1.1' encoding='UTF-8'?>\n" +
|
||||
final String xml = "<?xml version='1.0' encoding='UTF-8'?>\n" +
|
||||
"<project>\n" +
|
||||
" <actions/>\n" +
|
||||
" <description>&</description>\n" +
|
||||
@@ -119,7 +119,7 @@ public class XMLUtilsTest {
|
||||
@Test
|
||||
public void testParse_with_XXE() throws IOException, XPathExpressionException {
|
||||
try {
|
||||
final String xml = "<?xml version=\"1.1\" encoding=\"UTF-8\"?>\n" +
|
||||
final String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||
"<!DOCTYPE foo [\n" +
|
||||
" <!ELEMENT foo ANY >\n" +
|
||||
" <!ENTITY xxe SYSTEM \"http://abc.com/temp/test.jsp\" >]> " +
|
||||
|
||||
Reference in new issue
Block a user