|
22 | 22 | */
|
23 | 23 |
|
24 | 24 | /* @test
|
25 |
| - * @bug 8295753 |
| 25 | + * @bug 8295753 8306882 |
26 | 26 | * @summary Verify correct operation of Path.toRealPath
|
27 | 27 | * @library .. /test/lib
|
28 | 28 | * @build ToRealPath jdk.test.lib.Platform
|
@@ -142,6 +142,52 @@ public void eliminateDotsNoFollow() throws IOException {
|
142 | 142 | DIR.toRealPath(NOFOLLOW_LINKS));
|
143 | 143 | }
|
144 | 144 |
|
| 145 | + @Test |
| 146 | + @EnabledIf("supportsLinks") |
| 147 | + public void noCollapseDots1() throws IOException { |
| 148 | + Path subPath = DIR.resolve(Path.of("dir", "subdir")); |
| 149 | + Path sub = Files.createDirectories(subPath); |
| 150 | + System.out.println("sub: " + sub); |
| 151 | + Files.createSymbolicLink(LINK, sub); |
| 152 | + System.out.println("LINK: " + LINK + " -> " + sub); |
| 153 | + Path p = Path.of("..", "..", FILE.getFileName().toString()); |
| 154 | + System.out.println("p: " + p); |
| 155 | + Path path = LINK.resolve(p); |
| 156 | + System.out.println("path: " + path); |
| 157 | + System.out.println("no follow: " + path.toRealPath(NOFOLLOW_LINKS)); |
| 158 | + assertEquals(path.toRealPath(NOFOLLOW_LINKS), path); |
| 159 | + |
| 160 | + Files.delete(sub); |
| 161 | + Files.delete(sub.getParent()); |
| 162 | + Files.delete(LINK); |
| 163 | + } |
| 164 | + |
| 165 | + @Test |
| 166 | + @EnabledIf("supportsLinks") |
| 167 | + public void noCollapseDots2() throws IOException { |
| 168 | + Path subPath = DIR.resolve(Path.of("dir", "subdir")); |
| 169 | + Path sub = Files.createDirectories(subPath); |
| 170 | + Path out = Files.createFile(DIR.resolve(Path.of("out.txt"))); |
| 171 | + Path aaa = DIR.resolve(Path.of("aaa")); |
| 172 | + Files.createSymbolicLink(aaa, sub); |
| 173 | + System.out.println("aaa: " + aaa + " -> " + sub); |
| 174 | + Path bbb = DIR.resolve(Path.of("bbb")); |
| 175 | + Files.createSymbolicLink(bbb, sub); |
| 176 | + System.out.println("bbb: " + bbb + " -> " + sub); |
| 177 | + Path p = Path.of("aaa", "..", "..", "bbb", "..", "..", "out.txt"); |
| 178 | + Path path = DIR.resolve(p); |
| 179 | + System.out.println("path: " + path); |
| 180 | + System.out.println("no follow: " + path.toRealPath(NOFOLLOW_LINKS)); |
| 181 | + assertEquals(path.toRealPath(NOFOLLOW_LINKS), path); |
| 182 | + System.out.println(path.toRealPath()); |
| 183 | + |
| 184 | + Files.delete(sub); |
| 185 | + Files.delete(sub.getParent()); |
| 186 | + Files.delete(out); |
| 187 | + Files.delete(aaa); |
| 188 | + Files.delete(bbb); |
| 189 | + } |
| 190 | + |
145 | 191 | @Test
|
146 | 192 | @EnabledOnOs(OS.MAC)
|
147 | 193 | public final void macOSTests() throws IOException {
|
@@ -180,12 +226,14 @@ public final void macOSTests() throws IOException {
|
180 | 226 | assertEquals(noFollow.getName(nc - 4), Path.of("theLink"));
|
181 | 227 | assertEquals(noFollow.getName(nc - 1), Path.of("theTarget"));
|
182 | 228 |
|
| 229 | + Files.delete(theLink); |
183 | 230 | Files.delete(theTarget);
|
184 | 231 | }
|
185 | 232 |
|
186 | 233 | @AfterAll
|
187 | 234 | public static void cleanup() throws IOException {
|
188 |
| - Files.delete(SUBDIR); |
189 | 235 | Files.delete(FILE);
|
| 236 | + Files.delete(SUBDIR); |
| 237 | + Files.delete(DIR); |
190 | 238 | }
|
191 | 239 | }
|
0 commit comments