diff options
Diffstat (limited to 'libziparchive/zip_archive_test.cc')
-rw-r--r-- | libziparchive/zip_archive_test.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libziparchive/zip_archive_test.cc b/libziparchive/zip_archive_test.cc index 4775de0..c8dafa9 100644 --- a/libziparchive/zip_archive_test.cc +++ b/libziparchive/zip_archive_test.cc @@ -17,6 +17,7 @@ #include "ziparchive/zip_archive.h" #include <errno.h> +#include <fcntl.h> #include <getopt.h> #include <stdio.h> #include <unistd.h> @@ -88,6 +89,26 @@ TEST(ziparchive, OpenMissing) { ASSERT_EQ(-1, GetFileDescriptor(handle)); } +TEST(ziparchive, OpenAssumeFdOwnership) { + int fd = open((test_data_dir + "/" + kValidZip).c_str(), O_RDONLY); + ASSERT_NE(-1, fd); + ZipArchiveHandle handle; + ASSERT_EQ(0, OpenArchiveFd(fd, "OpenWithAssumeFdOwnership", &handle)); + CloseArchive(handle); + ASSERT_EQ(-1, lseek(fd, 0, SEEK_SET)); + ASSERT_EQ(EBADF, errno); +} + +TEST(ziparchive, OpenDoNotAssumeFdOwnership) { + int fd = open((test_data_dir + "/" + kValidZip).c_str(), O_RDONLY); + ASSERT_NE(-1, fd); + ZipArchiveHandle handle; + ASSERT_EQ(0, OpenArchiveFd(fd, "OpenWithAssumeFdOwnership", &handle, false)); + CloseArchive(handle); + ASSERT_EQ(0, lseek(fd, 0, SEEK_SET)); + close(fd); +} + TEST(ziparchive, Iteration) { ZipArchiveHandle handle; ASSERT_EQ(0, OpenArchiveWrapper(kValidZip, &handle)); |