Add test to check that a file cache is empty after VFS.close().
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java
index 4c22157..51b829c 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/impl/DefaultFileSystemManagerTest.java
@@ -25,6 +25,7 @@
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemManager;
+import org.apache.commons.vfs2.FilesCache;
import org.apache.commons.vfs2.VFS;
import org.apache.commons.vfs2.cache.NullFilesCache;
import org.apache.commons.vfs2.provider.ram.RamFileProvider;
@@ -77,6 +78,43 @@
}
}
+ @Test
+ public void testFileCacheEmptyAfterVFSClose() throws FileSystemException {
+ final FileSystemManager manager = VFS.getManager();
+ Assert.assertNotNull(manager);
+ try (final FileObject fileObject = manager
+ .resolveFile(Paths.get("src/test/resources/test-data/read-tests/file1.txt").toUri())) {
+ Assert.assertTrue(fileObject.exists());
+ final FilesCache filesCache = manager.getFilesCache();
+ final FileName name = fileObject.getName();
+ // Make sure we have file object in the cache.
+ Assert.assertNotNull(filesCache.getFile(fileObject.getFileSystem(), name));
+ VFS.close();
+ // Cache MUST now be empty.
+ Assert.assertNull(filesCache.getFile(fileObject.getFileSystem(), name));
+ }
+ }
+
+ @Test
+ public void testFileCacheEmptyAfterManagerClose() throws FileSystemException {
+ final FileSystemManager manager = VFS.getManager();
+ Assert.assertNotNull(manager);
+ try (final FileObject fileObject = manager
+ .resolveFile(Paths.get("src/test/resources/test-data/read-tests/file1.txt").toUri())) {
+ Assert.assertTrue(fileObject.exists());
+ final FilesCache filesCache = manager.getFilesCache();
+ final FileName name = fileObject.getName();
+ // Make sure we have file object in the cache.
+ Assert.assertNotNull(filesCache.getFile(fileObject.getFileSystem(), name));
+ manager.close();
+ // Cache MUST now be empty.
+ Assert.assertNull(filesCache.getFile(fileObject.getFileSystem(), name));
+ } finally {
+ // Makes sure we reset the singleton or other tests will fail.
+ VFS.close();
+ }
+ }
+
/**
* Even if the file name is absolute, the base file must be given. This is an inconsistency in the API, but it is
* documented as such.