From: datauwu <209150516+datauwu@users.noreply.github.com> Date: Tue, 30 Jun 2026 09:12:10 +0000 (+0800) Subject: archive_write: group option setter tests X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae78682a02fc7f94f84c6970627256e2d5d9207c;p=thirdparty%2Flibarchive.git archive_write: group option setter tests The write option setter checks used several tiny source files with the same basic shape. Keep the same DEFINE_TEST cases. Put the write-side option setter checks in test_archive_write_set_options.c. Remove the extra source files from the build lists. --- diff --git a/Makefile.am b/Makefile.am index 8f401c691..0dfa889b4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -415,11 +415,8 @@ libarchive_test_SOURCES= \ libarchive/test/test_archive_string_conversion.c \ libarchive/test/test_archive_write_add_filter.c \ libarchive/test/test_archive_write_add_filter_by_name.c \ - libarchive/test/test_archive_write_set_filter_option.c \ libarchive/test/test_archive_write_set_format_by_name.c \ libarchive/test/test_archive_write_set_format_filter_by_ext.c \ - libarchive/test/test_archive_write_set_format_option.c \ - libarchive/test/test_archive_write_set_option.c \ libarchive/test/test_archive_write_set_options.c \ libarchive/test/test_archive_write_set_passphrase.c \ libarchive/test/test_bad_fd.c \ diff --git a/libarchive/test/CMakeLists.txt b/libarchive/test/CMakeLists.txt index 801514641..a274d9946 100644 --- a/libarchive/test/CMakeLists.txt +++ b/libarchive/test/CMakeLists.txt @@ -44,11 +44,8 @@ IF(ENABLE_TEST) test_archive_string_conversion.c test_archive_write_add_filter.c test_archive_write_add_filter_by_name.c - test_archive_write_set_filter_option.c test_archive_write_set_format_by_name.c test_archive_write_set_format_filter_by_ext.c - test_archive_write_set_format_option.c - test_archive_write_set_option.c test_archive_write_set_options.c test_archive_write_set_passphrase.c test_bad_fd.c diff --git a/libarchive/test/test_archive_write_set_filter_option.c b/libarchive/test/test_archive_write_set_filter_option.c deleted file mode 100644 index 6b90a831b..000000000 --- a/libarchive/test/test_archive_write_set_filter_option.c +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * Copyright (c) 2011 Tim Kientzle - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "test.h" - -#define should(__a, __code, __m, __o, __v) \ -assertEqualInt(__code, archive_write_set_filter_option(__a, __m, __o, __v)) - -static void -test(int pristine) -{ - struct archive* a = archive_write_new(); - - if (!pristine) - archive_write_add_filter_gzip(a); - - should(a, ARCHIVE_OK, NULL, NULL, NULL); - should(a, ARCHIVE_OK, "", "", ""); - - should(a, ARCHIVE_FAILED, NULL, "fubar", NULL); - should(a, ARCHIVE_FAILED, NULL, "fubar", "snafu"); - should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); - should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); - - archive_write_free(a); -} - -DEFINE_TEST(test_archive_write_set_filter_option) -{ - test(1); - test(0); -} diff --git a/libarchive/test/test_archive_write_set_format_option.c b/libarchive/test/test_archive_write_set_format_option.c deleted file mode 100644 index 38f83aba2..000000000 --- a/libarchive/test/test_archive_write_set_format_option.c +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * Copyright (c) 2011 Tim Kientzle - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "test.h" - -#define should(__a, __code, __m, __o, __v) \ -assertEqualInt(__code, archive_write_set_format_option(__a, __m, __o, __v)) - -static void -test(int pristine) -{ - struct archive* a = archive_write_new(); - int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; - - if (!pristine) - archive_write_set_format_iso9660(a); - - /* NULL and "" denote `no option', so they're ok no matter - * what, if any, formats are registered */ - should(a, ARCHIVE_OK, NULL, NULL, NULL); - should(a, ARCHIVE_OK, "", "", ""); - - /* unknown modules and options */ - should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); - should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); - - /* unknown modules and options */ - should(a, ARCHIVE_FAILED, NULL, "snafu", NULL); - should(a, ARCHIVE_FAILED, NULL, "snafu", "betcha"); - - /* ARCHIVE_OK with iso9660 loaded, ARCHIVE_WARN otherwise */ - should(a, known_option_rv, "iso9660", "joliet", NULL); - should(a, known_option_rv, "iso9660", "joliet", NULL); - should(a, known_option_rv, NULL, "joliet", NULL); - should(a, known_option_rv, NULL, "joliet", NULL); - - archive_write_free(a); -} - -DEFINE_TEST(test_archive_write_set_format_option) -{ - test(1); - test(0); -} diff --git a/libarchive/test/test_archive_write_set_option.c b/libarchive/test/test_archive_write_set_option.c deleted file mode 100644 index aa44edad6..000000000 --- a/libarchive/test/test_archive_write_set_option.c +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2011 Tim Kientzle - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "test.h" - -#define should(__a, __code, __m, __o, __v) \ -assertEqualInt(__code, archive_write_set_option(__a, __m, __o, __v)) - -static void -test(int pristine) -{ - struct archive* a = archive_write_new(); - int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; - - if (!pristine) { - archive_write_add_filter_gzip(a); - archive_write_set_format_iso9660(a); - } - - /* NULL and "" denote `no option', so they're ok no matter - * what, if any, formats are registered */ - should(a, ARCHIVE_OK, NULL, NULL, NULL); - should(a, ARCHIVE_OK, "", "", ""); - - /* unknown modules and options */ - should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); - should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); - - /* unknown modules and options */ - should(a, ARCHIVE_FAILED, NULL, "snafu", NULL); - should(a, ARCHIVE_FAILED, NULL, "snafu", "betcha"); - - /* ARCHIVE_OK with iso9660 loaded, ARCHIVE_WARN otherwise */ - should(a, known_option_rv, "iso9660", "joliet", NULL); - should(a, known_option_rv, "iso9660", "joliet", NULL); - should(a, known_option_rv, NULL, "joliet", NULL); - should(a, known_option_rv, NULL, "joliet", NULL); - - archive_write_free(a); -} - -DEFINE_TEST(test_archive_write_set_option) -{ - test(1); - test(0); -} diff --git a/libarchive/test/test_archive_write_set_options.c b/libarchive/test/test_archive_write_set_options.c index 6a0198de3..c35c87185 100644 --- a/libarchive/test/test_archive_write_set_options.c +++ b/libarchive/test/test_archive_write_set_options.c @@ -25,11 +25,121 @@ #include "test.h" -#define should(__a, __code, __opts) \ +#define should_write_set_filter_option(__a, __code, __m, __o, __v) \ +assertEqualInt(__code, archive_write_set_filter_option(__a, __m, __o, __v)) + +static void +write_set_filter_option_test(int pristine) +{ + struct archive* a = archive_write_new(); + + if (!pristine) + archive_write_add_filter_gzip(a); + + should_write_set_filter_option(a, ARCHIVE_OK, NULL, NULL, NULL); + should_write_set_filter_option(a, ARCHIVE_OK, "", "", ""); + + should_write_set_filter_option(a, ARCHIVE_FAILED, NULL, "fubar", NULL); + should_write_set_filter_option(a, ARCHIVE_FAILED, NULL, "fubar", "snafu"); + should_write_set_filter_option(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); + should_write_set_filter_option(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); + + archive_write_free(a); +} + +DEFINE_TEST(test_archive_write_set_filter_option) +{ + write_set_filter_option_test(1); + write_set_filter_option_test(0); +} + +#define should_write_set_format_option(__a, __code, __m, __o, __v) \ +assertEqualInt(__code, archive_write_set_format_option(__a, __m, __o, __v)) + +static void +write_set_format_option_test(int pristine) +{ + struct archive* a = archive_write_new(); + int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; + + if (!pristine) + archive_write_set_format_iso9660(a); + + /* NULL and "" denote `no option', so they're ok no matter + * what, if any, formats are registered */ + should_write_set_format_option(a, ARCHIVE_OK, NULL, NULL, NULL); + should_write_set_format_option(a, ARCHIVE_OK, "", "", ""); + + /* unknown modules and options */ + should_write_set_format_option(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); + should_write_set_format_option(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); + + /* unknown modules and options */ + should_write_set_format_option(a, ARCHIVE_FAILED, NULL, "snafu", NULL); + should_write_set_format_option(a, ARCHIVE_FAILED, NULL, "snafu", "betcha"); + + /* ARCHIVE_OK with iso9660 loaded, ARCHIVE_WARN otherwise */ + should_write_set_format_option(a, known_option_rv, "iso9660", "joliet", NULL); + should_write_set_format_option(a, known_option_rv, "iso9660", "joliet", NULL); + should_write_set_format_option(a, known_option_rv, NULL, "joliet", NULL); + should_write_set_format_option(a, known_option_rv, NULL, "joliet", NULL); + + archive_write_free(a); +} + +DEFINE_TEST(test_archive_write_set_format_option) +{ + write_set_format_option_test(1); + write_set_format_option_test(0); +} + +#define should_write_set_option(__a, __code, __m, __o, __v) \ +assertEqualInt(__code, archive_write_set_option(__a, __m, __o, __v)) + +static void +write_set_option_test(int pristine) +{ + struct archive* a = archive_write_new(); + int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; + + if (!pristine) { + archive_write_add_filter_gzip(a); + archive_write_set_format_iso9660(a); + } + + /* NULL and "" denote `no option', so they're ok no matter + * what, if any, formats are registered */ + should_write_set_option(a, ARCHIVE_OK, NULL, NULL, NULL); + should_write_set_option(a, ARCHIVE_OK, "", "", ""); + + /* unknown modules and options */ + should_write_set_option(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); + should_write_set_option(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); + + /* unknown modules and options */ + should_write_set_option(a, ARCHIVE_FAILED, NULL, "snafu", NULL); + should_write_set_option(a, ARCHIVE_FAILED, NULL, "snafu", "betcha"); + + /* ARCHIVE_OK with iso9660 loaded, ARCHIVE_WARN otherwise */ + should_write_set_option(a, known_option_rv, "iso9660", "joliet", NULL); + should_write_set_option(a, known_option_rv, "iso9660", "joliet", NULL); + should_write_set_option(a, known_option_rv, NULL, "joliet", NULL); + should_write_set_option(a, known_option_rv, NULL, "joliet", NULL); + + archive_write_free(a); +} + +DEFINE_TEST(test_archive_write_set_option) +{ + write_set_option_test(1); + write_set_option_test(0); +} + +#define should_write_set_options(__a, __code, __opts) \ assertEqualInt(__code, archive_write_set_options(__a, __opts)) static void -test(int pristine) +write_set_options_test(int pristine) { struct archive* a = archive_write_new(); int halfempty_options_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; @@ -42,62 +152,62 @@ test(int pristine) /* NULL and "" denote `no option', so they're ok no matter * what, if any, formats are registered */ - should(a, ARCHIVE_OK, NULL); - should(a, ARCHIVE_OK, ""); + should_write_set_options(a, ARCHIVE_OK, NULL); + should_write_set_options(a, ARCHIVE_OK, ""); /* unknown modules and options */ - should(a, ARCHIVE_FAILED, "fubar:snafu"); + should_write_set_options(a, ARCHIVE_FAILED, "fubar:snafu"); assertEqualString("Unknown module name: `fubar'", archive_error_string(a)); - should(a, ARCHIVE_FAILED, "fubar:snafu=betcha"); + should_write_set_options(a, ARCHIVE_FAILED, "fubar:snafu=betcha"); assertEqualString("Unknown module name: `fubar'", archive_error_string(a)); /* unknown modules and options */ - should(a, ARCHIVE_FAILED, "snafu"); + should_write_set_options(a, ARCHIVE_FAILED, "snafu"); assertEqualString("Undefined option: `snafu'", archive_error_string(a)); - should(a, ARCHIVE_FAILED, "snafu=betcha"); + should_write_set_options(a, ARCHIVE_FAILED, "snafu=betcha"); assertEqualString("Undefined option: `snafu'", archive_error_string(a)); /* ARCHIVE_OK with iso9660 loaded, ARCHIVE_FAILED otherwise */ - should(a, known_option_rv, "iso9660:joliet"); + should_write_set_options(a, known_option_rv, "iso9660:joliet"); if (pristine) { assertEqualString("Unknown module name: `iso9660'", archive_error_string(a)); } - should(a, known_option_rv, "iso9660:joliet"); + should_write_set_options(a, known_option_rv, "iso9660:joliet"); if (pristine) { assertEqualString("Unknown module name: `iso9660'", archive_error_string(a)); } - should(a, known_option_rv, "joliet"); + should_write_set_options(a, known_option_rv, "joliet"); if (pristine) { assertEqualString("Undefined option: `joliet'", archive_error_string(a)); } - should(a, known_option_rv, "!joliet"); + should_write_set_options(a, known_option_rv, "!joliet"); if (pristine) { assertEqualString("Undefined option: `joliet'", archive_error_string(a)); } - should(a, ARCHIVE_OK, ","); - should(a, ARCHIVE_OK, ",,"); + should_write_set_options(a, ARCHIVE_OK, ","); + should_write_set_options(a, ARCHIVE_OK, ",,"); - should(a, halfempty_options_rv, ",joliet"); + should_write_set_options(a, halfempty_options_rv, ",joliet"); if (pristine) { assertEqualString("Undefined option: `joliet'", archive_error_string(a)); } - should(a, halfempty_options_rv, "joliet,"); + should_write_set_options(a, halfempty_options_rv, "joliet,"); if (pristine) { assertEqualString("Undefined option: `joliet'", archive_error_string(a)); } - should(a, ARCHIVE_FAILED, "joliet,snafu"); + should_write_set_options(a, ARCHIVE_FAILED, "joliet,snafu"); if (pristine) { assertEqualString("Undefined option: `joliet'", archive_error_string(a)); @@ -106,7 +216,7 @@ test(int pristine) archive_error_string(a)); } - should(a, ARCHIVE_FAILED, "iso9660:snafu"); + should_write_set_options(a, ARCHIVE_FAILED, "iso9660:snafu"); if (pristine) { assertEqualString("Unknown module name: `iso9660'", archive_error_string(a)); @@ -120,6 +230,6 @@ test(int pristine) DEFINE_TEST(test_archive_write_set_options) { - test(1); - test(0); + write_set_options_test(1); + write_set_options_test(0); }