| #!/bin/bash |
| |
| [ -f testing.sh ] && . testing.sh |
| |
| #testing "name" "command" "result" "infile" "stdin" |
| |
| # Decompress files. |
| # On success, the input files are removed and replaced by new |
| # files without the .gz suffix. |
| echo -n "foo " | gzip > f1.gz |
| echo "bar" | gzip > f2.gz |
| testing "with input files" "gunzip f1.gz f2.gz && |
| ! test -f f1.gz && ! test -f f2.gz && |
| test -f f1 && test -f f2 && |
| cat f1 f2" "foo bar\n" "" "" |
| rm -f f1 f2 f1.gz f2.gz |
| |
| # With no files, decompresses stdin to stdout. |
| echo "hello world" | gzip > f.gz |
| testing "no files (stdin to stdout)" "cat f.gz | gunzip > f && |
| test -f f.gz && cat f" "hello world\n" "" "" |
| rm -f f f.gz |
| |
| # -c Output to stdout |
| echo -n "foo " | gzip > f1.gz |
| echo "bar" | gzip > f2.gz |
| testing "with input files and -c" "gunzip -c f1.gz f2.gz > out && |
| test -f f1.gz && test -f f2.gz && |
| ! test -f f1 && ! test -f f2 && |
| cat out" "foo bar\n" "" "" |
| rm -f f1.gz f2.gz out |
| |
| # TODO: how to test "gunzip -f"? |
| |
| # -k Keep input files (don't remove) |
| echo "hello world" | gzip > f1.gz |
| testing "-k" "gunzip -k f1.gz && cat f1 && zcat f1.gz" \ |
| "hello world\nhello world\n" "" "" |
| rm -f f1 f1.gz |
| |
| # Test that gunzip preserves permissions and times. |
| export TZ=UTC |
| echo "hello world" | gzip > f1.gz |
| chmod 0411 f1.gz |
| touch -a -t 197801020304 f1.gz |
| touch -m -t 198704030201 f1.gz |
| testing "permissions/times preservation" \ |
| "gunzip -k f1.gz && stat -c '%a %X %Y' f1 && stat -c '%a %Y' f1.gz" \ |
| "411 252558240 544413660\n411 544413660\n" "" "" |
| rm -f f1 f1.gz |