From 8eccad56d9a75618121ef136d2cd8b5c60343b19 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Fri, 15 Aug 2008 06:12:02 +0000 Subject: [PATCH] Test updates: Handling of patterns on command line, error messages. --- usr.bin/tar/test/test_copy.c | 3 +++ usr.bin/tar/test/test_option_T.c | 5 ++++- usr.bin/tar/test/test_patterns.c | 13 +++++++++++++ usr.bin/tar/test/test_patterns.tgz.err.uu | 6 ++++++ usr.bin/tar/test/test_patterns.tgz.out.uu | 5 +++++ usr.bin/tar/test/test_patterns.tgz.uu | 9 +++++++++ 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 usr.bin/tar/test/test_patterns.tgz.err.uu create mode 100644 usr.bin/tar/test/test_patterns.tgz.out.uu create mode 100644 usr.bin/tar/test/test_patterns.tgz.uu diff --git a/usr.bin/tar/test/test_copy.c b/usr.bin/tar/test/test_copy.c index 52b9b786673f..6618a0e53f07 100644 --- a/usr.bin/tar/test/test_copy.c +++ b/usr.bin/tar/test/test_copy.c @@ -196,6 +196,9 @@ verify_tree(int limit) char dir[2]; dir[0] = *dp; dir[1] = '\0'; d = opendir(dir); + failure("Unable to open dir '%s'", dir); + if (!assert(d != NULL)) + continue; while ((de = readdir(d)) != NULL) { p = de->d_name; switch(dp[0]) { diff --git a/usr.bin/tar/test/test_option_T.c b/usr.bin/tar/test/test_option_T.c index eec40bb45875..943182b92adf 100644 --- a/usr.bin/tar/test/test_option_T.c +++ b/usr.bin/tar/test/test_option_T.c @@ -40,6 +40,7 @@ touch(const char *fn) DEFINE_TEST(test_option_T) { FILE *f; + int r; /* Create a simple dir heirarchy; bail if anything fails. */ if (!assertEqualInt(0, mkdir("d1", 0755))) return; @@ -67,8 +68,10 @@ DEFINE_TEST(test_option_T) fclose(f); /* Use -c -T to archive up the files. */ - systemf("%s -c -f test1.tar -T filelist > test1.out 2> test1.err", + r = systemf("%s -c -f test1.tar -T filelist > test1.out 2> test1.err", testprog); + failure("Failure here probably means that tar can't archive zero-length files without reading them"); + assert(r == 0); assertEmptyFile("test1.out"); assertEmptyFile("test1.err"); diff --git a/usr.bin/tar/test/test_patterns.c b/usr.bin/tar/test/test_patterns.c index e7b1679fd9d0..9f77436adde5 100644 --- a/usr.bin/tar/test/test_patterns.c +++ b/usr.bin/tar/test/test_patterns.c @@ -28,6 +28,9 @@ __FBSDID("$FreeBSD$"); DEFINE_TEST(test_patterns) { int fd, r; + const char *reffile1 = "test_patterns.tgz"; + const char *reffile1_out = "test_patterns.tgz.out"; + const char *reffile1_err = "test_patterns.tgz.err"; /* * Test basic command-line pattern handling. @@ -44,4 +47,14 @@ DEFINE_TEST(test_patterns) r = systemf("%s zxfv tar1.tgz foo bar > tar1b.out 2> tar1b.err", testprog); failure("tar should return non-zero because a file was given on the command line that's not in the archive"); assert(r != 0); + + extract_reference_file(reffile1); + extract_reference_file(reffile1_out); + extract_reference_file(reffile1_err); + + r = systemf("%s tf %s /tmp/foo/bar > tar2a.out 2> tar2a.err", + testprog, reffile1); + assertEqualInt(r, 0); + assertEqualFile("tar2a.out", reffile1_out); + assertEqualFile("tar2a.err", reffile1_err); } diff --git a/usr.bin/tar/test/test_patterns.tgz.err.uu b/usr.bin/tar/test/test_patterns.tgz.err.uu new file mode 100644 index 000000000000..437d0535548c --- /dev/null +++ b/usr.bin/tar/test/test_patterns.tgz.err.uu @@ -0,0 +1,6 @@ +$FreeBSD$ +begin 644 test_patterns.tgz.err +M8G-D=&%R.B!296UO=FEN9R!L96%D:6YG("@H` +` +end diff --git a/usr.bin/tar/test/test_patterns.tgz.uu b/usr.bin/tar/test/test_patterns.tgz.uu new file mode 100644 index 000000000000..50f61ed73b39 --- /dev/null +++ b/usr.bin/tar/test/test_patterns.tgz.uu @@ -0,0 +1,9 @@ +$FreeBSD$ +begin 644 test_patterns.tgz +M'XL(`,P5I4@``^W3T0J",!3&<1]E;[!SYC:?Q\`H2`PS@IZ^F5AV(PFMJ__O +MYB@;>.:W8X?V;/==9XM\1*0*P:2J59"QCN8ZO:A*4*Z`]OR?\Y_C!7Y`P``````````````?.,! +(*>E$>P`H```` +` +end