Skip to content

Commit c6bcba2

Browse files
committed
8342270: Test sun/security/pkcs11/Provider/RequiredMechCheck.java needs write access to src tree
Backport-of: 342fe42555a0e892d21d187287ab996be199abb1
1 parent 7203110 commit c6bcba2

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

test/jdk/sun/security/pkcs11/PKCS11Test.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@
5353
import java.util.ServiceConfigurationError;
5454
import java.util.ServiceLoader;
5555
import java.util.Set;
56+
import java.util.stream.Collectors;
5657
import java.util.stream.Stream;
5758

5859
import jdk.test.lib.Platform;
60+
import jdk.test.lib.Utils;
5961
import jdk.test.lib.artifacts.Artifact;
6062
import jdk.test.lib.artifacts.ArtifactResolver;
6163
import jdk.test.lib.artifacts.ArtifactResolverException;
@@ -481,14 +483,13 @@ public static String getNssConfig() throws Exception {
481483
return null;
482484
}
483485

484-
String base = getBase();
485-
486+
String nssConfigDir = copyNssFiles();
486487
String libfile = libdir + System.mapLibraryName(nss_library);
487488

488489
String customDBdir = System.getProperty("CUSTOM_DB_DIR");
489490
String dbdir = (customDBdir != null) ?
490491
customDBdir :
491-
base + SEP + "nss" + SEP + "db";
492+
nssConfigDir + SEP + "db";
492493
// NSS always wants forward slashes for the config path
493494
dbdir = dbdir.replace('\\', '/');
494495

@@ -498,7 +499,7 @@ public static String getNssConfig() throws Exception {
498499
System.setProperty("pkcs11test.nss.db", dbdir);
499500
return (customConfig != null) ?
500501
customConfig :
501-
base + SEP + "nss" + SEP + customConfigName;
502+
nssConfigDir + SEP + customConfigName;
502503
}
503504

504505
// Generate a vector of supported elliptic curves of a given provider
@@ -725,6 +726,31 @@ private static Path findNSSLibrary(Path path, Path libraryName) throws IOExcepti
725726
}
726727
}
727728

729+
//Copy the nss config files to the current directory for tests. Returns the destination path
730+
private static String copyNssFiles() throws Exception {
731+
String nss = "nss";
732+
String db = "db";
733+
Path nssDirSource = Path.of(getBase()).resolve(nss);
734+
Path nssDirDestination = Path.of(".").resolve(nss);
735+
736+
// copy files from nss directory
737+
copyFiles(nssDirSource, nssDirDestination);
738+
// copy files from nss/db directory
739+
copyFiles(nssDirSource.resolve(db), nssDirDestination.resolve(db));
740+
return nssDirDestination.toString();
741+
}
742+
743+
private static void copyFiles(Path dirSource, Path dirDestination) throws IOException {
744+
List<Path> sourceFiles = Arrays
745+
.stream(dirSource.toFile().listFiles())
746+
.filter(File::isFile)
747+
.map(File::toPath)
748+
.collect(Collectors.toList());
749+
List<Path> destFiles = Utils.copyFiles(sourceFiles, dirDestination,
750+
StandardCopyOption.REPLACE_EXISTING);
751+
destFiles.forEach((Path file) -> file.toFile().setWritable(true));
752+
}
753+
728754
public abstract void main(Provider p) throws Exception;
729755

730756
protected boolean skipTest(Provider p) {

test/jdk/sun/security/pkcs11/Provider/MultipleLogins.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
2+
# Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
33
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
#
55
# This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
2727
# @library /test/lib/
2828
# @build jdk.test.lib.util.ForceGC
2929
# jdk.test.lib.Platform
30+
# jdk.test.lib.Utils
3031
# @run shell MultipleLogins.sh
3132

3233
# set a few environment variables so that the shell-script can run stand-alone

0 commit comments

Comments
 (0)