Fri, 23 Nov 2007 11:33:30 -0500
[svn] Small optimization to be nice to the system: don't try a given extractor
more than once.
- name: basic .tar filenames: test-1.23.tar baseline: | tar -xf $1 - name: basic .tar.gz filenames: test-1.23.tar.gz baseline: | tar -zxf $1 - name: basic .tar.bz2 filenames: test-1.23.tar.bz2 baseline: | mkdir test-1.23 cd test-1.23 tar -jxf ../$1 - name: basic .zip filenames: test-1.23.zip baseline: | mkdir test-1.23 cd test-1.23 unzip -q ../$1 - name: basic .deb filenames: test-1.23_all.deb baseline: | mkdir test-1.23 cd test-1.23 ar p ../$1 data.tar.gz | tar -zx - name: basic .gem filenames: test-1.23.gem baseline: | mkdir test-1.23 cd test-1.23 tar -xOf ../$1 data.tar.gz | tar -zx - name: basic .7z filenames: test-1.23.7z baseline: | 7z x $1 - name: basic .lzma filenames: test-1.23.tar.lzma baseline: | lzcat $1 | tar -x - name: .deb metadata filenames: test-1.23_all.deb options: --metadata baseline: | mkdir test-1.23 cd test-1.23 ar p ../$1 control.tar.gz | tar -zx - name: .gem metadata filenames: test-1.23.gem options: -m baseline: | tar -xOf $1 metadata.gz | zcat > test-1.23.gem-metadata.txt cleanup: rm -f test-1.23.gem-metadata.txt posttest: | if [ "x`cat test-1.23.gem-metadata.txt`" != "xhi" ]; then exit 1; fi - name: recursion and permissions filenames: test-recursive-badperms.tar.bz2 options: -n -r baseline: | mkdir test-recursive-badperms cd test-recursive-badperms tar -jxf ../$1 mkdir test-badperms cd test-badperms tar -xf ../test-badperms.tar chmod 700 testdir posttest: | if [ "x`cat test-recursive-badperms/test-badperms/testdir/testfile`" != \ "xhey" ]; then exit 1; fi - name: decompressing gz directory: inside-dir filenames: ../test-text.gz baseline: | zcat $1 >test-text posttest: | if [ "x`cat test-text`" != "xhi" ]; then exit 1; fi - name: decompressing bz2 directory: inside-dir filenames: ../test-text.bz2 baseline: | bzcat $1 >test-text posttest: | if [ "x`cat test-text`" != "xhi" ]; then exit 1; fi - name: decompression with -r directory: inside-dir filenames: ../test-text.gz options: -n -r baseline: | zcat $1 >test-text - name: decompression with -fr directory: inside-dir filenames: ../test-text.gz options: -n -fr baseline: | zcat $1 >test-text - name: overwrite protection filenames: test-1.23.tar.bz2 baseline: | mkdir test-1.23.1 cd test-1.23.1 tar -jxf ../$1 prerun: | mkdir test-1.23 - name: overwrite option filenames: test-1.23.tar.bz2 options: -n -o baseline: | cd test-1.23 tar -jxf ../$1 prerun: | mkdir test-1.23 - name: flat option directory: inside-dir filenames: ../test-1.23.tar.bz2 options: -n -f baseline: | tar -jxf $1 - name: flat recursion and permissions directory: inside-dir filenames: ../test-recursive-badperms.tar.bz2 options: -n -fr baseline: | tar -jxf $1 tar -xf test-badperms.tar chmod 700 testdir posttest: | if [ "x`cat testdir/testfile`" != "xhey" ]; then exit 1; fi - name: no files error: true grep: "[Uu]sage" - name: bad file error: true filenames: nonexistent-file.tar - name: not an archive error: true filenames: tests.yml - name: bad options options: -n --nonexistent-option filenames: test-1.23.tar error: true - name: --version options: -n --version grep: ersion \d+\.\d+ filenames: test-1.23.tar baseline: | exit 0 - name: one good archive of many filenames: tests.yml test-1.23.tar nonexistent-file.tar error: true baseline: | tar -xf $2 - name: silence filenames: tests.yml options: -n -qq error: true antigrep: . - name: can't write to directory directory: inside-dir filenames: ../test-1.23.tar error: true grep: ERROR antigrep: Traceback prerun: | chmod 500 . - name: list contents of one file options: -n -l filenames: test-1.23.tar output: | test-1.23/ test-1.23/1/ test-1.23/1/2/ test-1.23/1/2/3 test-1.23/a/ test-1.23/a/b test-1.23/foobar - name: list contents of multiple files options: -n --table filenames: test-1.23_all.deb test-1.23.zip output: | test-1.23_all.deb: 1/ 1/2/ 1/2/3 a/ a/b foobar test-1.23.zip: 1/2/3 a/b foobar - name: list contents of compressed file options: -n -t filenames: test-text.gz output: test-text - name: default behavior with one directory (gz) options: -n filenames: test-onedir.tar.gz baseline: | mkdir test-onedir cd test-onedir tar -zxf ../$1 - name: one directory extracted inside another (gz) options: "" filenames: test-onedir.tar.gz input: i baseline: | mkdir test-onedir cd test-onedir tar -zxf ../$1 - name: one directory extracted with rename (gz) options: "" filenames: test-onedir.tar.gz input: r baseline: | tar -zxf $1 mv test test-onedir - name: one directory extracted here (gz) options: "" filenames: test-onedir.tar.gz input: h baseline: | tar -zxf $1 - name: default behavior with one directory (bz2) options: -n filenames: test-onedir.tar.gz baseline: | mkdir test-onedir cd test-onedir tar -zxf ../$1 - name: one directory extracted inside another (bz2) options: "" filenames: test-onedir.tar.gz input: i baseline: | mkdir test-onedir cd test-onedir tar -zxf ../$1 - name: one directory extracted with rename (bz2) options: "" filenames: test-onedir.tar.gz input: r baseline: | tar -zxf $1 mv test test-onedir - name: one directory extracted here (bz2) options: "" filenames: test-onedir.tar.gz input: h baseline: | tar -zxf $1 - name: bomb with preceding dot in the table filenames: test-dot-first-bomb.tar.gz options: "" antigrep: one entry baseline: | mkdir test-dot-first-bomb cd test-dot-first-bomb tar -zxf ../$1 - name: one directory preceded by dot in the table filenames: test-dot-first-onedir.tar.gz options: "" grep: "one entry: (./)?dir/" input: h baseline: | tar -zxf $1 - name: two one-item archives with different answers filenames: test-onedir.tar.gz test-onedir.tar.gz options: "" input: | h r baseline: | tar -zxf $1 mv test test-onedir tar -zxf $1 - name: interactive recursion (always) filenames: test-recursive-badperms.tar.bz2 test-recursive-badperms.tar.bz2 options: "" input: | i a i baseline: | extract() { mkdir test-recursive-badperms$2 cd test-recursive-badperms$2 tar -jxf ../$1 mkdir test-badperms cd test-badperms tar -xf ../test-badperms.tar chmod 700 testdir cd ../.. } extract $1 extract $1 .1 - name: interactive recursion (once) filenames: test-recursive-badperms.tar.bz2 test-recursive-badperms.tar.bz2 options: "" input: | i o i n baseline: | mkdir test-recursive-badperms cd test-recursive-badperms tar -jxf ../$1 mkdir test-badperms cd test-badperms tar -xf ../test-badperms.tar chmod 700 testdir cd ../.. mkdir test-recursive-badperms.1 cd test-recursive-badperms.1 tar -jxf ../$1 - name: interactive recursion (never) filenames: test-recursive-badperms.tar.bz2 test-recursive-badperms.tar.bz2 options: "" input: | i v i baseline: | extract() { mkdir test-recursive-badperms$2 cd test-recursive-badperms$2 tar -jxf ../$1 cd .. } extract $1 extract $1 .1 - name: extracting file with bad extension filenames: test-1.23.bin prerun: cp ${1}test-1.23.tar.gz ${1}test-1.23.bin cleanup: rm -f ${1}test-1.23.bin baseline: | tar -zxf $1 - name: extracting file with misleading extension filenames: trickery.tar.gz prerun: cp ${1}test-1.23.zip ${1}trickery.tar.gz cleanup: rm -f ${1}trickery.tar.gz baseline: | mkdir trickery cd trickery unzip -q ../$1 - name: get an error when extracting a non-archive filenames: /dev/null error: true grep: ERROR - name: extract an archive with one file here filenames: test-onefile.tar.gz options: "" grep: "one entry: " input: | h n baseline: | tar -zxf $1