]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Add test code for using wildcard on Windows.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 9 Jun 2010 22:08:49 +0000 (18:08 -0400)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 9 Jun 2010 22:08:49 +0000 (18:08 -0400)
SVN-Revision: 2457

libarchive/test/test_read_disk_directory_traversals.c

index 0336df70f3d327249f85cbf0ea6464c0321f5a84..99e4a38a9a8d42643835fa3f38eb259c95d88aea 100644 (file)
@@ -163,5 +163,49 @@ DEFINE_TEST(test_read_disk_directory_traversals)
 
        /* Destroy the archive. */
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       /*
+        * Test for wildcard '*' or '?'
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       assert((a = archive_read_disk_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_open(a, "dir1/*1"));
+
+       /* dir1/file1 */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
+       assertEqualString(archive_entry_pathname(ae), "dir1/file1");
+       assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+       assertEqualInt(archive_entry_size(ae), 10);
+       //assertEqualInt(archive_read_data_block(a, &p, &size, &offset), 0);
+       //assertEqualInt((int)size, 10);
+       //assertEqualInt((int)offset, 0);
+       //assertEqualInt(memcmp(p, "0123456789", 10), 0);
+
+       /* dir1/sub1 */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
+       assertEqualString(archive_entry_pathname(ae), "dir1/sub1");
+       assertEqualInt(archive_entry_filetype(ae), AE_IFDIR);
+
+       /* Descend into the current object */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_descend(a));
+
+       /* dir1/sub1/file1 */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
+       assertEqualString(archive_entry_pathname(ae), "dir1/sub1/file1");
+       assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+       assertEqualInt(archive_entry_size(ae), 10);
+       //assertEqualInt(archive_read_data_block(a, &p, &size, &offset), 0);
+       //assertEqualInt((int)size, 10);
+       //assertEqualInt((int)offset, 0);
+       //assertEqualInt(memcmp(p, "0123456789", 10), 0);
+
+       /* There is no entry. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header2(a, ae));
+
+       /* Destroy the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+#endif
+
        archive_entry_free(ae);
 }