author | herrick |
Wed, 16 Oct 2019 09:57:23 -0400 | |
branch | JDK-8200758-branch |
changeset 58647 | 2c43b89b1679 |
permissions | -rw-r--r-- |
58647
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
1 |
/* |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
2 |
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
4 |
* |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. Oracle designates this |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
8 |
* particular file as subject to the "Classpath" exception as provided |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
9 |
* by Oracle in the LICENSE file that accompanied this code. |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
10 |
* |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
15 |
* accompanied this code). |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
16 |
* |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
17 |
* You should have received a copy of the GNU General Public License version |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
20 |
* |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
22 |
* or visit www.oracle.com if you need additional information or have any |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
23 |
* questions. |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
24 |
*/ |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
25 |
package jdk.jpackage.internal; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
26 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
27 |
import java.io.*; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
28 |
import java.nio.charset.StandardCharsets; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
29 |
import java.nio.file.Files; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
30 |
import java.nio.file.Path; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
31 |
import java.util.HashMap; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
32 |
import java.util.Iterator; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
33 |
import java.util.List; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
34 |
import java.util.Map; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
35 |
import jdk.jpackage.internal.resources.ResourceLocator; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
36 |
import static org.hamcrest.CoreMatchers.is; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
37 |
import static org.hamcrest.CoreMatchers.not; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
38 |
import static org.junit.Assert.*; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
39 |
import org.junit.Rule; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
40 |
import org.junit.Test; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
41 |
import org.junit.rules.TemporaryFolder; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
42 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
43 |
public class OverridableResourceTest { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
44 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
45 |
@Rule |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
46 |
public final TemporaryFolder tempFolder = new TemporaryFolder(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
47 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
48 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
49 |
public void testDefault() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
50 |
byte[] actualBytes = saveToFile(new OverridableResource(DEFAULT_NAME)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
51 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
52 |
try (InputStream is = ResourceLocator.class.getResourceAsStream( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
53 |
DEFAULT_NAME)) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
54 |
assertArrayEquals(is.readAllBytes(), actualBytes); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
55 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
56 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
57 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
58 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
59 |
public void testDefaultWithSubstitution() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
60 |
OverridableResource resource = new OverridableResource(DEFAULT_NAME); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
61 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
62 |
List<String> linesBeforeSubstitution = convertToStringList(saveToFile( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
63 |
resource)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
64 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
65 |
if (SUBSTITUTION_DATA.size() != 1) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
66 |
// Test setup issue |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
67 |
throw new IllegalArgumentException( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
68 |
"Substitution map should contain only a single entry"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
69 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
70 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
71 |
resource.setSubstitutionData(SUBSTITUTION_DATA); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
72 |
List<String> linesAfterSubstitution = convertToStringList(saveToFile( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
73 |
resource)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
74 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
75 |
assertEquals(linesBeforeSubstitution.size(), linesAfterSubstitution.size()); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
76 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
77 |
Iterator<String> beforeIt = linesBeforeSubstitution.iterator(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
78 |
Iterator<String> afterIt = linesAfterSubstitution.iterator(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
79 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
80 |
var substitutionEntry = SUBSTITUTION_DATA.entrySet().iterator().next(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
81 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
82 |
boolean linesMismatch = false; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
83 |
while (beforeIt.hasNext()) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
84 |
String beforeStr = beforeIt.next(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
85 |
String afterStr = afterIt.next(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
86 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
87 |
if (beforeStr.equals(afterStr)) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
88 |
assertFalse(beforeStr.contains(substitutionEntry.getKey())); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
89 |
} else { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
90 |
linesMismatch = true; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
91 |
assertTrue(beforeStr.contains(substitutionEntry.getKey())); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
92 |
assertTrue(afterStr.contains(substitutionEntry.getValue())); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
93 |
assertFalse(afterStr.contains(substitutionEntry.getKey())); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
94 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
95 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
96 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
97 |
assertTrue(linesMismatch); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
98 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
99 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
100 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
101 |
public void testCustom() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
102 |
testCustom(DEFAULT_NAME); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
103 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
104 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
105 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
106 |
public void testCustomNoDefault() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
107 |
testCustom(null); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
108 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
109 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
110 |
private void testCustom(String defaultName) throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
111 |
List<String> expectedResourceData = List.of("A", "B", "C"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
112 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
113 |
Path customFile = createCustomFile("foo", expectedResourceData); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
114 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
115 |
List<String> actualResourceData = convertToStringList(saveToFile( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
116 |
new OverridableResource(defaultName) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
117 |
.setPublicName(customFile.getFileName()) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
118 |
.setResourceDir(customFile.getParent()))); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
119 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
120 |
assertArrayEquals(expectedResourceData.toArray(String[]::new), |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
121 |
actualResourceData.toArray(String[]::new)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
122 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
123 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
124 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
125 |
public void testCustomtWithSubstitution() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
126 |
testCustomtWithSubstitution(DEFAULT_NAME); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
127 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
128 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
129 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
130 |
public void testCustomtWithSubstitutionNoDefault() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
131 |
testCustomtWithSubstitution(null); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
132 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
133 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
134 |
private void testCustomtWithSubstitution(String defaultName) throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
135 |
final List<String> resourceData = List.of("A", "[BB]", "C", "Foo", |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
136 |
"GoodbyeHello"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
137 |
final Path customFile = createCustomFile("foo", resourceData); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
138 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
139 |
final Map<String, String> substitutionData = new HashMap(Map.of("B", |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
140 |
"Bar", "Foo", "B")); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
141 |
substitutionData.put("Hello", null); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
142 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
143 |
final List<String> expectedResourceData = List.of("A", "[BarBar]", "C", |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
144 |
"B", "Goodbye"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
145 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
146 |
final List<String> actualResourceData = convertToStringList(saveToFile( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
147 |
new OverridableResource(defaultName) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
148 |
.setPublicName(customFile.getFileName()) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
149 |
.setSubstitutionData(substitutionData) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
150 |
.setResourceDir(customFile.getParent()))); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
151 |
assertArrayEquals(expectedResourceData.toArray(String[]::new), |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
152 |
actualResourceData.toArray(String[]::new)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
153 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
154 |
// Don't call setPublicName() |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
155 |
final Path dstFile = tempFolder.newFolder().toPath().resolve(customFile.getFileName()); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
156 |
new OverridableResource(defaultName) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
157 |
.setSubstitutionData(substitutionData) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
158 |
.setResourceDir(customFile.getParent()) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
159 |
.saveToFile(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
160 |
assertArrayEquals(expectedResourceData.toArray(String[]::new), |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
161 |
convertToStringList(Files.readAllBytes(dstFile)).toArray( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
162 |
String[]::new)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
163 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
164 |
// Verify setSubstitutionData() stores a copy of passed in data |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
165 |
Map<String, String> substitutionData2 = new HashMap(substitutionData); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
166 |
var resource = new OverridableResource(defaultName) |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
167 |
.setResourceDir(customFile.getParent()); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
168 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
169 |
resource.setSubstitutionData(substitutionData2); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
170 |
substitutionData2.clear(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
171 |
Files.delete(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
172 |
resource.saveToFile(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
173 |
assertArrayEquals(expectedResourceData.toArray(String[]::new), |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
174 |
convertToStringList(Files.readAllBytes(dstFile)).toArray( |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
175 |
String[]::new)); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
176 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
177 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
178 |
@Test |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
179 |
public void testNoDefault() throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
180 |
Path dstFolder = tempFolder.newFolder().toPath(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
181 |
Path dstFile = dstFolder.resolve(Path.of("foo", "bar")); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
182 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
183 |
new OverridableResource(null).saveToFile(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
184 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
185 |
assertFalse(dstFile.toFile().exists()); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
186 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
187 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
188 |
private final static String DEFAULT_NAME; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
189 |
private final static Map<String, String> SUBSTITUTION_DATA; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
190 |
static { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
191 |
if (Platform.isWindows()) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
192 |
DEFAULT_NAME = "WinLauncher.template"; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
193 |
SUBSTITUTION_DATA = Map.of("COMPANY_NAME", "Foo9090345"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
194 |
} else if (Platform.isLinux()) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
195 |
DEFAULT_NAME = "template.control"; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
196 |
SUBSTITUTION_DATA = Map.of("APPLICATION_PACKAGE", "Package1967"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
197 |
} else if (Platform.isMac()) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
198 |
DEFAULT_NAME = "Info-lite.plist.template"; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
199 |
SUBSTITUTION_DATA = Map.of("DEPLOY_BUNDLE_IDENTIFIER", "12345"); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
200 |
} else { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
201 |
throw Platform.throwUnknownPlatformError(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
202 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
203 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
204 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
205 |
private byte[] saveToFile(OverridableResource resource) throws IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
206 |
Path dstFile = tempFolder.newFile().toPath(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
207 |
resource.saveToFile(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
208 |
assertThat(0, is(not(dstFile.toFile().length()))); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
209 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
210 |
return Files.readAllBytes(dstFile); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
211 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
212 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
213 |
private Path createCustomFile(String publicName, List<String> data) throws |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
214 |
IOException { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
215 |
Path resourceFolder = tempFolder.newFolder().toPath(); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
216 |
Path customFile = resourceFolder.resolve(publicName); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
217 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
218 |
Files.write(customFile, data); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
219 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
220 |
return customFile; |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
221 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
222 |
|
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
223 |
private static List<String> convertToStringList(byte[] data) { |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
224 |
return List.of(new String(data, StandardCharsets.UTF_8).split("\\R")); |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
225 |
} |
2c43b89b1679
8231862: Decouple DesktopIntegration and LinuxPackageBundler classes
herrick
parents:
diff
changeset
|
226 |
} |