Skip to content

Commit 16e9d03

Browse files
committed
add locking tests
1 parent b3bf0cb commit 16e9d03

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/test/java/com/github/marschall/memoryfilesystem/FileSystemCompatibilityTest.java

+40
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.lang.annotation.Retention;
2626
import java.lang.annotation.Target;
2727
import java.nio.ByteBuffer;
28+
import java.nio.channels.FileChannel;
29+
import java.nio.channels.FileLock;
2830
import java.nio.channels.NonReadableChannelException;
2931
import java.nio.channels.SeekableByteChannel;
3032
import java.nio.file.DirectoryStream;
@@ -34,6 +36,7 @@
3436
import java.nio.file.NoSuchFileException;
3537
import java.nio.file.Path;
3638
import java.nio.file.PathMatcher;
39+
import java.nio.file.StandardOpenOption;
3740
import java.nio.file.attribute.BasicFileAttributeView;
3841
import java.util.ArrayList;
3942
import java.util.Arrays;
@@ -365,4 +368,41 @@ void subPath(boolean useDefault) {
365368
assertThrows(IllegalArgumentException.class, () -> target.subpath(0, 0));
366369
}
367370

371+
@CompatibilityTest
372+
void moveWhileOpen(boolean useDefault) throws IOException {
373+
FileSystem fileSystem = this.getFileSystem(useDefault);
374+
Path folder = fileSystem.getPath("target");
375+
if (!useDefault) {
376+
Files.createDirectory(folder);
377+
}
378+
Path originalFileName = Files.createTempFile(folder, "locked", ".txt");
379+
Path newFileName = folder.resolve("new_name.txt");
380+
try (FileChannel channel = FileChannel.open(originalFileName, StandardOpenOption.WRITE)) {
381+
Files.move(originalFileName, newFileName);
382+
} finally {
383+
Files.deleteIfExists(originalFileName);
384+
Files.deleteIfExists(newFileName);
385+
}
386+
}
387+
388+
@CompatibilityTest
389+
void moveWhileLocked(boolean useDefault) throws IOException {
390+
FileSystem fileSystem = this.getFileSystem(useDefault);
391+
Path folder = fileSystem.getPath("target");
392+
if (!useDefault) {
393+
Files.createDirectory(folder);
394+
}
395+
Path originalFileName = Files.createTempFile(folder, "locked", ".txt");
396+
Path newFileName = folder.resolve("new_name.txt");
397+
try (FileChannel channel = FileChannel.open(originalFileName, StandardOpenOption.WRITE)) {
398+
try (FileLock lock = channel.tryLock()) {
399+
assertNotNull(lock);
400+
Files.move(originalFileName, newFileName);
401+
}
402+
} finally {
403+
Files.deleteIfExists(originalFileName);
404+
Files.deleteIfExists(newFileName);
405+
}
406+
}
407+
368408
}

0 commit comments

Comments
 (0)