]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Test tar -O
authorTim Kientzle <kientzle@gmail.com>
Mon, 12 Apr 2010 00:20:02 +0000 (20:20 -0400)
committerTim Kientzle <kientzle@gmail.com>
Mon, 12 Apr 2010 00:20:02 +0000 (20:20 -0400)
SVN-Revision: 2240

Makefile.am
tar/test/CMakeLists.txt
tar/test/test_option_O_upper.c [new file with mode: 0644]

index 1b065fddc7f40e75f25abd3e7c486d58f58483d8..03e4e94386e70c754b2db28d3c9e302fa7b53ab9 100644 (file)
@@ -486,6 +486,7 @@ bsdtar_test_SOURCES=                                                \
        tar/test/test_option_C_upper.c                          \
        tar/test/test_option_H_upper.c                          \
        tar/test/test_option_L_upper.c                          \
+       tar/test/test_option_O_upper.c                          \
        tar/test/test_option_T_upper.c                          \
        tar/test/test_option_X_upper.c                          \
        tar/test/test_option_b.c                                \
index a99683650a7304bc123689b2c05660ae6e173cc2..e8b2eb738015333a180f2b7a22cffb51918312ee 100644 (file)
@@ -17,6 +17,7 @@ IF(ENABLE_TAR AND ENABLE_TEST)
     test_option_C_upper.c
     test_option_H_upper.c
     test_option_L_upper.c
+    test_option_O_upper.c
     test_option_T_upper.c
     test_option_X_upper.c
     test_option_b.c
diff --git a/tar/test/test_option_O_upper.c b/tar/test/test_option_O_upper.c
new file mode 100644 (file)
index 0000000..b9c8c0c
--- /dev/null
@@ -0,0 +1,87 @@
+/*-
+ * Copyright (c) 2010 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$");
+
+static const char *test4out[] = {"file1", "file2", NULL};
+static const char *test5err[] = {"file1", "file2", NULL};
+
+DEFINE_TEST(test_option_O_upper)
+{
+       assertMakeFile("file1", 0644, "file1");
+       assertMakeFile("file2", 0644, "file2");
+       assertEqualInt(0, systemf("%s -cf archive.tar file1 file2", testprog));
+
+       /* Test 1: -x without -O */
+       assertMakeDir("test1", 0755);
+       assertChdir("test1");
+       assertEqualInt(0,
+           systemf("%s -xf ../archive.tar >test.out 2>test.err", testprog));
+       assertFileContents("file1", 5, "file1");
+       assertFileContents("file2", 5, "file2");
+       assertEmptyFile("test.out");
+       assertEmptyFile("test.err");
+       assertChdir("..");
+
+       /* Test 2: -x with -O */
+       assertMakeDir("test2", 0755);
+       assertChdir("test2");
+       assertEqualInt(0,
+           systemf("%s -xOf ../archive.tar file1 >test.out 2>test.err", testprog));
+       assertFileNotExists("file1");
+       assertFileNotExists("file2");
+       assertFileContents("file1", 5, "test.out");
+       assertEmptyFile("test.err");
+       assertChdir("..");
+
+       /* Test 3: -x with -O and multiple files */
+       assertMakeDir("test3", 0755);
+       assertChdir("test3");
+       assertEqualInt(0,
+           systemf("%s -xOf ../archive.tar >test.out 2>test.err", testprog));
+       assertFileNotExists("file1");
+       assertFileNotExists("file2");
+       assertFileContents("file1file2", 10, "test.out");
+       assertEmptyFile("test.err");
+       assertChdir("..");
+
+       /* Test 4: -t without -O */
+       assertMakeDir("test4", 0755);
+       assertChdir("test4");
+       assertEqualInt(0,
+           systemf("%s -tf ../archive.tar >test.out 2>test.err", testprog));
+       assertFileContainsLinesAnyOrder("test.out", test4out);
+       assertEmptyFile("test.err");
+       assertChdir("..");
+
+       /* Test 5: -t with -O */
+       assertMakeDir("test5", 0755);
+       assertChdir("test5");
+       assertEqualInt(0,
+           systemf("%s -tOf ../archive.tar >test.out 2>test.err", testprog));
+       assertEmptyFile("test.out");
+       assertFileContainsLinesAnyOrder("test.err", test5err);
+       assertChdir("..");
+}