8217777: TEST_BUG: jdk/java/util/prefs/ExportSubtree.java passes even when test should fail
Reviewed-by: clanger, rriggs
--- a/test/jdk/java/util/prefs/ExportSubtree.java Tue Jan 29 08:43:33 2019 +0100
+++ b/test/jdk/java/util/prefs/ExportSubtree.java Tue Jan 29 09:10:08 2019 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,76 +21,74 @@
* questions.
*/
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.prefs.Preferences;
-/* @test
- * @bug 6203576 4700020 7197662
+/**
+ * @test
+ * @bug 6203576 4700020 7197662 8217777
* @summary checks if the output of exportSubtree() is identical to
* the output from previous release.
* @run main/othervm -Djava.util.prefs.userRoot=. ExportSubtree
*/
-
-import java.io.*;
-import java.util.prefs.*;
+public class ExportSubtree {
+ private static final String LS = System.getProperty("line.separator");
-public class ExportSubtree {
- public static void main(String[] args) throws Exception {
- try
- {
- //File f = new File(System.getProperty("test.src", "."), "TestPrefs.xml");
- ByteArrayInputStream bais = new ByteArrayInputStream(importPrefs.getBytes("utf-8"));
- Preferences.importPreferences(bais);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- Preferences.userRoot().node("testExportSubtree").exportSubtree(baos);
- Preferences.userRoot().node("testExportSubtree").removeNode();
- if (!expectedResult.equals(baos.toString())) {
- //System.out.print(baos.toString());
- //System.out.print(expectedResult);
- throw new IOException("exportSubtree does not output expected result");
- }
- }
- catch( Exception e ) {
- e.printStackTrace();
- }
- }
+ private static final String IMPORT_PREFS =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+ "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\">" +
+ "<preferences EXTERNAL_XML_VERSION=\"1.0\">" +
+ " <root type=\"user\">" +
+ " <map>" +
+ " <entry key=\"key1\" value=\"value1\"/>" +
+ " </map>" +
+ " <node name=\"testExportSubtree\">" +
+ " <map>" +
+ " <entry key=\"key2\" value=\"value2\"/>" +
+ " </map>" +
+ " <node name=\"test\">" +
+ " <map>" +
+ " <entry key=\"key3\" value=\"value3\"/>" +
+ " </map>" +
+ " </node>" +
+ " </node>" +
+ " </root>" +
+ "</preferences>";
- static String ls = System.getProperty("line.separator");
- static String importPrefs =
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- + "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\">"
- + "<preferences EXTERNAL_XML_VERSION=\"1.0\">"
- + " <root type=\"user\">"
- + " <map>"
- + " <entry key=\"key1\" value=\"value1\"/>"
- + " </map>"
- + " <node name=\"testExportSubtree\">"
- + " <map>"
- + " <entry key=\"key2\" value=\"value2\"/>"
- + " </map>"
- + " <node name=\"test\">"
- + " <map>"
- + " <entry key=\"key3\" value=\"value3\"/>"
- + " </map>"
- + " </node>"
- + " </node>"
- + " </root>"
- + "</preferences>";
+ private static final String EXPECTED_RESULT =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" + LS +
+ "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\">" + LS +
+ "<preferences EXTERNAL_XML_VERSION=\"1.0\">" + LS +
+ " <root type=\"user\">" + LS +
+ " <map/>" + LS +
+ " <node name=\"testExportSubtree\">" + LS +
+ " <map>" + LS +
+ " <entry key=\"key2\" value=\"value2\"/>" + LS +
+ " </map>" + LS +
+ " <node name=\"test\">" + LS +
+ " <map>" + LS +
+ " <entry key=\"key3\" value=\"value3\"/>" + LS +
+ " </map>" + LS +
+ " </node>" + LS +
+ " </node>" + LS +
+ " </root>" + LS +
+ "</preferences>" + LS;
- static String expectedResult =
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
- + ls + "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\">"
- + ls + "<preferences EXTERNAL_XML_VERSION=\"1.0\">"
- + ls + " <root type=\"user\">"
- + ls + " <map/>"
- + ls + " <node name=\"testExportSubtree\">"
- + ls + " <map>"
- + ls + " <entry key=\"key2\" value=\"value2\"/>"
- + ls + " </map>"
- + ls + " <node name=\"test\">"
- + ls + " <map>"
- + ls + " <entry key=\"key3\" value=\"value3\"/>"
- + ls + " </map>"
- + ls + " </node>"
- + ls + " </node>"
- + ls + " </root>"
- + ls + "</preferences>" + ls;
+ public static void main(String[] args) throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(IMPORT_PREFS.getBytes("utf-8"));
+ Preferences.importPreferences(bais);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Preferences.userRoot().node("testExportSubtree").exportSubtree(baos);
+ Preferences.userRoot().node("testExportSubtree").removeNode();
+ if (!EXPECTED_RESULT.equals(baos.toString())) {
+ String errMsg = "Preferences::exportSubtree did not yield the expected result.";
+ System.out.println(errMsg + LS +
+ "Actual:" + LS +
+ baos + LS +
+ "Expected:" + LS +
+ EXPECTED_RESULT);
+ throw new RuntimeException(errMsg);
+ }
+ }
}