8213300: jaxp/unittest/transform/CR6551600Test.java fails due to exception in jdk/jdk CI
Reviewed-by: joehw
This commit is contained in:
parent
6cbb52dc24
commit
2c02822742
@ -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.TransformerFactory;
|
||||
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 @@ public class CR6551600Test {
|
||||
|
||||
@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 @@ public class CR6551600Test {
|
||||
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 @@ public class CR6551600Test {
|
||||
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"));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user