Skip to content

Commit a925461

Browse files
author
Alexey Semenyuk
committed
8370442: Compilation error in jpackage EntitlementsTest test
Reviewed-by: almatvee
1 parent afba636 commit a925461

File tree

4 files changed

+108
-42
lines changed

4 files changed

+108
-42
lines changed

test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ public void testVarArg2(int a, String b, String ... other) {
9595
recordTestCase(a, b, other);
9696
}
9797

98+
enum Tack {
99+
STARBOARD,
100+
PORTSIDE;
101+
}
102+
103+
@Test
104+
@Parameter({"STARBOARD"})
105+
@Parameter({"PORTSIDE", "STARBOARD"})
106+
public void testEnumVarArg(Tack ... cource) {
107+
recordTestCase((Object[]) cource);
108+
}
109+
98110
@Test
99111
@ParameterSupplier("dateSupplier")
100112
@ParameterSupplier("jdk.jpackage.test.AnnotationsTest.dateSupplier")
@@ -118,6 +130,8 @@ public static Set<String> getExpectedTestDescs() {
118130
"().testVarArg2(-89, bar, [more, moore](length=2))",
119131
"().testVarArg2(-89, bar, [more](length=1))",
120132
"().testVarArg2(12, foo, [](length=0))",
133+
"().testEnumVarArg(STARBOARD)",
134+
"().testEnumVarArg(PORTSIDE, STARBOARD)",
121135
"().testDates(2018-05-05)",
122136
"().testDates(2018-07-11)",
123137
"().testDates(2034-05-05)",

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,17 @@ public JPackageCommand addArguments(String name, Path value) {
203203
return addArguments(name, value.toString());
204204
}
205205

206+
public JPackageCommand mutate(Consumer<JPackageCommand> mutator) {
207+
return mutate(List.of(mutator));
208+
}
209+
210+
public JPackageCommand mutate(Iterable<Consumer<JPackageCommand>> mutators) {
211+
for (var mutator : mutators) {
212+
mutator.accept(this);
213+
}
214+
return this;
215+
}
216+
206217
public boolean isImagePackageType() {
207218
return PackageType.IMAGE == getArgumentValue("--type",
208219
() -> null, PACKAGE_TYPES::get);

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Set;
5555
import java.util.function.BiConsumer;
5656
import java.util.function.BiFunction;
57+
import java.util.function.Consumer;
5758
import java.util.function.Function;
5859
import java.util.regex.Pattern;
5960
import java.util.stream.Collectors;
@@ -370,6 +371,16 @@ public static void writeFaPListFragment(JPackageCommand cmd, XMLStreamWriter xml
370371
}).run();
371372
}
372373

374+
public static Consumer<JPackageCommand> useKeychain(MacSign.ResolvedKeychain keychain) {
375+
return useKeychain(keychain.spec().keychain());
376+
}
377+
378+
public static Consumer<JPackageCommand> useKeychain(MacSign.Keychain keychain) {
379+
return cmd -> {
380+
useKeychain(cmd, keychain);
381+
};
382+
}
383+
373384
public static JPackageCommand useKeychain(JPackageCommand cmd, MacSign.ResolvedKeychain keychain) {
374385
return useKeychain(cmd, keychain.spec().keychain());
375386
}

test/jdk/tools/jpackage/macosx/EntitlementsTest.java

Lines changed: 72 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,26 @@
2121
* questions.
2222
*/
2323

24+
import static jdk.jpackage.internal.util.PListWriter.writeBoolean;
2425
import static jdk.jpackage.internal.util.PListWriter.writeDict;
2526
import static jdk.jpackage.internal.util.PListWriter.writePList;
26-
import static jdk.jpackage.internal.util.PListWriter.writeBoolean;
2727
import static jdk.jpackage.internal.util.XmlUtils.createXml;
2828
import static jdk.jpackage.internal.util.XmlUtils.toXmlConsumer;
29+
import static jdk.jpackage.internal.util.function.ThrowingConsumer.toConsumer;
2930

3031
import java.io.IOException;
3132
import java.nio.file.Path;
32-
import java.util.Date;
33-
33+
import java.util.function.Consumer;
34+
import java.util.stream.Stream;
35+
import jdk.jpackage.internal.util.function.ThrowingConsumer;
36+
import jdk.jpackage.test.AdditionalLauncher;
37+
import jdk.jpackage.test.Annotations.Parameter;
38+
import jdk.jpackage.test.Annotations.Test;
3439
import jdk.jpackage.test.JPackageCommand;
40+
import jdk.jpackage.test.MacHelper;
41+
import jdk.jpackage.test.MacHelper.SignKeyOption;
42+
import jdk.jpackage.test.MacSign;
3543
import jdk.jpackage.test.TKit;
36-
import jdk.jpackage.test.Annotations.Test;
37-
import jdk.jpackage.test.Annotations.Parameter;
3844

3945
/*
4046
* Test generates signed app-image with custom entitlements file from the
@@ -61,7 +67,7 @@
6167
*/
6268
public class EntitlementsTest {
6369

64-
void createEntitlementsFile(Path file, boolean microphone) throws IOException {
70+
private static void createEntitlementsFile(Path file, boolean microphone) throws IOException {
6571
createXml(file, xml -> {
6672
writePList(xml, toXmlConsumer(() -> {
6773
writeDict(xml, toXmlConsumer(() -> {
@@ -77,48 +83,72 @@ void createEntitlementsFile(Path file, boolean microphone) throws IOException {
7783
});
7884
}
7985

80-
@Test
81-
// ({"--mac-app-store", doMacEntitlements", "doResources"})
82-
@Parameter({"false", "true", "false"})
83-
@Parameter({"false", "false", "true"})
84-
@Parameter({"false", "true", "true"})
85-
@Parameter({"true", "true", "false"})
86-
@Parameter({"true", "false", "true"})
87-
@Parameter({"true", "true", "true"})
88-
public void test(boolean appStore, boolean doMacEntitlements, boolean doResources) throws Exception {
89-
final Path macEntitlementsFile;
90-
final Path resourcesDir;
91-
92-
if (doMacEntitlements) {
93-
macEntitlementsFile = TKit.createTempFile("EntitlementsTest.plist");
86+
public enum EntitlementsSource implements Consumer<JPackageCommand> {
87+
CMDLINE(cmd -> {
88+
var macEntitlementsFile = TKit.createTempFile("foo.plist");
9489
createEntitlementsFile(macEntitlementsFile, true);
95-
} else {
96-
macEntitlementsFile = null;
97-
}
90+
cmd.addArguments("--mac-entitlements", macEntitlementsFile);
91+
}),
92+
RESOURCE_DIR(cmd -> {
93+
if (!cmd.hasArgument("--resource-dir")) {
94+
cmd.setArgumentValue("--resource-dir", TKit.createTempDirectory("resources"));
95+
}
9896

99-
if (doResources) {
100-
resourcesDir = TKit.createTempDirectory("resources");
101-
createEntitlementsFile(resourcesDir.resolve("EntitlementsTest.entitlements"), false);
102-
} else {
103-
resourcesDir = null;
104-
}
97+
var resourcesDir = Path.of(cmd.getArgumentValue("--resource-dir"));
98+
createEntitlementsFile(resourcesDir.resolve(cmd.name() + ".entitlements"), false);
99+
}),
100+
;
105101

106-
JPackageCommand cmd = JPackageCommand.helloAppImage()
107-
.addArguments("--mac-sign", "--mac-signing-keychain",
108-
SigningBase.getKeyChain(), "--mac-app-image-sign-identity",
109-
SigningBase.getAppCert(SigningBase.CertIndex.ASCII_INDEX.value()));
110-
if (appStore) {
111-
cmd.addArguments("--mac-app-store");
102+
EntitlementsSource(ThrowingConsumer<JPackageCommand> initializer) {
103+
this.initializer = toConsumer(initializer);
112104
}
113-
if (doMacEntitlements) {
114-
cmd.addArguments("--mac-entitlements",
115-
macEntitlementsFile.toAbsolutePath().toString());
116-
}
117-
if (doResources) {
118-
cmd.addArguments("--resource-dir",
119-
resourcesDir.toAbsolutePath().toString());
105+
106+
@Override
107+
public void accept(JPackageCommand cmd) {
108+
initializer.accept(cmd);
120109
}
121110

111+
private final Consumer<JPackageCommand> initializer;
112+
}
113+
114+
@Test
115+
@Parameter({"CMDLINE"})
116+
@Parameter({"RESOURCE_DIR"})
117+
@Parameter({"CMDLINE", "RESOURCE_DIR"})
118+
public static void test(EntitlementsSource... entitlementsSources) {
119+
MacSign.withKeychain(toConsumer(keychain -> {
120+
test(keychain, Stream.of(entitlementsSources));
121+
}), SigningBase.StandardKeychain.MAIN.keychain());
122+
}
123+
124+
@Test
125+
@Parameter({"CMDLINE"})
126+
@Parameter({"RESOURCE_DIR"})
127+
@Parameter({"CMDLINE", "RESOURCE_DIR"})
128+
public static void testAppStore(EntitlementsSource... entitlementsSources) {
129+
MacSign.withKeychain(toConsumer(keychain -> {
130+
test(keychain, Stream.concat(Stream.of(cmd -> {
131+
cmd.addArguments("--mac-app-store");
132+
// Ignore externally supplied runtime as it may have the "bin"
133+
// directory that will cause jpackage to bail out.
134+
cmd.ignoreDefaultRuntime(true);
135+
}), Stream.of(entitlementsSources)));
136+
}), SigningBase.StandardKeychain.MAIN.keychain());
137+
}
138+
139+
private static void test(MacSign.ResolvedKeychain keychain, Stream<Consumer<JPackageCommand>> mutators) {
140+
141+
var cmd = JPackageCommand.helloAppImage();
142+
143+
cmd.mutate(MacHelper.useKeychain(keychain)).mutate(new SignKeyOption(
144+
SignKeyOption.Type.SIGN_KEY_IDENTITY,
145+
SigningBase.StandardCertificateRequest.CODESIGN.spec()
146+
)::addTo);
147+
148+
cmd.mutate(new AdditionalLauncher("x")::applyTo);
149+
150+
mutators.forEach(cmd::mutate);
151+
122152
cmd.executeAndAssertHelloAppImageCreated();
123153
}
124154
}

0 commit comments

Comments
 (0)