Skip to content

Commit ad8c543

Browse files
committed
Merge branch 'hotfix/1.9.15' into maintanance/1.9.x
2 parents 70a809c + dd06d92 commit ad8c543

File tree

3 files changed

+76
-22
lines changed

3 files changed

+76
-22
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>org.cryptomator</groupId>
44
<artifactId>cryptofs</artifactId>
5-
<version>1.9.14</version>
5+
<version>1.9.15</version>
66
<name>Cryptomator Crypto Filesystem</name>
77
<description>This library provides the Java filesystem provider used by Cryptomator.</description>
88
<url>https://github.com/cryptomator/cryptofs</url>

src/main/java/org/cryptomator/cryptofs/LongFileNameProvider.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,8 @@ public void persist() {
115115
private void persistInternal() throws IOException {
116116
Path longNameFile = c9sPath.resolve(INFLATED_FILE_NAME);
117117
Files.createDirectories(c9sPath);
118-
try (WritableByteChannel ch = Files.newByteChannel(longNameFile, StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW)) {
118+
try (WritableByteChannel ch = Files.newByteChannel(longNameFile, StandardOpenOption.WRITE, StandardOpenOption.CREATE)) {
119119
ch.write(UTF_8.encode(longName));
120-
} catch (FileAlreadyExistsException e) {
121-
// no-op: if the file already exists, we assume its content to be what we want (or we found a SHA1 collision ;-))
122-
assert Arrays.equals(Files.readAllBytes(longNameFile), longName.getBytes(UTF_8));
123120
}
124121
}
125122
}

src/test/java/org/cryptomator/cryptofs/CryptoFileSystemProviderIntegrationTest.java

Lines changed: 74 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -388,44 +388,101 @@ public void testRemoveOtherSymlink() throws IOException {
388388

389389
@Test
390390
@Order(9)
391-
@DisplayName("mkdir '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet'")
391+
@DisplayName("ln -s foo '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen'")
392+
public void testCreateSymlinkWithLongName() throws IOException {
393+
Path target = fs1.getPath("/foo");
394+
Assumptions.assumeTrue(Files.isRegularFile(target));
395+
Path longNameLink = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
396+
Files.createSymbolicLink(longNameLink, target);
397+
MatcherAssert.assertThat(MoreFiles.listFiles(fs1.getPath("/")), Matchers.hasItem(longNameLink));
398+
Assertions.assertTrue(Files.exists(longNameLink));
399+
}
400+
401+
@Test
402+
@Order(10)
403+
@DisplayName("mv '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen' 'Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
404+
public void testMoveSymlinkWithLongNameToAnotherLongName() throws IOException {
405+
Path longNameSource = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
406+
Assumptions.assumeTrue(Files.isSymbolicLink(longNameSource));
407+
Path longNameTarget = longNameSource.resolveSibling("Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
408+
Files.move(longNameSource, longNameTarget);
409+
Assertions.assertTrue(Files.exists(longNameTarget));
410+
Assertions.assertTrue(Files.notExists(longNameSource));
411+
}
412+
413+
@Test
414+
@Order(11)
415+
@DisplayName("rm -r '/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
416+
public void testRemoveSymlinkWithLongName() throws IOException {
417+
Path longNamePath = fs1.getPath("/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
418+
Files.delete(longNamePath);
419+
Assertions.assertTrue(Files.notExists(longNamePath));
420+
}
421+
422+
@Test
423+
@Order(12)
424+
@DisplayName("mkdir '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen'")
392425
public void testCreateDirWithLongName() throws IOException {
393-
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet");
426+
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
394427
Files.createDirectory(longNamePath);
395428
Assertions.assertTrue(Files.isDirectory(longNamePath));
396429
MatcherAssert.assertThat(MoreFiles.listFiles(fs1.getPath("/")), Matchers.hasItem(longNamePath));
397430
}
398431

399432
@Test
400-
@Order(10)
401-
@DisplayName("rm -r '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet'")
433+
@Order(13)
434+
@DisplayName("mv '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen' 'Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
435+
public void testMoveDirWithLongNameToAnotherLongName() throws IOException {
436+
Path longNameSource = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
437+
Assumptions.assumeTrue(Files.isDirectory(longNameSource));
438+
Path longNameTarget = longNameSource.resolveSibling("Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
439+
Files.move(longNameSource, longNameTarget);
440+
Assertions.assertTrue(Files.exists(longNameTarget));
441+
Assertions.assertTrue(Files.notExists(longNameSource));
442+
}
443+
444+
@Test
445+
@Order(14)
446+
@DisplayName("rm -r '/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
402447
public void testRemoveDirWithLongName() throws IOException {
403-
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet");
448+
Path longNamePath = fs1.getPath("/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
404449
Files.delete(longNamePath);
405450
Assertions.assertTrue(Files.notExists(longNamePath));
406451
}
407452

408453
@Test
409-
@Order(11)
410-
@DisplayName("touch '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet'")
454+
@Order(15)
455+
@DisplayName("touch '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen'")
411456
public void testCreateFileWithLongName() throws IOException {
412-
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet");
457+
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
413458
Files.createFile(longNamePath);
414459
Assertions.assertTrue(Files.isRegularFile(longNamePath));
415460
MatcherAssert.assertThat(MoreFiles.listFiles(fs1.getPath("/")), Matchers.hasItem(longNamePath));
416461
}
417462

418463
@Test
419-
@Order(12)
420-
@DisplayName("rm '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet'")
464+
@Order(16)
465+
@DisplayName("mv '/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen' 'Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
466+
public void testMoveFileWithLongNameToAnotherLongName() throws IOException {
467+
Path longNameSource = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen");
468+
Assumptions.assumeTrue(Files.isRegularFile(longNameSource));
469+
Path longNameTarget = longNameSource.resolveSibling("Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
470+
Files.move(longNameSource, longNameTarget);
471+
Assertions.assertTrue(Files.exists(longNameTarget));
472+
Assertions.assertTrue(Files.notExists(longNameSource));
473+
}
474+
475+
@Test
476+
@Order(17)
477+
@DisplayName("rm -r '/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan'")
421478
public void testRemoveFileWithLongName() throws IOException {
422-
Path longNamePath = fs1.getPath("/Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet Telefon Energie Wasser Webseitengeraffel Bus Bahn Mietwagen Internet");
479+
Path longNamePath = fs1.getPath("/Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan Antarnat Talafan Anargaa Wassar Wabsaatangaraffal Bas Bahn Maatwagan");
423480
Files.delete(longNamePath);
424481
Assertions.assertTrue(Files.notExists(longNamePath));
425482
}
426483

427484
@Test
428-
@Order(13)
485+
@Order(18)
429486
@DisplayName("cp fs1:/foo fs2:/bar")
430487
public void testCopyFileAcrossFilesystem() throws IOException {
431488
Path file1 = fs1.getPath("/foo");
@@ -439,7 +496,7 @@ public void testCopyFileAcrossFilesystem() throws IOException {
439496
}
440497

441498
@Test
442-
@Order(14)
499+
@Order(19)
443500
@DisplayName("echo 'goodbye world' > /foo")
444501
public void testWriteToFile() throws IOException {
445502
Path file1 = fs1.getPath("/foo");
@@ -448,7 +505,7 @@ public void testWriteToFile() throws IOException {
448505
}
449506

450507
@Test
451-
@Order(15)
508+
@Order(20)
452509
@DisplayName("cp -f fs1:/foo fs2:/bar")
453510
public void testCopyFileAcrossFilesystemReplaceExisting() throws IOException {
454511
Path file1 = fs1.getPath("/foo");
@@ -462,7 +519,7 @@ public void testCopyFileAcrossFilesystemReplaceExisting() throws IOException {
462519
}
463520

464521
@Test
465-
@Order(16)
522+
@Order(21)
466523
@DisplayName("readattr /attributes.txt")
467524
public void testLazinessOfFileAttributeViews() throws IOException {
468525
Path file = fs1.getPath("/attributes.txt");
@@ -487,7 +544,7 @@ public void testLazinessOfFileAttributeViews() throws IOException {
487544
}
488545

489546
@Test
490-
@Order(17)
547+
@Order(22)
491548
@DisplayName("ln -s /linked/targetY /links/linkX")
492549
public void testSymbolicLinks() throws IOException {
493550
Path linksDir = fs1.getPath("/links");
@@ -526,7 +583,7 @@ public void testSymbolicLinks() throws IOException {
526583
}
527584

528585
@Test
529-
@Order(18)
586+
@Order(22)
530587
@DisplayName("mv -f fs1:/foo fs2:/baz")
531588
public void testMoveFileFromOneCryptoFileSystemToAnother() throws IOException {
532589
Path file1 = fs1.getPath("/foo");

0 commit comments

Comments
 (0)