tests/openpgp: Make tests more portable.
[gnupg.git] / tests / openpgp / gpgtar.test
1 #!/bin/sh
2
3 #set -x
4
5 # Make sure $srcdir is set.
6 if test "x$srcdir" = x
7 then
8     echo srcdir environment variable not set!
9     exit 1
10 fi
11
12 . $srcdir/defs.inc || exit 3
13
14 set -e
15
16 # Make sure $GNUPGHOME is set.
17 if test "x$GNUPGHOME" = x
18 then
19     echo "GNUPGHOME not set."
20     exit 1
21 fi
22
23 TESTFILES="$plain_files $data_files"
24
25 TESTDIR=gpgtar.d
26 FILELIST="${TESTDIR}/filelist"
27 PPFILE="${TESTDIR}/passphrase"
28 PPFLAGS="--gpg-args --passphrase-file=$PPFILE"
29
30 GPG=../../g10/gpg2
31 GPGARGS="$opt_always --no-permission-warning"
32
33 GPGTAR="../../tools/gpgtar"
34 GPGZIP="sh ../../tools/gpg-zip"
35
36 # Create, inspect, and extract an archive with the given options.
37 #
38 # $1 the tool to test
39 # $2 options used to create the archive
40 # $3 options used to inspect the archive
41 # $4 options used to extract the archive
42 do_test()
43 {
44   (
45     TOOL="$1"
46     CREATE_FLAGS="$2"
47     INSPECT_FLAGS="$3"
48     EXTRACT_FLAGS="$4"
49
50     rm -rf -- "${TESTDIR}"
51     mkdir "${TESTDIR}"
52     echo frob >"$PPFILE"
53
54     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $CREATE_FLAGS \
55           --output "${TESTDIR}/test.tar.pgp" $TESTFILES
56
57     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $INSPECT_FLAGS \
58           "${TESTDIR}/test.tar.pgp" \
59           >"$FILELIST"
60     for F in $TESTFILES
61     do
62         awk '{print $NF}' "$FILELIST" | grep "^${F}$" >/dev/null
63     done
64
65     $TOOL --gpg "$GPG"  --gpg-args "$GPGARGS" $EXTRACT_FLAGS \
66           --tar-args --directory="${TESTDIR}" \
67           "${TESTDIR}/test.tar.pgp"
68     for F in $TESTFILES
69     do
70         cmp "$F" "${TESTDIR}/$F"
71     done
72   )
73 }
74
75 for TOOL in "$GPGTAR" "$GPGZIP"
76 #for TOOL in "$GPGZIP"
77 do
78     # Asymmetric encryption.
79     do_test "$TOOL" \
80             "--encrypt --recipient $usrname2" \
81             "--list-archive" \
82             "--decrypt"
83
84     # Asymmetric encryption and signing.
85     do_test "$TOOL" \
86             "--encrypt --recipient $usrname2 --sign --local-user $usrname3" \
87             "--list-archive" \
88             "--decrypt"
89
90     # Signing only.
91     do_test "$TOOL" \
92             "--sign --local-user $usrname3" \
93             "--list-archive" \
94             "--decrypt"
95
96     # Symmetric encryption.
97     do_test "$TOOL" \
98             "${PPFLAGS} --symmetric" \
99             "${PPFLAGS} --list-archive" \
100             "${PPFLAGS} --decrypt"
101
102     # Symmetric encryption, explicitly choose cipher.
103     for a in `all_cipher_algos`; do
104         do_test "$TOOL" \
105                 "${PPFLAGS} --gpg-args --cipher=$a --symmetric" \
106                 "${PPFLAGS} --list-archive" \
107                 "${PPFLAGS} --decrypt"
108         break
109     done
110
111     # Asymmetric and symmetric encryption, and signing.
112     do_test "$TOOL" \
113             "${PPFLAGS} --encrypt --symmetric --recipient $usrname2 --sign --local-user $usrname3" \
114             "${PPFLAGS} --list-archive" \
115             "${PPFLAGS} --decrypt"
116 done
117
118 # Success!
119
120 exit 0