[libarchive] testsuite: _enable it_
Pavel Raiskup
praiskup at fedoraproject.org
Sun Jun 30 18:00:44 UTC 2013
commit 7615a7f21cc99f1539d80fc7f18ace51d789fea3
Author: Pavel Raiskup <praiskup at redhat.com>
Date: Sun Jun 30 19:49:33 2013 +0200
testsuite: _enable it_
Version: 3.1.2-4
libarchive-3.1.2-testsuite.patch | 150 ++++++++++++++++++++++++++++++++++++++
libarchive.spec | 30 +++++++-
2 files changed, 177 insertions(+), 3 deletions(-)
---
diff --git a/libarchive-3.1.2-testsuite.patch b/libarchive-3.1.2-testsuite.patch
new file mode 100644
index 0000000..8a9841c
--- /dev/null
+++ b/libarchive-3.1.2-testsuite.patch
@@ -0,0 +1,150 @@
+diff --git a/cpio/test/test_extract_cpio_lzo.c b/cpio/test/test_extract_cpio_lzo.c
+index f351ba7..99476af 100644
+--- a/cpio/test/test_extract_cpio_lzo.c
++++ b/cpio/test/test_extract_cpio_lzo.c
+@@ -27,7 +27,7 @@ __FBSDID("$FreeBSD$");
+
+ DEFINE_TEST(test_extract_cpio_lzo)
+ {
+- const char *reffile = "test_extract.cpio.lrz";
++ const char *reffile = "test_extract.cpio.lzo";
+ int f;
+
+ extract_reference_file(reffile);
+diff --git a/libarchive/test/test_write_filter_lzop.c b/libarchive/test/test_write_filter_lzop.c
+index 9e840bd..a32932c 100644
+--- a/libarchive/test/test_write_filter_lzop.c
++++ b/libarchive/test/test_write_filter_lzop.c
+@@ -39,7 +39,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ size_t buffsize, datasize;
+ char path[16];
+ size_t used1, used2;
+- int i, r, use_prog = 0;
++ int i, r, use_prog = 0, filecount;
+
+ assert((a = archive_write_new()) != NULL);
+ r = archive_write_add_filter_lzop(a);
+@@ -58,9 +58,10 @@ DEFINE_TEST(test_write_filter_lzop)
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)calloc(1, datasize)));
++ filecount = 10;
+
+ /*
+- * Write a 100 files and read them all back.
++ * Write a filecount files and read them all back.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+@@ -77,7 +78,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+@@ -97,7 +98,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used1));
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+@@ -133,7 +134,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ archive_write_set_options(a, "lzop:compression-level=9"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+@@ -161,7 +162,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+@@ -186,7 +187,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ archive_write_set_filter_option(a, NULL, "compression-level", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+@@ -216,7 +217,7 @@ DEFINE_TEST(test_write_filter_lzop)
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
+- for (i = 0; i < 100; i++) {
++ for (i = 0; i < filecount; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+diff --git a/tar/test/test_option_b.c b/tar/test/test_option_b.c
+index be2ae65..7164d4c 100644
+--- a/tar/test/test_option_b.c
++++ b/tar/test/test_option_b.c
+@@ -25,8 +25,14 @@
+ #include "test.h"
+ __FBSDID("$FreeBSD$");
+
++static char *ustar_opt = " --format=ustar";
++
+ DEFINE_TEST(test_option_b)
+ {
++ char *testprog_ustar = malloc(strlen(testprog) + strlen(ustar_opt) + 2);
++ strcpy(testprog_ustar, testprog);
++ strcat(testprog_ustar, ustar_opt);
++
+ assertMakeFile("file1", 0644, "file1");
+ if (systemf("cat file1 > test_cat.out 2> test_cat.err") != 0) {
+ skipping("Platform doesn't have cat");
+@@ -36,7 +42,7 @@ DEFINE_TEST(test_option_b)
+ /*
+ * Bsdtar does not pad if the output is going directly to a disk file.
+ */
+- assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog));
++ assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog_ustar));
+ failure("bsdtar does not pad archives written directly to regular files");
+ assertFileSize("archive1.tar", 2048);
+ assertEmptyFile("test1.out");
+@@ -46,24 +52,24 @@ DEFINE_TEST(test_option_b)
+ * Bsdtar does pad to the block size if the output is going to a socket.
+ */
+ /* Default is -b 20 */
+- assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog));
++ assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog_ustar));
+ failure("bsdtar does pad archives written to pipes");
+ assertFileSize("archive2.tar", 10240);
+ assertEmptyFile("test2.err");
+
+- assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog));
++ assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog_ustar));
+ assertFileSize("archive3.tar", 10240);
+ assertEmptyFile("test3.err");
+
+- assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog));
++ assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog_ustar));
+ assertFileSize("archive4.tar", 5120);
+ assertEmptyFile("test4.err");
+
+- assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog));
++ assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog_ustar));
+ assertFileSize("archive5.tar", 2048);
+ assertEmptyFile("test5.err");
+
+- assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog));
++ assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog_ustar));
+ assertFileSize("archive6.tar", 4194304);
+ assertEmptyFile("test6.err");
+
diff --git a/libarchive.spec b/libarchive.spec
index 3a1e2b1..f660d5c 100644
--- a/libarchive.spec
+++ b/libarchive.spec
@@ -1,6 +1,6 @@
Name: libarchive
Version: 3.1.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: A library for handling streaming archive formats
Group: System Environment/Libraries
@@ -28,6 +28,7 @@ BuildRequires: automake autoconf libtool
# https://bugzilla.redhat.com/show_bug.cgi?id=927105
Patch0: libarchive-3.1.3-CVE-2013-0211_read_buffer_overflow.patch
+Patch1: libarchive-3.1.2-testsuite.patch
%description
Libarchive is a programming library that can create and read several different
@@ -68,6 +69,9 @@ libarchive packages.
%prep
%setup -q -n %{name}-%{version}
%patch0 -p1 -b .CVE-2013-0211
+# fix bugs in testsuite
+# ~> upstream ~> 26629c191a & b539b2e597 & 9caa49246
+%patch1 -p1 -b .fix-testsuite
%build
@@ -76,7 +80,9 @@ build/autogen.sh
# remove rpaths
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-make %{?_smp_mflags} V=1
+
+test -z "$V" && verbose_make="V=1"
+make %{?_smp_mflags} $verbose_make
%install
@@ -85,12 +91,28 @@ make install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
+%check
+LD_LIBRARY_PATH=`pwd`/.libs make check -j1 || (
+ # error happened - try to extract in koji as much info as possible
+ cat test-suite.log
+ echo "========================="
+ err=`cat test-suite.log | grep "Details for failing tests" | cut -d: -f2`
+ for i in $err; do
+ find $i -printf "%p\n ~> %c\n ~> %s B\n"
+ echo "-------------------------"
+ cat $i/*.log
+ done
+ false # stop here
+)
+
+
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
+
%postun -p /sbin/ldconfig
@@ -102,7 +124,6 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/*/mtree.*
%{_mandir}/*/tar.*
-
%files devel
%defattr(-,root,root,-)
%doc
@@ -126,6 +147,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Sun Jun 30 2013 Pavel Raiskup <praiskup at redhat.com> - 3.1.2-4
+- enable testsuite in the %%check phase
+
* Mon Jun 24 2013 Pavel Raiskup <praiskup at redhat.com> - 3.1.2-3
- bsdtar/bsdcpio should require versioned libarchive
More information about the scm-commits
mailing list