From c1a0e80f71096bd2c89321d91060dd2c48f77119 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Sep 2001 08:54:51 +0000 Subject: [PATCH] write results to log files --- checks/ChangeLog | 14 ++++++++++++++ checks/Makefile.am | 36 ++++++++++++++++++++--------------- checks/armdetach.test | 4 ++-- checks/armdetachm.test | 4 ++-- checks/armencrypt.test | 4 ++-- checks/armencryptp.test | 4 ++-- checks/armsignencrypt.test | 6 +++--- checks/armsigs.test | 4 ++-- checks/clearsig.test | 32 +++++++++++++++---------------- checks/conventional-mdc.test | 4 ++-- checks/conventional.test | 8 ++++---- checks/decrypt-dsa.test | 2 +- checks/decrypt.test | 3 +-- checks/defs.inc | 4 ++++ checks/detach.test | 4 ++-- checks/detachm.test | 4 ++-- checks/encrypt-dsa.test | 8 ++++---- checks/encrypt.test | 8 ++++---- checks/encryptp.test | 2 +- checks/mds.test | 4 ++-- checks/multisig.test | 15 ++++++--------- checks/options.in | 1 + checks/pubring.asc | Bin 4982 -> 34932 bytes checks/run-gpg | 15 --------------- checks/run-gpg.patterns | 25 ------------------------ checks/run-gpgm | 12 ------------ checks/seat.test | 5 +++-- checks/signencrypt-dsa.test | 8 ++++---- checks/signencrypt.test | 6 +++--- checks/sigs-dsa.test | 8 ++++---- checks/sigs.test | 8 ++++---- checks/version.test | 2 +- 32 files changed, 117 insertions(+), 147 deletions(-) delete mode 100755 checks/run-gpg delete mode 100644 checks/run-gpg.patterns delete mode 100755 checks/run-gpgm diff --git a/checks/ChangeLog b/checks/ChangeLog index 48d76fb98..89493ec4f 100644 --- a/checks/ChangeLog +++ b/checks/ChangeLog @@ -1,3 +1,17 @@ +2001-09-28 Werner Koch + + * defs.inc: Write a log file for each test. + * run-gpg, run-gpgm, run-gpg.patterns: Removed. Replaced in all + tests by a simple macro from defs.inc. + * Makefile.am (CLEANFILES): Remove log files. + (./gpg_dearmor): create it and use it instead of the macro. + This is needed in multisig.test due to IFS tricks. + + * armsignencrypt.test, signencrypt-dsa.test, signencrypt.test, + armencryptp.test, armencrypt.test, encryptp.test, seat.test, + encrypt-dsa.test, encrypt.test: Use --always-trust because the + test are not designed to check the validity. + 2001-09-06 Werner Koch * genkey1024.test: Simplified by using a parameter file. diff --git a/checks/Makefile.am b/checks/Makefile.am index 6406390a0..6583def88 100644 --- a/checks/Makefile.am +++ b/checks/Makefile.am @@ -16,9 +16,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -## Process this file with automake to create Makefile.in +# Process this file with automake to create Makefile.in -GPG_DEARMOR = ../g10/gpg --no-options --no-greeting --batch --quiet --yes --dearmor GPG_IMPORT = ../g10/gpg --homedir . --quiet --yes --import TESTS = version.test mds.test \ @@ -40,11 +39,12 @@ TEST_FILES = pubring.asc secring.asc plain-1o.asc plain-2o.asc plain-3o.asc \ DATA_FILES = data-500 data-9000 data-32000 data-80000 plain-large -EXTRA_DIST = defs.inc run-gpg run-gpg.patterns $(TESTS) $(TEST_FILES) \ +EXTRA_DIST = defs.inc $(TESTS) $(TEST_FILES) \ mkdemodirs signdemokey CLEANFILES = prepared.stamp x y yy z out err $(DATA_FILES) \ - plain-1 plain-2 plain-3 options trustdb.gpg *.lock .\#lk* \ - pubring.gpg secring.gpg pubring.pkr secring.skr options + plain-1 plain-2 plain-3 trustdb.gpg *.lock .\#lk* \ + *.test.log options gpg_dearmor \ + pubring.gpg secring.gpg pubring.pkr secring.skr DISTCLEANFILES = pubring.gpg~ @@ -54,34 +54,40 @@ distclean-local: ./mkdemodirs --clean prepared.stamp: ./pubring.gpg ./secring.gpg ./plain-1 ./plain-2 ./plain-3 \ - ./pubring.pkr ./secring.skr ./options $(DATA_FILES) + ./pubring.pkr ./secring.skr ./options ./gpg_dearmor \ + $(DATA_FILES) $(GPG_IMPORT) $(srcdir)/pubdemo.asc echo timestamp >./prepared.stamp ./options: $(srcdir)/options.in cat $(srcdir)/options.in >./options -./pubring.gpg: $(srcdir)/pubring.asc $(srcdir)/pubdemo.asc - $(GPG_DEARMOR) -o ./pubring.gpg $(srcdir)/pubring.asc +./gpg_dearmor: + echo '#!/bin/sh' >./gpg_dearmor + echo "$(srcdir)/../g10/gpg --no-options --no-greeting \ + --no-secmem-warning --batch --dearmor" >>./gpg_dearmor + chmod 755 ./gpg_dearmor + +./pubring.gpg: $(srcdir)/pubring.asc $(srcdir)/pubdemo.asc ./gpg_dearmor + ./gpg_dearmor > ./pubring.gpg < $(srcdir)/pubring.asc ./secring.gpg: $(srcdir)/secring.asc - $(GPG_DEARMOR) -o ./secring.gpg $(srcdir)/secring.asc + ./gpg_dearmor > ./secring.gpg < $(srcdir)/secring.asc ./pubring.pkr: $(srcdir)/pubring.pkr.asc - $(GPG_DEARMOR) -o ./pubring.pkr $(srcdir)/pubring.pkr.asc + ./gpg_dearmor > ./pubring.pkr < $(srcdir)/pubring.pkr.asc ./secring.skr: $(srcdir)/secring.skr.asc - $(GPG_DEARMOR) -o ./secring.skr $(srcdir)/secring.skr.asc + ./gpg_dearmor > ./secring.skr < $(srcdir)/secring.skr.asc ./plain-1: $(srcdir)/plain-1o.asc - $(GPG_DEARMOR) -o ./plain-1 $(srcdir)/plain-1o.asc + ./gpg_dearmor > ./plain-1 < $(srcdir)/plain-1o.asc ./plain-2: $(srcdir)/plain-2o.asc - $(GPG_DEARMOR) -o ./plain-2 $(srcdir)/plain-2o.asc + ./gpg_dearmor > ./plain-2 < $(srcdir)/plain-2o.asc ./plain-3: $(srcdir)/plain-3o.asc - $(GPG_DEARMOR) -o ./plain-3 $(srcdir)/plain-3o.asc - + ./gpg_dearmor > ./plain-3 < $(srcdir)/plain-3o.asc data-500: diff --git a/checks/armdetach.test b/checks/armdetach.test index c68c5da82..c445d6ce6 100755 --- a/checks/armdetach.test +++ b/checks/armdetach.test @@ -5,7 +5,7 @@ #info Checking armored detached signatures for i in $plain_files $data_files ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sab -o x --yes $i - $srcdir/run-gpg -o /dev/null --yes x <$i || error "$i: bad signature" + echo "$usrpass1" | $GPG --passphrase-fd 0 -sab -o x --yes $i + $GPG -o /dev/null --yes x <$i || error "$i: bad signature" done diff --git a/checks/armdetachm.test b/checks/armdetachm.test index f628fcf2b..f1958424c 100755 --- a/checks/armdetachm.test +++ b/checks/armdetachm.test @@ -4,6 +4,6 @@ #info Checking armored detached signatures of multiple files i="$plain_files $data_files" -echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sab -o x --yes $i -cat $i | $srcdir/run-gpg -o /dev/null --yes x || error "$i: bad signature" +echo "$usrpass1" | $GPG --passphrase-fd 0 -sab -o x --yes $i +cat $i | $GPG -o /dev/null --yes x || error "$i: bad signature" diff --git a/checks/armencrypt.test b/checks/armencrypt.test index cade9dde4..356d1bda7 100755 --- a/checks/armencrypt.test +++ b/checks/armencrypt.test @@ -4,8 +4,8 @@ #info Checking armored encryption for i in $plain_files $data_files ; do - $srcdir/run-gpg -ea -o x --yes -r "$usrname2" $i - $srcdir/run-gpg -o y --yes x + $GPG --always-trust -ea -o x --yes -r "$usrname2" $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/armencryptp.test b/checks/armencryptp.test index 95a1efd63..d18c56b7e 100755 --- a/checks/armencryptp.test +++ b/checks/armencryptp.test @@ -4,9 +4,9 @@ #info Checking armored encryption with a pipe for i in $plain_files $data_files ; do - $srcdir/run-gpg -ea --yes -r "$usrname2" < $i | tee x | $srcdir/run-gpg -o y --yes + $GPG --always-trust -ea --yes -r "$usrname2" < $i | tee x | $GPG -o y --yes cmp $i y || error "$i: mismatch" - $srcdir/run-gpg --yes < x > y + $GPG --yes < x > y cmp $i y || error "$i: mismatch" done diff --git a/checks/armsignencrypt.test b/checks/armsignencrypt.test index f8ffdaf4d..24b9575ad 100755 --- a/checks/armsignencrypt.test +++ b/checks/armsignencrypt.test @@ -5,9 +5,9 @@ #info Checking armored signing and encryption for i in $plain_files $data_files ; do - echo "$usrpass1" \ - | $srcdir/run-gpg --passphrase-fd 0 -sae -o x --yes -r "$usrname2" $i - $srcdir/run-gpg -o y --yes x + echo "$usrpass1" | $GPG --passphrase-fd 0 --always-trust \ + -sae -o x --yes -r "$usrname2" $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/armsigs.test b/checks/armsigs.test index 34b5a7fa3..aecc06429 100755 --- a/checks/armsigs.test +++ b/checks/armsigs.test @@ -4,8 +4,8 @@ #info Checking armored signatures for i in $plain_files $data_files ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sa -o x --yes $i - $srcdir/run-gpg -o y --yes x + echo "$usrpass1" | $GPG --passphrase-fd 0 -sa -o x --yes $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/clearsig.test b/checks/clearsig.test index 8e502b41d..89d323317 100755 --- a/checks/clearsig.test +++ b/checks/clearsig.test @@ -14,17 +14,17 @@ # it is clear text and not binary text. # ====================================== for i in $plain_files plain-large ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sat -o x --yes $i - $srcdir/run-gpg --verify x + echo "$usrpass1" | $GPG --passphrase-fd 0 -sat -o x --yes $i + $GPG --verify x done # ====================================== # and once more to check rfc1991 # ====================================== for i in $plain_files plain-large ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 \ + echo "$usrpass1" | $GPG --passphrase-fd 0 \ --rfc1991 --digest-algo md5 -sat -o x --yes $i - $srcdir/run-gpg --verify x + $GPG --verify x done # ====================================== @@ -35,8 +35,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx EOF -echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 --clearsign -o x --yes y -$srcdir/run-gpg --verify x +echo "$usrpass1" | $GPG --passphrase-fd 0 --clearsign -o x --yes y +$GPG --verify x # ====================================== # and one with only one long lines @@ -44,15 +44,15 @@ $srcdir/run-gpg --verify x cat >y <y <y echo_n " " >>y -echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 --clearsign -o x --yes y -$srcdir/run-gpg --verify x +echo "$usrpass1" | $GPG --passphrase-fd 0 --clearsign -o x --yes y +$GPG --verify x # ====================================== @@ -94,9 +94,9 @@ cat >y <signed_data, c->sigfilename, n1? (n1->pkt->pkt.onepass_sig->sig_class == 0x01):0 ); EOF -echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 \ +echo "$usrpass1" | $GPG --passphrase-fd 0 \ --not-dash-escaped --clearsign -o x --yes y -$srcdir/run-gpg --verify x +$GPG --verify x diff --git a/checks/conventional-mdc.test b/checks/conventional-mdc.test index 760ae0309..463e0c49f 100755 --- a/checks/conventional-mdc.test +++ b/checks/conventional-mdc.test @@ -11,9 +11,9 @@ for i in 0 1 2 3 9 10 11 19 20 21 22 23 39 40 41 8192 32000 ; do else dd if=data-80000 of=z bs=1 count=$i 2>/dev/null fi - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 \ + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 \ --force-mdc --cipher $ciph -c -o x --yes z - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 \ + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 \ -o y --yes x cmp z y || error "$ciph/$i: mismatch" done diff --git a/checks/conventional.test b/checks/conventional.test index b638f1d25..87aeb9c56 100755 --- a/checks/conventional.test +++ b/checks/conventional.test @@ -8,16 +8,16 @@ export GNUPG_ENABLE_TWOFISH #info Checking conventional encryption for i in plain-2 data-32000 ; do - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 -c -o x --yes $i - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 -o y --yes x + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 -c -o x --yes $i + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 -o y --yes x cmp $i y || error "$i: mismatch" done for a in cast5 3des twofish; do for i in plain-1 data-80000 ; do - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 \ + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 \ --cipher-algo $a -c -o x --yes $i - echo "Hier spricht HAL" | $srcdir/run-gpg --passphrase-fd 0 -o y --yes x + echo "Hier spricht HAL" | $GPG --passphrase-fd 0 -o y --yes x cmp $i y || error "$i: ($a) mismatch" done done diff --git a/checks/decrypt-dsa.test b/checks/decrypt-dsa.test index ba73ddf5f..6dc7dc459 100755 --- a/checks/decrypt-dsa.test +++ b/checks/decrypt-dsa.test @@ -4,7 +4,7 @@ #info Checking decryption of supplied DSA encrypted file for i in "plain-1" ; do - $srcdir/run-gpg $dsa_keyrings -o y --yes $srcdir/$i-pgp.asc + $GPG $dsa_keyrings -o y --yes $srcdir/$i-pgp.asc cmp $i y || error "$i: mismatch" done diff --git a/checks/decrypt.test b/checks/decrypt.test index 1d7449401..aab416750 100755 --- a/checks/decrypt.test +++ b/checks/decrypt.test @@ -4,8 +4,7 @@ #info Checking decryption of supplied files for i in $plain_files ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 \ - -o y --yes $srcdir/$i.asc + echo "$usrpass1" | $GPG --passphrase-fd 0 -o y --yes $srcdir/$i.asc cmp $i y || error "$i: mismatch" done diff --git a/checks/defs.inc b/checks/defs.inc index 4a4f764ed..8060bd20a 100755 --- a/checks/defs.inc +++ b/checks/defs.inc @@ -98,5 +98,9 @@ pgmname=`basename $0` [ -z "$srcdir" ] && fatal "not called from make" +GPG="${srcdir}/../g10/gpg --homedir . " + +exec 2> ${0}.log + : # end \ No newline at end of file diff --git a/checks/detach.test b/checks/detach.test index cdad558c1..6a3ae05c5 100755 --- a/checks/detach.test +++ b/checks/detach.test @@ -4,7 +4,7 @@ #info Checking detached signatures for i in $plain_files $data_files ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sb -o x --yes $i - $srcdir/run-gpg -o /dev/null --yes x <$i || error "$i: bad signature" + echo "$usrpass1" | $GPG --passphrase-fd 0 -sb -o x --yes $i + $GPG -o /dev/null --yes x <$i || error "$i: bad signature" done diff --git a/checks/detachm.test b/checks/detachm.test index b5fb05af5..dc60bb239 100755 --- a/checks/detachm.test +++ b/checks/detachm.test @@ -4,6 +4,6 @@ #info Checking detached signatures of multiple files i="$plain_files $data_files" -echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -sb -o x --yes $i -cat $i | $srcdir/run-gpg -o /dev/null --yes x || error "$i: bad signature" +echo "$usrpass1" | $GPG --passphrase-fd 0 -sb -o x --yes $i +cat $i | $GPG -o /dev/null --yes x || error "$i: bad signature" diff --git a/checks/encrypt-dsa.test b/checks/encrypt-dsa.test index ba0564fd8..27891bf01 100755 --- a/checks/encrypt-dsa.test +++ b/checks/encrypt-dsa.test @@ -4,16 +4,16 @@ #info Checking encryption for i in $plain_files $data_files ; do - $srcdir/run-gpg $dsa_keyrings -e -o x --yes -r "$dsa_usrname2" $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings --always-trust -e -o x --yes -r "$dsa_usrname2" $i + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" done # and with cast for i in $plain_files $data_files ; do - $srcdir/run-gpg $dsa_keyrings --cipher-algo cast5 -e \ + $GPG $dsa_keyrings --always-trust --cipher-algo cast5 -e \ -o x --yes -r "$dsa_usrname2" $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/encrypt.test b/checks/encrypt.test index 468136cca..4e5c5c042 100755 --- a/checks/encrypt.test +++ b/checks/encrypt.test @@ -4,13 +4,13 @@ #info Checking encryption for i in $plain_files $data_files ; do - $srcdir/run-gpg -e -o x --yes -r "$usrname2" $i - $srcdir/run-gpg -o y --yes x + $GPG --always-trust -e -o x --yes -r "$usrname2" $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done for i in $plain_files $data_files ; do - $srcdir/run-gpg -e -o x --yes -r "$usrname2" --cipher-algo cast5 $i - $srcdir/run-gpg -o y --yes x + $GPG --always-trust -e -o x --yes -r "$usrname2" --cipher-algo cast5 $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/encryptp.test b/checks/encryptp.test index ca88d219e..7df24efec 100755 --- a/checks/encryptp.test +++ b/checks/encryptp.test @@ -4,7 +4,7 @@ #info Checking encryption with a pipe for i in $plain_files $data_files ; do - $srcdir/run-gpg -e --yes -r "$usrname2" <$i | $srcdir/run-gpg --yes > y + $GPG --always-trust -e --yes -r "$usrname2" <$i | $GPG --yes > y cmp $i y || error "$i: mismatch" done diff --git a/checks/mds.test b/checks/mds.test index 6b9cfbd15..60a79471c 100755 --- a/checks/mds.test +++ b/checks/mds.test @@ -13,7 +13,7 @@ test_one () { failed="" #info Checking message digests -cat /dev/null | $srcdir/run-gpg -v --print-mds >y +cat /dev/null | $GPG -v --print-mds >y test_one "MD5" "D41D8CD98F00B204E9800998ECF8427E" test_one "SHA1" "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709" test_one "RMD160" "9C1185A5C5E9FC54612808977EE8F548B2258D31" @@ -25,7 +25,7 @@ fi [ "$failed" != "" ] && error "$failed failed for empty string" -echo_n "abcdefghijklmnopqrstuvwxyz" | $srcdir/run-gpg --print-mds >y +echo_n "abcdefghijklmnopqrstuvwxyz" | $GPG --print-mds >y test_one "MD5" "C3FCD3D76192E4007DFB496CCA67E13B" test_one "SHA1" "32D10C7B8CF96570CA04CE37F2A19D84240D3A89" test_one "RMD160" "F71C27109C692C1B56BBDCEB5B9D2865B3708DBC" diff --git a/checks/multisig.test b/checks/multisig.test index 7760eb587..c391f6fdc 100755 --- a/checks/multisig.test +++ b/checks/multisig.test @@ -122,27 +122,24 @@ cnksIEkgY2FuJ3QgZG8gdGhhdAo= save_IFS="${IFS}" IFS="" for i in "$sig_1ls1ls_valid" "$sig_ls_valid" "$sig_sl_valid"; do - echo "$i" | $srcdir/run-gpg --dearmor >x + echo "$i" | ./gpg_dearmor >x IFS="${save_IFS}" - ../g10/gpg --homedir . --verify x 2>/dev/null || error "valid is invalid" + $GPG --verify x 2>/dev/null || error "valid is invalid" IFS="" done #for i in "$sig_11lss_valid_but_is_not" "$sig_11lss11lss_valid_but_is_not" \ # "$sig_ssl_valid_but_is_not"; do -# echo "$i" | $srcdir/run-gpg --dearmor >x -# ../g10/gpg --homedir . --verify /dev/null || error "valid is invalid" +# echo "$i" | $GPG --dearmor >x +# $GPG --verify /dev/null || error "valid is invalid" #done # without the +e ksh seems to terminate the for loop set +e for i in "$sig_1lsls_invalid" "$sig_lsls_invalid" \ "$sig_lss_invalid" "$sig_slsl_invalid" ; do - echo "$i" | $srcdir/run-gpg --dearmor >x + echo "$i" | ./gpg_dearmor >x IFS="${save_IFS}" - ../g10/gpg --homedir . --verify /dev/null && error "invalid is valid" + $GPG --verify /dev/null && error "invalid is valid" IFS="" done IFS="${save_IFS}" - - - diff --git a/checks/options.in b/checks/options.in index 785a9bdc6..166512ff3 100644 --- a/checks/options.in +++ b/checks/options.in @@ -3,3 +3,4 @@ no-secmem-warning load-extension ../cipher/tiger batch emulate-md-encode-bug +no-auto-check-trustdb diff --git a/checks/pubring.asc b/checks/pubring.asc index 2bb25df1444c25922176168907a2babca535a237..4239ece9a2a5eb4173fe99c2d049371336045521 100644 GIT binary patch literal 34932 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 literal 4982 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 AZ2$lO diff --git a/checks/run-gpg b/checks/run-gpg deleted file mode 100755 index a9e0e31cc..000000000 --- a/checks/run-gpg +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -[ -n "$show_cmds" ] && echo "../g10/gpg --homedir . $*" - -if ../g10/gpg --homedir . $* 2>err.tmp.$$ ; then - : -else - echo "(../g10/gpg --homedir . $*) failed" >&2 - cat err.tmp.$$ >&2 - rm err.tmp.$$ - exit 1 -fi -fgrep -v -f $srcdir/run-gpg.patterns err.tmp.$$ -rm err.tmp.$$ - diff --git a/checks/run-gpg.patterns b/checks/run-gpg.patterns deleted file mode 100644 index a67b60411..000000000 --- a/checks/run-gpg.patterns +++ /dev/null @@ -1,25 +0,0 @@ -gpg: Good signature from -gpg: aka " -gpg: Signature made -gpg: ./trustdb.gpg: trustdb created -gpg: NOTE: cipher algorithm 3 not found in preferences -gpg: NOTE: cipher algorithm 4 not found in preferences -gpg: NOTE: secret key 2E5FA4F4 is NOT protected. -gpg: NOTE: secret key 439F02CA is NOT protected. -gpg: WARNING: using insecure random number generator -gpg: NOTE: signature key expired -NOTE: this is a development version! -gpg: encrypted with -"test two (no pp) " -"Test one (pp=def) " -"pgp5 test " -gpg: using secondary key -secret key 9D266E0F expired at -: expired at -gpg: Note: This key has expired! -gpg: Fingerprint: 0826 1CB7 C976 5344 E207 4184 3C6B BBE6 9D26 6E0F -gpg: 3DES encrypted data -gpg: CAST5 encrypted data -gpg: BLOWFISH encrypted data -gpg: TWOFISH encrypted data -gpg: RIJNDAEL encrypted data diff --git a/checks/run-gpgm b/checks/run-gpgm deleted file mode 100755 index 9afbee393..000000000 --- a/checks/run-gpgm +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -if ../g10/gpgm --homedir . $* 2>err.tmp.$$ ; then - : -else - echo "(../g10/gpgm --homedir . $*) failed" >&2 - cat err.tmp.$$ >&2 - rm err.tmp.$$ - exit 1 -fi -rm err.tmp.$$ - diff --git a/checks/seat.test b/checks/seat.test index f89234e60..72ab27f41 100755 --- a/checks/seat.test +++ b/checks/seat.test @@ -3,8 +3,9 @@ . $srcdir/defs.inc || exit 3 for i in $plain_files ; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -seat -r two -o x --yes $i - $srcdir/run-gpg -o y --yes x + echo "$usrpass1" | $GPG --passphrase-fd 0 --always-trust -seat \ + -r two -o x --yes $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/signencrypt-dsa.test b/checks/signencrypt-dsa.test index 8b588aa08..8121dd86e 100755 --- a/checks/signencrypt-dsa.test +++ b/checks/signencrypt-dsa.test @@ -4,17 +4,17 @@ #info Checking signing and encryption for DSA for i in $plain_files $data_files ; do - $srcdir/run-gpg $dsa_keyrings -se -o x --yes \ + $GPG $dsa_keyrings --always-trust -se -o x --yes \ -u "$dsa_usrname1" -r "$dsa_usrname2" $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" done for da in ripemd160 sha1 md5; do for i in $plain_files; do - $srcdir/run-gpg $dsa_keyrings -se -o x --yes --digest-algo $da \ + $GPG $dsa_keyrings --always-trust -se -o x --yes --digest-algo $da \ -u "$dsa_usrname1" -r "$dsa_usrname2" $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" # process only the first one break diff --git a/checks/signencrypt.test b/checks/signencrypt.test index fa9363f7f..1d05990fc 100755 --- a/checks/signencrypt.test +++ b/checks/signencrypt.test @@ -5,9 +5,9 @@ #info Checking signing and encryption for i in $plain_files $data_files ; do - echo "$usrpass1" \ - | $srcdir/run-gpg --passphrase-fd 0 -se -o x --yes -r "$usrname2" $i - $srcdir/run-gpg -o y --yes x + echo "$usrpass1" | $GPG --passphrase-fd 0 --always-trust \ + -se -o x --yes -r "$usrname2" $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done diff --git a/checks/sigs-dsa.test b/checks/sigs-dsa.test index 8f29602dd..647e53f9b 100755 --- a/checks/sigs-dsa.test +++ b/checks/sigs-dsa.test @@ -4,16 +4,16 @@ #info Checking DSA signatures (default digest algo) for i in $plain_files $data_files; do - $srcdir/run-gpg $dsa_keyrings -s -o x --yes -u $dsa_usrname1 $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings -s -o x --yes -u $dsa_usrname1 $i + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" done for da in ripemd160 sha1 md5; do for i in $plain_files; do - $srcdir/run-gpg $dsa_keyrings --digest-algo $da \ + $GPG $dsa_keyrings --digest-algo $da \ -s -o x --yes -u $dsa_usrname1 $i - $srcdir/run-gpg $dsa_keyrings -o y --yes x + $GPG $dsa_keyrings -o y --yes x cmp $i y || error "$i: mismatch" # process only the first one break diff --git a/checks/sigs.test b/checks/sigs.test index 702a55476..7a8f998c1 100755 --- a/checks/sigs.test +++ b/checks/sigs.test @@ -4,8 +4,8 @@ #info Checking signatures for i in $plain_files $data_files; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 -s -o x --yes $i - $srcdir/run-gpg -o y --yes x + echo "$usrpass1" | $GPG --passphrase-fd 0 -s -o x --yes $i + $GPG -o y --yes x cmp $i y || error "$i: mismatch" done @@ -16,9 +16,9 @@ fi for da in $hash_algo_list ; do for i in $plain_files; do - echo "$usrpass1" | $srcdir/run-gpg --passphrase-fd 0 --digest-algo $da \ + echo "$usrpass1" | $GPG --passphrase-fd 0 --digest-algo $da \ -s -o x --yes $i - $srcdir/run-gpg -o y --yes x + $GPG -o y --yes x cmp $i y || error "$i: mismatch" # process only the first one break diff --git a/checks/version.test b/checks/version.test index 13ca07364..f1fd7284f 100755 --- a/checks/version.test +++ b/checks/version.test @@ -3,7 +3,7 @@ . $srcdir/defs.inc || exit 3 # print the GPG version -$srcdir/run-gpg --version +$GPG --version #fixme: check that the output is correct