8217777: TEST_BUG: jdk/java/util/prefs/ExportSubtree.java passes even when test should fail
authorsgroeger
Tue, 29 Jan 2019 09:10:08 +0000
changeset 53534 4cfa5f51eafa
parent 53533 bce458ffed11
child 53535 ce77e4d928f3
8217777: TEST_BUG: jdk/java/util/prefs/ExportSubtree.java passes even when test should fail Reviewed-by: clanger, rriggs
test/jdk/java/util/prefs/ExportSubtree.java
--- 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);
+        }
+    }
 }