author | herrick |
Fri, 18 Oct 2019 14:14:37 -0400 | |
branch | JDK-8200758-branch |
changeset 58696 | 61c44899b4eb |
parent 58302 | 718bd56695b3 |
permissions | -rw-r--r-- |
58302 | 1 |
/* |
2 |
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. |
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. Oracle designates this |
|
8 |
* particular file as subject to the "Classpath" exception as provided |
|
9 |
* by Oracle in the LICENSE file that accompanied this code. |
|
10 |
* |
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
15 |
* accompanied this code). |
|
16 |
* |
|
17 |
* You should have received a copy of the GNU General Public License version |
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 |
* |
|
21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 |
* or visit www.oracle.com if you need additional information or have any |
|
23 |
* questions. |
|
24 |
*/ |
|
25 |
package jdk.jpackage.internal; |
|
26 |
||
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
27 |
import java.io.IOException; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
28 |
import java.nio.file.Files; |
58302 | 29 |
import java.nio.file.Path; |
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
30 |
import java.util.*; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
31 |
import java.util.function.Consumer; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
32 |
import java.util.function.Predicate; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
33 |
import java.util.function.UnaryOperator; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
34 |
import java.util.stream.Collectors; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
35 |
import java.util.stream.Stream; |
58302 | 36 |
import static org.hamcrest.CoreMatchers.equalTo; |
37 |
import static org.hamcrest.CoreMatchers.not; |
|
38 |
import static org.junit.Assert.*; |
|
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
39 |
import org.junit.Rule; |
58302 | 40 |
import org.junit.Test; |
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
41 |
import org.junit.rules.TemporaryFolder; |
58302 | 42 |
|
43 |
||
44 |
public class PathGroupTest { |
|
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
45 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
46 |
@Rule |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
47 |
public final TemporaryFolder tempFolder = new TemporaryFolder(); |
58302 | 48 |
|
49 |
@Test(expected = NullPointerException.class) |
|
50 |
public void testNullId() { |
|
51 |
new PathGroup(Map.of()).getPath(null); |
|
52 |
} |
|
53 |
||
54 |
@Test |
|
55 |
public void testEmptyPathGroup() { |
|
56 |
PathGroup pg = new PathGroup(Map.of()); |
|
57 |
||
58 |
assertNull(pg.getPath("foo")); |
|
59 |
||
60 |
assertEquals(0, pg.paths().size()); |
|
61 |
assertEquals(0, pg.roots().size()); |
|
62 |
} |
|
63 |
||
64 |
@Test |
|
65 |
public void testRootsSinglePath() { |
|
66 |
final PathGroup pg = new PathGroup(Map.of("main", PATH_FOO)); |
|
67 |
||
68 |
List<Path> paths = pg.paths(); |
|
69 |
assertEquals(1, paths.size()); |
|
70 |
assertEquals(PATH_FOO, paths.iterator().next()); |
|
71 |
||
72 |
List<Path> roots = pg.roots(); |
|
73 |
assertEquals(1, roots.size()); |
|
74 |
assertEquals(PATH_FOO, roots.iterator().next()); |
|
75 |
} |
|
76 |
||
77 |
@Test |
|
78 |
public void testDuplicatedRoots() { |
|
79 |
final PathGroup pg = new PathGroup(Map.of("main", PATH_FOO, "another", |
|
80 |
PATH_FOO, "root", PATH_EMPTY)); |
|
81 |
||
82 |
List<Path> paths = pg.paths(); |
|
83 |
Collections.sort(paths); |
|
84 |
||
85 |
assertEquals(3, paths.size()); |
|
86 |
assertEquals(PATH_EMPTY, paths.get(0)); |
|
87 |
assertEquals(PATH_FOO, paths.get(1)); |
|
88 |
assertEquals(PATH_FOO, paths.get(2)); |
|
89 |
||
90 |
List<Path> roots = pg.roots(); |
|
91 |
assertEquals(1, roots.size()); |
|
92 |
assertEquals(PATH_EMPTY, roots.get(0)); |
|
93 |
} |
|
94 |
||
95 |
@Test |
|
96 |
public void testRoots() { |
|
97 |
final PathGroup pg = new PathGroup(Map.of(1, Path.of("foo"), 2, Path.of( |
|
98 |
"foo", "bar"), 3, Path.of("foo", "bar", "buz"))); |
|
99 |
||
100 |
List<Path> paths = pg.paths(); |
|
101 |
assertEquals(3, paths.size()); |
|
102 |
assertTrue(paths.contains(Path.of("foo"))); |
|
103 |
assertTrue(paths.contains(Path.of("foo", "bar"))); |
|
104 |
assertTrue(paths.contains(Path.of("foo", "bar", "buz"))); |
|
105 |
||
106 |
List<Path> roots = pg.roots(); |
|
107 |
assertEquals(1, roots.size()); |
|
108 |
assertEquals(Path.of("foo"), roots.get(0)); |
|
109 |
} |
|
110 |
||
111 |
@Test |
|
112 |
public void testResolveAt() { |
|
113 |
final PathGroup pg = new PathGroup(Map.of(0, PATH_FOO, 1, PATH_BAR, 2, |
|
114 |
PATH_EMPTY)); |
|
115 |
||
116 |
final Path aPath = Path.of("a"); |
|
117 |
||
118 |
final PathGroup pg2 = pg.resolveAt(aPath); |
|
119 |
assertThat(pg, not(equalTo(pg2))); |
|
120 |
||
121 |
List<Path> paths = pg.paths(); |
|
122 |
assertEquals(3, paths.size()); |
|
123 |
assertTrue(paths.contains(PATH_EMPTY)); |
|
124 |
assertTrue(paths.contains(PATH_FOO)); |
|
125 |
assertTrue(paths.contains(PATH_BAR)); |
|
126 |
assertEquals(PATH_EMPTY, pg.roots().get(0)); |
|
127 |
||
128 |
paths = pg2.paths(); |
|
129 |
assertEquals(3, paths.size()); |
|
130 |
assertTrue(paths.contains(aPath.resolve(PATH_EMPTY))); |
|
131 |
assertTrue(paths.contains(aPath.resolve(PATH_FOO))); |
|
132 |
assertTrue(paths.contains(aPath.resolve(PATH_BAR))); |
|
133 |
assertEquals(aPath, pg2.roots().get(0)); |
|
134 |
} |
|
135 |
||
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
136 |
@Test |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
137 |
public void testTransform() throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
138 |
for (var transform : TransformType.values()) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
139 |
testTransform(false, transform); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
140 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
141 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
142 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
143 |
@Test |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
144 |
public void testTransformWithExcludes() throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
145 |
for (var transform : TransformType.values()) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
146 |
testTransform(true, transform); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
147 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
148 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
149 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
150 |
enum TransformType { Copy, Move, Handler }; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
151 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
152 |
private void testTransform(boolean withExcludes, TransformType transform) |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
153 |
throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
154 |
final PathGroup pg = new PathGroup(Map.of(0, PATH_FOO, 1, PATH_BAR, 2, |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
155 |
PATH_EMPTY, 3, PATH_BAZ)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
156 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
157 |
final Path srcDir = tempFolder.newFolder().toPath(); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
158 |
final Path dstDir = tempFolder.newFolder().toPath(); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
159 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
160 |
Files.createDirectories(srcDir.resolve(PATH_FOO).resolve("a/b/c/d")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
161 |
Files.createFile(srcDir.resolve(PATH_FOO).resolve("a/b/c/file1")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
162 |
Files.createFile(srcDir.resolve(PATH_FOO).resolve("a/b/file2")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
163 |
Files.createFile(srcDir.resolve(PATH_FOO).resolve("a/b/file3")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
164 |
Files.createFile(srcDir.resolve(PATH_BAR)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
165 |
Files.createFile(srcDir.resolve(PATH_EMPTY).resolve("file4")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
166 |
Files.createDirectories(srcDir.resolve(PATH_BAZ).resolve("1/2/3")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
167 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
168 |
var dst = pg.resolveAt(dstDir); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
169 |
var src = pg.resolveAt(srcDir); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
170 |
if (withExcludes) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
171 |
// Exclude from transformation. |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
172 |
src.setPath(new Object(), srcDir.resolve(PATH_FOO).resolve("a/b/c")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
173 |
src.setPath(new Object(), srcDir.resolve(PATH_EMPTY).resolve("file4")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
174 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
175 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
176 |
var srcFilesBeforeTransform = walkFiles(srcDir); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
177 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
178 |
if (transform == TransformType.Handler) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
179 |
List<Map.Entry<Path, Path>> copyFile = new ArrayList<>(); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
180 |
List<Path> createDirectory = new ArrayList<>(); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
181 |
src.transform(dst, new PathGroup.TransformHandler() { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
182 |
@Override |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
183 |
public void copyFile(Path src, Path dst) throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
184 |
copyFile.add(Map.entry(src, dst)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
185 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
186 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
187 |
@Override |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
188 |
public void createDirectory(Path dir) throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
189 |
createDirectory.add(dir); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
190 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
191 |
}); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
192 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
193 |
Consumer<Path> assertFile = path -> { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
194 |
var entry = Map.entry(srcDir.resolve(path), dstDir.resolve(path)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
195 |
assertTrue(copyFile.contains(entry)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
196 |
}; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
197 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
198 |
Consumer<Path> assertDir = path -> { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
199 |
assertTrue(createDirectory.contains(dstDir.resolve(path))); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
200 |
}; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
201 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
202 |
assertEquals(withExcludes ? 3 : 5, copyFile.size()); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
203 |
assertEquals(withExcludes ? 8 : 10, createDirectory.size()); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
204 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
205 |
assertFile.accept(PATH_FOO.resolve("a/b/file2")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
206 |
assertFile.accept(PATH_FOO.resolve("a/b/file3")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
207 |
assertFile.accept(PATH_BAR); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
208 |
assertDir.accept(PATH_FOO.resolve("a/b")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
209 |
assertDir.accept(PATH_FOO.resolve("a")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
210 |
assertDir.accept(PATH_FOO); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
211 |
assertDir.accept(PATH_BAZ); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
212 |
assertDir.accept(PATH_BAZ.resolve("1")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
213 |
assertDir.accept(PATH_BAZ.resolve("1/2")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
214 |
assertDir.accept(PATH_BAZ.resolve("1/2/3")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
215 |
assertDir.accept(PATH_EMPTY); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
216 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
217 |
if (!withExcludes) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
218 |
assertFile.accept(PATH_FOO.resolve("a/b/c/file1")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
219 |
assertFile.accept(PATH_EMPTY.resolve("file4")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
220 |
assertDir.accept(PATH_FOO.resolve("a/b/c/d")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
221 |
assertDir.accept(PATH_FOO.resolve("a/b/c")); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
222 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
223 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
224 |
assertArrayEquals(new Path[] { Path.of("") }, walkFiles(dstDir)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
225 |
return; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
226 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
227 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
228 |
if (transform == TransformType.Copy) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
229 |
src.copy(dst); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
230 |
} else if (transform == TransformType.Move) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
231 |
src.move(dst); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
232 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
233 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
234 |
final List<Path> excludedPaths; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
235 |
if (withExcludes) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
236 |
excludedPaths = List.of( |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
237 |
PATH_EMPTY.resolve("file4"), |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
238 |
PATH_FOO.resolve("a/b/c") |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
239 |
); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
240 |
} else { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
241 |
excludedPaths = Collections.emptyList(); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
242 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
243 |
UnaryOperator<Path[]> removeExcludes = paths -> { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
244 |
return Stream.of(paths) |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
245 |
.filter(path -> !excludedPaths.stream().anyMatch( |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
246 |
path::startsWith)) |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
247 |
.collect(Collectors.toList()).toArray(Path[]::new); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
248 |
}; |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
249 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
250 |
var dstFiles = walkFiles(dstDir); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
251 |
assertArrayEquals(removeExcludes.apply(srcFilesBeforeTransform), dstFiles); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
252 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
253 |
if (transform == TransformType.Copy) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
254 |
assertArrayEquals(dstFiles, removeExcludes.apply(walkFiles(srcDir))); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
255 |
} else if (transform == TransformType.Move) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
256 |
assertFalse(Files.exists(srcDir)); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
257 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
258 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
259 |
|
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
260 |
private static Path[] walkFiles(Path root) throws IOException { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
261 |
try (var files = Files.walk(root)) { |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
262 |
return files.map(root::relativize).sorted().collect( |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
263 |
Collectors.toList()).toArray(Path[]::new); |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
264 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
265 |
} |
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
266 |
|
58302 | 267 |
private final static Path PATH_FOO = Path.of("foo"); |
268 |
private final static Path PATH_BAR = Path.of("bar"); |
|
58696
61c44899b4eb
8223325: Improve wix sources generated by jpackage
herrick
parents:
58302
diff
changeset
|
269 |
private final static Path PATH_BAZ = Path.of("baz"); |
58302 | 270 |
private final static Path PATH_EMPTY = Path.of(""); |
271 |
} |