summaryrefslogtreecommitdiff
path: root/cpio
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@gmail.com>2009-04-05 00:40:12 -0400
committerTim Kientzle <kientzle@gmail.com>2009-04-05 00:40:12 -0400
commit37081d26640e3a76f9ba28c48e2aab41c35a93ab (patch)
tree67575774e7cf8e565473cf92dadab0ad10cd14dc /cpio
parentf91e7a804b88396019826a8ea7d01a68962830fd (diff)
downloadlibarchive-37081d26640e3a76f9ba28c48e2aab41c35a93ab.tar.gz
Two new tests:
test_cmdline exercises some boundary cases in the cmdline parsing, including ambiguous long options, missing arguments, etc. test_option_C_upper exercises the -C option (the _upper is to prevent filename conflicts with test_option_c on case-insensitive systems). SVN-Revision: 920
Diffstat (limited to 'cpio')
-rw-r--r--cpio/test/CMakeLists.txt2
-rw-r--r--cpio/test/test_cmdline.c65
-rw-r--r--cpio/test/test_option_C_upper.c68
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");
+}