tests: fix racy compress test
Version: 1.31-4
This commit is contained in:
parent
fdf7d97dc8
commit
cb70a1eb89
271
tar-1.31-racy-compress-tests.patch
Normal file
271
tar-1.31-racy-compress-tests.patch
Normal file
@ -0,0 +1,271 @@
|
||||
From 9af3ae33108e5a1d281d75d29938fe8c6ffcd218 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org>
|
||||
Date: Mon, 14 Jan 2019 18:08:21 +0200
|
||||
Subject: [PATCH] Fix compression tests
|
||||
|
||||
Existing compression tests used tar with compiled-in defaults. However,
|
||||
some of the defaults are sure to create archives that are not byte-to-byte
|
||||
reproducible (e.g. DEFAULT_ARCHIVE_FORMAT=POSIX, because the name field
|
||||
in posix extended headers uses PID of the creating process by default).
|
||||
Moreover, some compressors (e.g. gzip) store current timestamp in
|
||||
the file header when compressing from stdin, so that using cmp on the
|
||||
two created archives as the tests did is error-prone. Another problem
|
||||
is that the tests implicitly assumed that tar uses archive suffix to
|
||||
recognize its format when extracting, which isn't the case. Finally,
|
||||
there's hardly any reason in using sed to create m4 sources, when
|
||||
everything can be achieved by m4 itself.
|
||||
|
||||
* tests/Makefile.am: Remove generation of compress-*.at files.
|
||||
* tests/compress.at.in: Remove.
|
||||
* tests/compress.m4: New file.
|
||||
* tests/testsuite.at: Include compress.m4, use TAR_CHECK_COMPRESS to
|
||||
check compression options.
|
||||
---
|
||||
tests/Makefile.am | 45 ++---------------------------
|
||||
tests/compress.at.in | 67 --------------------------------------------
|
||||
tests/compress.m4 | 56 ++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 13 +++++----
|
||||
4 files changed, 65 insertions(+), 116 deletions(-)
|
||||
delete mode 100644 tests/compress.at.in
|
||||
create mode 100644 tests/compress.m4
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 4750acb..a29f626 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
EXTRA_DIST = $(TESTSUITE_AT) \
|
||||
testsuite package.m4 star/README star/quicktest.sh \
|
||||
- compress.at.in
|
||||
+ compress.m4
|
||||
|
||||
DISTCLEANFILES = atconfig $(check_SCRIPTS)
|
||||
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
@@ -47,6 +47,7 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at\
|
||||
+ compress.m4\
|
||||
T-cd.at\
|
||||
T-dir00.at\
|
||||
T-dir01.at\
|
||||
@@ -70,12 +71,6 @@ TESTSUITE_AT = \
|
||||
chtype.at\
|
||||
comprec.at\
|
||||
comperr.at\
|
||||
- compress-zstd.at\
|
||||
- compress-xz.at\
|
||||
- compress-bzip2.at\
|
||||
- compress-gzip.at\
|
||||
- compress-lzip.at\
|
||||
- compress-lzop.at\
|
||||
delete01.at\
|
||||
delete02.at\
|
||||
delete03.at\
|
||||
@@ -277,42 +272,6 @@ TESTSUITE_AT = \
|
||||
selacl01.at\
|
||||
capabs_raw01.at
|
||||
|
||||
-CLEANFILES += compress-zstd.at
|
||||
-compress-zstd.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/zstd/g;s/@suff@/zst/g;s/@suff2@/tzst/g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
-CLEANFILES += compress-gzip.at
|
||||
-compress-gzip.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/gzip/g;s/@suff@/gz/g;s/@suff2@/tgz/g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
-CLEANFILES += compress-xz.at
|
||||
-compress-xz.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/xz/g;s/@suff@/xz/g;s/@suff2@/txz/g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
-CLEANFILES += compress-bzip2.at
|
||||
-compress-bzip2.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/bzip2/g;s/@suff@/bz2/g;s/@suff2@/tbz2/g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
-CLEANFILES += compress-lzip.at
|
||||
-compress-lzip.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/lzip/g;s/@suff@/lz/g;s/@suff2@//g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
-CLEANFILES += compress-lzop.at
|
||||
-compress-lzop.at: compress.at.in
|
||||
- $(AM_V_GEN)rm -rf $@ $@-t
|
||||
- $(AM_V_at)sed 's/@tool@/lzop/g;s/@suff@/lzo/g;s/@suff2@//g;' \
|
||||
- $(srcdir)/compress.at.in > $@-t && chmod a-w $@-t && mv $@-t $@
|
||||
-
|
||||
distclean-local:
|
||||
-rm -rf download
|
||||
|
||||
diff --git a/tests/compress.at.in b/tests/compress.at.in
|
||||
deleted file mode 100644
|
||||
index 91a6af2..0000000
|
||||
--- a/tests/compress.at.in
|
||||
+++ /dev/null
|
||||
@@ -1,67 +0,0 @@
|
||||
-# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
-
|
||||
-# Test suite for GNU tar.
|
||||
-# Copyright 2018-2019 Free Software Foundation, Inc.
|
||||
-
|
||||
-# This file is part of GNU tar.
|
||||
-
|
||||
-# GNU tar is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
-# the Free Software Foundation; either version 3 of the License, or
|
||||
-# (at your option) any later version.
|
||||
-
|
||||
-# GNU tar is distributed in the hope that it will be useful,
|
||||
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-# GNU General Public License for more details.
|
||||
-
|
||||
-# You should have received a copy of the GNU General Public License
|
||||
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-
|
||||
-# tar can create/decompress @tool@-compressed tarballs
|
||||
-
|
||||
-AT_SETUP([compress: @tool@])
|
||||
-AT_KEYWORDS([compression @tool@])
|
||||
-
|
||||
-unset TAR_OPTIONS
|
||||
-
|
||||
-AT_CHECK([
|
||||
-AT_GZIP_PREREQ([@tool@])
|
||||
-
|
||||
-touch empty
|
||||
-# Create with --@tool@:
|
||||
-tar --@tool@ -cf - empty 2>err > k.tar.@suff@ || exit 1
|
||||
-test -s err && exit 1
|
||||
-tar tf k.tar.@suff@ 2>err > out || exit 1
|
||||
-test "$(cat out)" = empty || exit 1
|
||||
-test -s err && exit 1
|
||||
-
|
||||
-# Ensure -ac works with an -f-specified .@suff@-suffixed name.
|
||||
-tar -acf k2.tar.@suff@ empty 2>err > out || exit 1
|
||||
-cmp k2.tar.@suff@ k.tar.@suff@ || exit 1
|
||||
-test -s err && exit 1
|
||||
-
|
||||
-# Extraction: ensure the .@suff@ suffix is recognized.
|
||||
-rm -f empty || exit 1
|
||||
-tar xf k.tar.@suff@ 2>err > out || exit 1
|
||||
-test -s err && exit 1
|
||||
-test -f empty || exit 1
|
||||
-
|
||||
-if test -n '@suff2@'; then
|
||||
- # Extraction: ensure the .@suff2@ suffix is also recognized.
|
||||
- mv k.tar.@suff@ k.@suff2@ || exit 1
|
||||
- rm -f empty
|
||||
- tar xf k.@suff2@ 2>err > out || exit 1
|
||||
- test -s err && exit 1
|
||||
- test -f empty || exit 1
|
||||
-else
|
||||
- :
|
||||
-fi
|
||||
-
|
||||
-],
|
||||
-[0],
|
||||
-[],
|
||||
-[],
|
||||
-[],[])
|
||||
-
|
||||
-AT_CLEANUP
|
||||
diff --git a/tests/compress.m4 b/tests/compress.m4
|
||||
new file mode 100644
|
||||
index 0000000..1f22632
|
||||
--- /dev/null
|
||||
+++ b/tests/compress.m4
|
||||
@@ -0,0 +1,56 @@
|
||||
+# This file is part of GNU tar testsuite. -*- Autotest -*-
|
||||
+# Copyright 2018-2019 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# GNU tar is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# GNU tar is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+dnl TAR_CHECK_COMPRESS(TOOL, SUF[, SUF2])
|
||||
+dnl Tests whether tar can create archives using TOOL (i.e. using the --TOOL
|
||||
+dnl command line option). SUF and optional SUF2 are suffixes for created
|
||||
+dnl archives (without leading dot). Tar should be able to use TOOL to
|
||||
+dnl automatically decompress archives with names ending on these suffixes.
|
||||
+m4_define([TAR_CHECK_COMPRESS],
|
||||
+[AT_SETUP([compress: $1])
|
||||
+AT_KEYWORDS([compression compress-$1 $1])
|
||||
+
|
||||
+AT_CHECK([
|
||||
+AT_GZIP_PREREQ($1)
|
||||
+unset TAR_OPTIONS
|
||||
+
|
||||
+touch empty
|
||||
+set -e
|
||||
+: create with --$1
|
||||
+tar --$1 -cf k.tar.$2 empty
|
||||
+tar tf k.tar.$2
|
||||
+
|
||||
+m4_foreach([SUF], m4_quote(m4_shift($@)),
|
||||
+[
|
||||
+echo testing .SUF
|
||||
+tar -acf k2.tar.SUF empty
|
||||
+cat k2.tar.SUF | $1 -d > k.SUF.tar
|
||||
+tar tf k.SUF.tar
|
||||
+])
|
||||
+
|
||||
+# Extraction: ensure compressed format is correctly recognized
|
||||
+rm -f empty
|
||||
+tar xf k.tar.$2
|
||||
+test -f empty
|
||||
+],
|
||||
+[0],
|
||||
+[empty
|
||||
+m4_foreach([SUF],m4_quote(m4_shift($@)),[testing .SUF
|
||||
+empty
|
||||
+])])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
+])
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index f751bcf..ce25c96 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -217,13 +217,14 @@ m4_include([opcomp05.at])
|
||||
m4_include([opcomp06.at])
|
||||
|
||||
AT_BANNER([Compression])
|
||||
-m4_include([compress-gzip.at])
|
||||
-m4_include([compress-bzip2.at])
|
||||
-m4_include([compress-xz.at])
|
||||
+m4_include([compress.m4])
|
||||
+TAR_CHECK_COMPRESS(gzip, gz, tgz)
|
||||
+TAR_CHECK_COMPRESS(bzip2, bz2, tbz2)
|
||||
+TAR_CHECK_COMPRESS(xz, xz, txz)
|
||||
dnl: omit lzma, because it would fail due to magic number mismatch
|
||||
-m4_include([compress-lzip.at])
|
||||
-m4_include([compress-lzop.at])
|
||||
-m4_include([compress-zstd.at])
|
||||
+TAR_CHECK_COMPRESS(lzip, lz)
|
||||
+TAR_CHECK_COMPRESS(lzop, lzo)
|
||||
+TAR_CHECK_COMPRESS(zstd, zst, tzst)
|
||||
|
||||
AT_BANNER([Positional options])
|
||||
m4_include([positional01.at])
|
||||
--
|
||||
2.20.1
|
||||
|
6
tar.spec
6
tar.spec
@ -5,7 +5,7 @@ Summary: A GNU file archiving program
|
||||
Name: tar
|
||||
Epoch: 2
|
||||
Version: 1.31
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
License: GPLv3+
|
||||
URL: http://www.gnu.org/software/tar/
|
||||
|
||||
@ -19,6 +19,7 @@ Patch3: tar-1.29-wildcards.patch
|
||||
Patch4: tar-1.28-atime-rofs.patch
|
||||
Patch9: tar-1.28-document-exclude-mistakes.patch
|
||||
Patch10: tar-1.31-dirrem-tests.patch
|
||||
Patch11: tar-1.31-racy-compress-tests.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: autoconf automake texinfo gettext libacl-devel
|
||||
@ -112,6 +113,9 @@ make check || (
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Feb 04 2019 Pavel Raiskup <praiskup@redhat.com> - 1.31-4
|
||||
- fix racy compress: gzip test
|
||||
|
||||
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2:1.31-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user