mirror of
https://git.zx2c4.com/cgit
synced 2024-11-29 11:56:21 +00:00
bd6f5683f6
The untar tests for various compression algorithms use shortcut options from GNU tar to handle decompression. These options may not be provided by non-GNU tar nor even by slightly older GNU tar versions which ship on many systems. An example of the latter case is the --zstd option. This was added in GNU tar-1.32 (2019-02-23)¹. This version of tar is not provided by CentOS/RHEL, in particular. In Debian, --zstd has been backported to the tar-1.30 release. Avoid the requirement on any specific implementations or versions of tar by piping decompressed output to tar. This is compatible with older GNU tar releases as well as tar implementations from other vendors. (It may also be a slight benefit that this more closely matches what the snapshot creation code does.) ¹ Technically, the --zstd option was first released in tar-1.31 (2019-01-02), but this release was very short-lived and is no longer listed on the GNU Tar release page. Signed-off-by: Todd Zullinger <tmz@pobox.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
206 lines
4.3 KiB
Bash
Executable File
206 lines
4.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='Verify snapshot'
|
|
. ./setup.sh
|
|
|
|
test_expect_success 'get foo/snapshot/master.tar.gz' '
|
|
cgit_url "foo/snapshot/master.tar.gz" >tmp
|
|
'
|
|
|
|
test_expect_success 'check html headers' '
|
|
head -n 1 tmp |
|
|
grep "Content-Type: application/x-gzip" &&
|
|
|
|
head -n 2 tmp |
|
|
grep "Content-Disposition: inline; filename=.master.tar.gz."
|
|
'
|
|
|
|
test_expect_success 'strip off the header lines' '
|
|
strip_headers <tmp >master.tar.gz
|
|
'
|
|
|
|
test_expect_success 'verify gzip format' '
|
|
gunzip --test master.tar.gz
|
|
'
|
|
|
|
test_expect_success 'untar' '
|
|
rm -rf master &&
|
|
gzip -dc master.tar.gz | tar -xf -
|
|
'
|
|
|
|
test_expect_success 'count files' '
|
|
ls master/ >output &&
|
|
test_line_count = 5 output
|
|
'
|
|
|
|
test_expect_success 'verify untarred file-5' '
|
|
grep "^5$" master/file-5 &&
|
|
test_line_count = 1 master/file-5
|
|
'
|
|
|
|
if test -n "$(which lzip 2>/dev/null)"; then
|
|
test_set_prereq LZIP
|
|
else
|
|
say 'Skipping LZIP validation tests: lzip not found'
|
|
fi
|
|
|
|
test_expect_success LZIP 'get foo/snapshot/master.tar.lz' '
|
|
cgit_url "foo/snapshot/master.tar.lz" >tmp
|
|
'
|
|
|
|
test_expect_success LZIP 'check html headers' '
|
|
head -n 1 tmp |
|
|
grep "Content-Type: application/x-lzip" &&
|
|
|
|
head -n 2 tmp |
|
|
grep "Content-Disposition: inline; filename=.master.tar.lz."
|
|
'
|
|
|
|
test_expect_success LZIP 'strip off the header lines' '
|
|
strip_headers <tmp >master.tar.lz
|
|
'
|
|
|
|
test_expect_success LZIP 'verify lzip format' '
|
|
lzip --test master.tar.lz
|
|
'
|
|
|
|
test_expect_success LZIP 'untar' '
|
|
rm -rf master &&
|
|
lzip -dc master.tar.lz | tar -xf -
|
|
'
|
|
|
|
test_expect_success LZIP 'count files' '
|
|
ls master/ >output &&
|
|
test_line_count = 5 output
|
|
'
|
|
|
|
test_expect_success LZIP 'verify untarred file-5' '
|
|
grep "^5$" master/file-5 &&
|
|
test_line_count = 1 master/file-5
|
|
'
|
|
|
|
if test -n "$(which xz 2>/dev/null)"; then
|
|
test_set_prereq XZ
|
|
else
|
|
say 'Skipping XZ validation tests: xz not found'
|
|
fi
|
|
|
|
test_expect_success XZ 'get foo/snapshot/master.tar.xz' '
|
|
cgit_url "foo/snapshot/master.tar.xz" >tmp
|
|
'
|
|
|
|
test_expect_success XZ 'check html headers' '
|
|
head -n 1 tmp |
|
|
grep "Content-Type: application/x-xz" &&
|
|
|
|
head -n 2 tmp |
|
|
grep "Content-Disposition: inline; filename=.master.tar.xz."
|
|
'
|
|
|
|
test_expect_success XZ 'strip off the header lines' '
|
|
strip_headers <tmp >master.tar.xz
|
|
'
|
|
|
|
test_expect_success XZ 'verify xz format' '
|
|
xz --test master.tar.xz
|
|
'
|
|
|
|
test_expect_success XZ 'untar' '
|
|
rm -rf master &&
|
|
xz -dc master.tar.xz | tar -xf -
|
|
'
|
|
|
|
test_expect_success XZ 'count files' '
|
|
ls master/ >output &&
|
|
test_line_count = 5 output
|
|
'
|
|
|
|
test_expect_success XZ 'verify untarred file-5' '
|
|
grep "^5$" master/file-5 &&
|
|
test_line_count = 1 master/file-5
|
|
'
|
|
|
|
if test -n "$(which zstd 2>/dev/null)"; then
|
|
test_set_prereq ZSTD
|
|
else
|
|
say 'Skipping ZSTD validation tests: zstd not found'
|
|
fi
|
|
|
|
test_expect_success ZSTD 'get foo/snapshot/master.tar.zst' '
|
|
cgit_url "foo/snapshot/master.tar.zst" >tmp
|
|
'
|
|
|
|
test_expect_success ZSTD 'check html headers' '
|
|
head -n 1 tmp |
|
|
grep "Content-Type: application/x-zstd" &&
|
|
|
|
head -n 2 tmp |
|
|
grep "Content-Disposition: inline; filename=.master.tar.zst."
|
|
'
|
|
|
|
test_expect_success ZSTD 'strip off the header lines' '
|
|
strip_headers <tmp >master.tar.zst
|
|
'
|
|
|
|
test_expect_success ZSTD 'verify zstd format' '
|
|
zstd --test master.tar.zst
|
|
'
|
|
|
|
test_expect_success ZSTD 'untar' '
|
|
rm -rf master &&
|
|
zstd -dc master.tar.zst | tar -xf -
|
|
'
|
|
|
|
test_expect_success ZSTD 'count files' '
|
|
ls master/ >output &&
|
|
test_line_count = 5 output
|
|
'
|
|
|
|
test_expect_success ZSTD 'verify untarred file-5' '
|
|
grep "^5$" master/file-5 &&
|
|
test_line_count = 1 master/file-5
|
|
'
|
|
|
|
test_expect_success 'get foo/snapshot/master.zip' '
|
|
cgit_url "foo/snapshot/master.zip" >tmp
|
|
'
|
|
|
|
test_expect_success 'check HTML headers (zip)' '
|
|
head -n 1 tmp |
|
|
grep "Content-Type: application/x-zip" &&
|
|
|
|
head -n 2 tmp |
|
|
grep "Content-Disposition: inline; filename=.master.zip."
|
|
'
|
|
|
|
test_expect_success 'strip off the header lines (zip)' '
|
|
strip_headers <tmp >master.zip
|
|
'
|
|
|
|
if test -n "$(which unzip 2>/dev/null)"; then
|
|
test_set_prereq UNZIP
|
|
else
|
|
say 'Skipping ZIP validation tests: unzip not found'
|
|
fi
|
|
|
|
test_expect_success UNZIP 'verify zip format' '
|
|
unzip -t master.zip
|
|
'
|
|
|
|
test_expect_success UNZIP 'unzip' '
|
|
rm -rf master &&
|
|
unzip master.zip
|
|
'
|
|
|
|
test_expect_success UNZIP 'count files (zip)' '
|
|
ls master/ >output &&
|
|
test_line_count = 5 output
|
|
'
|
|
|
|
test_expect_success UNZIP 'verify unzipped file-5' '
|
|
grep "^5$" master/file-5 &&
|
|
test_line_count = 1 master/file-5
|
|
'
|
|
|
|
test_done
|