summaryrefslogtreecommitdiff
path: root/libs/zip/test/test_open.c
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-08-23 11:18:44 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-08-23 11:18:44 +0200
commit359422c97cce93bbb27051f9df3efb45bd0b9052 (patch)
tree2e352bb852a25390d40d45e199f835d218ad497f /libs/zip/test/test_open.c
parent8ea59863c5d13e68e080cf7612047ea4c655292c (diff)
settings file writing
Diffstat (limited to 'libs/zip/test/test_open.c')
-rw-r--r--libs/zip/test/test_open.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/libs/zip/test/test_open.c b/libs/zip/test/test_open.c
new file mode 100644
index 0000000..234edfa
--- /dev/null
+++ b/libs/zip/test/test_open.c
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <zip.h>
+
+#include "minunit.h"
+
+#if defined(_WIN32) || defined(_WIN64)
+#include <io.h>
+
+#define MKTEMP _mktemp
+#else
+#define MKTEMP mkstemp
+#endif
+
+static char ZIPNAME[L_tmpnam + 1] = {0};
+
+void test_setup(void) {
+ strncpy(ZIPNAME, "z-XXXXXX\0", L_tmpnam);
+ MKTEMP(ZIPNAME);
+}
+
+void test_teardown(void) { remove(ZIPNAME); }
+
+MU_TEST(test_openwitherror) {
+ int errnum;
+ struct zip_t *zip =
+ zip_openwitherror(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'r', &errnum);
+ mu_check(zip == NULL);
+ mu_assert_int_eq(ZIP_ERINIT, errnum);
+
+ zip = zip_openwitherror(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w', &errnum);
+ mu_check(zip != NULL);
+ mu_assert_int_eq(0, errnum);
+
+ zip_close(zip);
+}
+
+MU_TEST(test_stream_openwitherror) {
+ int errnum;
+ struct zip_t *zip = zip_stream_openwitherror(
+ NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'r', &errnum);
+ mu_check(zip == NULL);
+ mu_assert_int_eq(ZIP_EINVMODE, errnum);
+
+ zip = zip_stream_openwitherror(NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w',
+ &errnum);
+ mu_check(zip != NULL);
+ mu_assert_int_eq(0, errnum);
+
+ zip_stream_close(zip);
+}
+
+MU_TEST(test_cstream_openwitherror) {
+ int errnum;
+ FILE *ZIPFILE = NULL;
+
+ struct zip_t *zip = zip_cstream_openwitherror(
+ ZIPFILE, ZIP_DEFAULT_COMPRESSION_LEVEL, 'r', &errnum);
+ mu_check(zip == NULL);
+ mu_assert_int_eq(ZIP_ENOFILE, errnum);
+
+ ZIPFILE = fopen(ZIPNAME, "w");
+ zip = zip_cstream_openwitherror(ZIPFILE, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w',
+ &errnum);
+ mu_check(zip != NULL);
+ mu_assert_int_eq(0, errnum);
+
+ zip_cstream_close(zip);
+ fclose(ZIPFILE);
+}
+
+MU_TEST_SUITE(test_entry_suite) {
+ MU_SUITE_CONFIGURE(&test_setup, &test_teardown);
+
+ MU_RUN_TEST(test_openwitherror);
+ MU_RUN_TEST(test_stream_openwitherror);
+ MU_RUN_TEST(test_cstream_openwitherror);
+}
+
+#define UNUSED(x) (void)x
+
+int main(int argc, char *argv[]) {
+ UNUSED(argc);
+ UNUSED(argv);
+
+ MU_RUN_SUITE(test_entry_suite);
+ MU_REPORT();
+ return MU_EXIT_CODE;
+}