8213300: jaxp/unittest/transform/CR6551600Test.java fails due to exception in jdk/jdk CI
Reviewed-by: joehw
--- a/test/jaxp/javax/xml/jaxp/unittest/transform/CR6551600Test.java Fri Nov 30 15:22:44 2018 +0100
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/CR6551600Test.java Wed Dec 05 16:41:13 2018 +0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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
@@ -23,10 +23,11 @@
package transform;
-import static jaxp.library.JAXPTestUtilities.getSystemProperty;
-
import java.io.File;
import java.io.FilePermission;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -35,17 +36,18 @@
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import jaxp.library.JAXPTestUtilities;
-
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import jaxp.library.JAXPTestUtilities;
+
/*
* @test
* @bug 6551600
+ * @requires os.family == "windows"
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true transform.CR6551600Test
* @run testng/othervm transform.CR6551600Test
@@ -56,17 +58,22 @@
@Test
public final void testUNCPath() {
- boolean isWindows = getSystemProperty("os.name").contains("Windows");
+ var hostName = "";
+ try {
+ hostName = java.net.InetAddress.getLocalHost().getHostName();
+ } catch (java.net.UnknownHostException e) {
+ // falls through
+ }
+
+ var uncPath = "\\\\" + hostName + "\\C$\\temp\\";
+
+ if (!checkAccess(uncPath)) {
+ System.out.println("Cannot access UNC path. Test exits.");
+ return;
+ }
+
+ var uncFilePath = uncPath + "xslt_unc_test.xml";
JAXPTestUtilities.runWithTmpPermission(() -> {
- String hostName = "";
- try {
- hostName = java.net.InetAddress.getLocalHost().getHostName();
- } catch (java.net.UnknownHostException e) {
- // falls through
- }
-
- String path = isWindows ? "\\\\" + hostName + "\\C$\\xslt_unc_test.xml" : "///tmp/test.xml";
-
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
@@ -75,7 +82,7 @@
doc.appendChild(root);
// create an identity transform
Transformer t = TransformerFactory.newInstance().newTransformer();
- File f = new File(path);
+ File f = new File(uncFilePath);
StreamResult result = new StreamResult(f);
DOMSource source = new DOMSource(doc);
System.out.println("Writing to " + f);
@@ -86,11 +93,24 @@
Assert.fail(e.toString());
}
- File file = new File(path);
+ File file = new File(uncFilePath);
if (file.exists()) {
file.deleteOnExit();
}
- }, isWindows ? new FilePermission("//localhost/C$/xslt_unc_test.xml", "read,write,delete")
- : new FilePermission("///tmp/test.xml", "read,write,delete"));
+ }, new FilePermission(uncFilePath, "read,write,delete"));
+ }
+
+ private boolean checkAccess(String path) {
+ return JAXPTestUtilities.runWithTmpPermission(() -> {
+ try {
+ Path tmepFile = Files.createTempFile(Paths.get(path), "test", "6551600");
+ Files.deleteIfExists(tmepFile);
+ return true;
+ } catch (Exception e) {
+ System.out.println("Access check failed.");
+ e.printStackTrace();
+ return false;
+ }
+ }, new FilePermission(path + "*", "read,write,delete"));
}
}