summaryrefslogtreecommitdiff
path: root/libs/zip/test/test_extract.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/zip/test/test_extract.c')
-rw-r--r--libs/zip/test/test_extract.c199
1 files changed, 0 insertions, 199 deletions
diff --git a/libs/zip/test/test_extract.c b/libs/zip/test/test_extract.c
deleted file mode 100644
index 177a04d..0000000
--- a/libs/zip/test/test_extract.c
+++ /dev/null
@@ -1,199 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <zip.h>
-
-#include "minunit.h"
-
-#if defined(_WIN32) || defined(_WIN64)
-#include <io.h>
-
-#define MKTEMP _mktemp
-#define UNLINK _unlink
-#else
-#define MKTEMP mkstemp
-#define UNLINK unlink
-#endif
-
-static char ZIPNAME[L_tmpnam + 1] = {0};
-
-#define TESTDATA1 "Some test data 1...\0"
-#define TESTDATA2 "Some test data 2...\0"
-
-void test_setup(void) {
- strncpy(ZIPNAME, "z-XXXXXX\0", L_tmpnam);
- MKTEMP(ZIPNAME);
-
- struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
-
- zip_entry_open(zip, "test/test-1.txt");
- zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1));
- zip_entry_close(zip);
-
- zip_entry_open(zip, "test\\test-2.txt");
- zip_entry_write(zip, TESTDATA2, strlen(TESTDATA2));
- zip_entry_close(zip);
-
- zip_entry_open(zip, "test\\empty/");
- zip_entry_close(zip);
-
- zip_entry_open(zip, "empty/");
- zip_entry_close(zip);
-
- zip_entry_open(zip, "dotfiles/.test");
- zip_entry_write(zip, TESTDATA2, strlen(TESTDATA2));
- zip_entry_close(zip);
-
- zip_close(zip);
-}
-
-void test_teardown(void) {
- UNLINK("test/test-1.txt");
- UNLINK("test/test-2.txt");
- UNLINK("test/empty");
- UNLINK("test");
- UNLINK("empty");
- UNLINK("dotfiles/.test");
- UNLINK("dotfiles");
- UNLINK(ZIPNAME);
-}
-
-#define UNUSED(x) (void)x
-
-struct buffer_t {
- char *data;
- size_t size;
-};
-
-static size_t on_extract(void *arg, uint64_t offset, const void *data,
- size_t size) {
- UNUSED(offset);
-
- struct buffer_t *buf = (struct buffer_t *)arg;
- buf->data = realloc(buf->data, buf->size + size + 1);
-
- memcpy(&(buf->data[buf->size]), data, size);
- buf->size += size;
- buf->data[buf->size] = 0;
-
- return size;
-}
-
-MU_TEST(test_extract) {
- struct buffer_t buf;
-
- struct zip_t *zip = zip_open(ZIPNAME, 0, 'r');
- mu_check(zip != NULL);
-
- memset((void *)&buf, 0, sizeof(struct buffer_t));
-
- mu_assert_int_eq(0, zip_entry_open(zip, "test/test-1.txt"));
- mu_assert_int_eq(0, zip_entry_extract(zip, on_extract, &buf));
- mu_assert_int_eq(strlen(TESTDATA1), buf.size);
- mu_assert_int_eq(0, strncmp(buf.data, TESTDATA1, buf.size));
- mu_assert_int_eq(0, zip_entry_close(zip));
-
- free(buf.data);
- buf.data = NULL;
- buf.size = 0;
-
- memset((void *)&buf, 0, sizeof(struct buffer_t));
-
- mu_assert_int_eq(0, zip_entry_open(zip, "dotfiles/.test"));
- mu_assert_int_eq(0, zip_entry_extract(zip, on_extract, &buf));
- mu_assert_int_eq(strlen(TESTDATA2), buf.size);
- mu_assert_int_eq(0, strncmp(buf.data, TESTDATA2, buf.size));
- mu_assert_int_eq(0, zip_entry_close(zip));
-
- free(buf.data);
- buf.data = NULL;
- buf.size = 0;
-
- zip_close(zip);
-}
-
-MU_TEST(test_extract_stream) {
- mu_assert_int_eq(
- ZIP_ENOINIT,
- zip_extract("non_existing_directory/non_existing_archive.zip", ".", NULL,
- NULL));
- mu_assert_int_eq(ZIP_ENOINIT, zip_stream_extract("", 0, ".", NULL, NULL));
- fprintf(stdout, "zip_stream_extract: %s\n", zip_strerror(ZIP_ENOINIT));
-
- FILE *fp = NULL;
-#if defined(_MSC_VER)
- if (0 != fopen_s(&fp, ZIPNAME, "rb+"))
-#else
- if (!(fp = fopen(ZIPNAME, "rb+")))
-#endif
- {
- mu_fail("Cannot open filename\n");
- }
-
- fseek(fp, 0L, SEEK_END);
- size_t filesize = ftell(fp);
- fseek(fp, 0L, SEEK_SET);
-
- char *stream = (char *)malloc(filesize * sizeof(char));
- memset(stream, 0, filesize);
-
- size_t size = fread(stream, sizeof(char), filesize, fp);
- mu_assert_int_eq(filesize, size);
-
- mu_assert_int_eq(0, zip_stream_extract(stream, size, ".", NULL, NULL));
-
- free(stream);
- fclose(fp);
-}
-
-MU_TEST(test_extract_cstream) {
- struct buffer_t buf;
- FILE *ZIPFILE = fopen(ZIPNAME, "r");
-
- struct zip_t *zip = zip_cstream_open(ZIPFILE, 0, 'r');
- mu_check(zip != NULL);
-
- memset((void *)&buf, 0, sizeof(struct buffer_t));
-
- mu_assert_int_eq(0, zip_entry_open(zip, "test/test-1.txt"));
- mu_assert_int_eq(0, zip_entry_extract(zip, on_extract, &buf));
- mu_assert_int_eq(strlen(TESTDATA1), buf.size);
- mu_assert_int_eq(0, strncmp(buf.data, TESTDATA1, buf.size));
- mu_assert_int_eq(0, zip_entry_close(zip));
-
- free(buf.data);
- buf.data = NULL;
- buf.size = 0;
-
- memset((void *)&buf, 0, sizeof(struct buffer_t));
-
- mu_assert_int_eq(0, zip_entry_open(zip, "dotfiles/.test"));
- mu_assert_int_eq(0, zip_entry_extract(zip, on_extract, &buf));
- mu_assert_int_eq(strlen(TESTDATA2), buf.size);
- mu_assert_int_eq(0, strncmp(buf.data, TESTDATA2, buf.size));
- mu_assert_int_eq(0, zip_entry_close(zip));
-
- free(buf.data);
- buf.data = NULL;
- buf.size = 0;
- fclose(ZIPFILE);
-
- zip_cstream_close(zip);
-}
-
-MU_TEST_SUITE(test_extract_suite) {
- MU_SUITE_CONFIGURE(&test_setup, &test_teardown);
-
- MU_RUN_TEST(test_extract);
- MU_RUN_TEST(test_extract_stream);
- MU_RUN_TEST(test_extract_cstream);
-}
-
-int main(int argc, char *argv[]) {
- UNUSED(argc);
- UNUSED(argv);
-
- MU_RUN_SUITE(test_extract_suite);
- MU_REPORT();
- return MU_EXIT_CODE;
-}