diff options
Diffstat (limited to 'cpio')
-rw-r--r-- | cpio/test/CMakeLists.txt | 2 | ||||
-rw-r--r-- | cpio/test/test_cmdline.c | 65 | ||||
-rw-r--r-- | cpio/test/test_option_C_upper.c | 68 |
3 files changed, 135 insertions, 0 deletions
diff --git a/cpio/test/CMakeLists.txt b/cpio/test/CMakeLists.txt index 4970e504..0bd6094e 100644 --- a/cpio/test/CMakeLists.txt +++ b/cpio/test/CMakeLists.txt @@ -12,9 +12,11 @@ IF(ENABLE_CPIO AND ENABLE_TEST) test.h test_0.c test_basic.c + test_cmdline.c test_format_newc.c test_gcpio_compat.c test_option_B.c + test_option_C_upper.c test_option_L.c test_option_a.c test_option_c.c diff --git a/cpio/test/test_cmdline.c b/cpio/test/test_cmdline.c new file mode 100644 index 00000000..18720a0a --- /dev/null +++ b/cpio/test/test_cmdline.c @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2003-2009 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" +__FBSDID("$FreeBSD$"); + +/* + * Test the command-line parsing. + */ + +DEFINE_TEST(test_cmdline) +{ + failure("-Q is an invalid option on every cpio program I know of"); + assert(0 != systemf("%s -i -Q >1.stdout 2>1.stderr", testprog)); + assertEmptyFile("1.stdout"); + + failure("-f requires an argument"); + assert(0 != systemf("%s -if >2.stdout 2>2.stderr", testprog)); + assertEmptyFile("2.stdout"); + + failure("-f requires an argument"); + assert(0 != systemf("%s -i -f >3.stdout 2>3.stderr", testprog)); + assertEmptyFile("3.stdout"); + + failure("--format requires an argument"); + assert(0 != systemf("%s -i --format >4.stdout 2>4.stderr", testprog)); + assertEmptyFile("4.stdout"); + + failure("--badopt is an invalid option"); + assert(0 != systemf("%s -i --badop >5.stdout 2>5.stderr", testprog)); + assertEmptyFile("5.stdout"); + + failure("--badopt is an invalid option"); + assert(0 != systemf("%s -i --badopt >6.stdout 2>6.stderr", testprog)); + assertEmptyFile("6.stdout"); + + failure("--n is ambiguous"); + assert(0 != systemf("%s -i --n >7.stdout 2>7.stderr", testprog)); + assertEmptyFile("7.stdout"); + + failure("--create forbids an argument"); + assert(0 != systemf("%s --create=arg >8.stdout 2>8.stderr", testprog)); + assertEmptyFile("8.stdout"); +} diff --git a/cpio/test/test_option_C_upper.c b/cpio/test/test_option_C_upper.c new file mode 100644 index 00000000..c1c722b8 --- /dev/null +++ b/cpio/test/test_option_C_upper.c @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2007 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" +__FBSDID("$FreeBSD$"); + + +DEFINE_TEST(test_option_upper_C) +{ + struct stat st; + int r, fd; + + /* + * Create a file on disk. + */ + fd = open("file", O_CREAT | O_WRONLY, 0644); + assert(fd >= 0); + close(fd); + + /* Create an archive without -C; this should be 512 bytes. */ + r = systemf("echo file | %s -o > small.cpio 2>small.err", testprog); + assertEqualInt(r, 0); + assertTextFileContents("1 block\n", "small.err"); + assertEqualInt(0, stat("small.cpio", &st)); + assertEqualInt(512, st.st_size); + + /* Create an archive with -C 513; this should be 513 bytes. */ + r = systemf("echo file | %s -o -C 513 > 513.cpio 2>513.err", + testprog); + assertEqualInt(r, 0); + assertTextFileContents("1 block\n", "513.err"); + assertEqualInt(0, stat("513.cpio", &st)); + assertEqualInt(513, st.st_size); + + /* Create an archive with -C 12345; this should be 12345 bytes. */ + r = systemf("echo file | %s -o -C12345 > 12345.cpio 2>12345.err", + testprog); + assertEqualInt(r, 0); + assertTextFileContents("1 block\n", "12345.err"); + assertEqualInt(0, stat("12345.cpio", &st)); + assertEqualInt(12345, st.st_size); + + /* Create an archive with invalid -C request */ + assert(0 != systemf("echo file | %s -o -C > bad.cpio 2>bad.err", + testprog)); + assertEmptyFile("bad.cpio"); +} |