tests/tests.yml

Sat, 21 Apr 2007 13:09:58 -0400

author
brett
date
Sat, 21 Apr 2007 13:09:58 -0400
branch
trunk
changeset 22
b240777ae53e
parent 21
fd3e10410040
child 23
039dd321a7d0
permissions
-rw-r--r--

[svn] Improve the way we check archive contents. If all the entries look like
they're in ., they really shouldn't count as being in the same directory;
look at the next piece of the path. If the archive only has one
non-directory item, report that more clearly. You'll be able to tell by
whether or not there's a trailing slash in the prompt.

Improve the tests for doing straight decompression, and seek to the
beginning of the archive before we start writing to the file -- otherwise,
we write 0-byte files.

Lots of new ideas in the TODO. I think I'll do another release once
recursion is interactive.

- 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: |
    TD=$PWD
    mkdir test-1.23
    cd /tmp
    ar x $TD/$1 data.tar.gz
    cd $TD/test-1.23
    tar -zxf /tmp/data.tar.gz
    rm /tmp/data.tar.gz

- 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 755 testdir
  posttest: |
    if [ "x`cat test-recursive-badperms/test-badperms/testdir/testfile`" = \
         "xhey" ]; then exit 0; else 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 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: |
    mkdir test-1.23
    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

mercurial