chiark / gitweb /
test suite: gnupg: Save stdin on apt-key's import invocations
[dgit.git] / tests / tstunt / gpg-locked
1 #!/bin/sh
2 set -e
3
4 for attempt in '' ' ' exec; do
5
6 case "$*" in
7 *"
8 --batch
9 --import")
10         # ^ apt-key's invocation
11         if [ "x$stdin_tmp" = x ]; then
12                 stdin_tmp="$GNUPGHOME"/dgit-stdin-tmp
13                 cat >$stdin_tmp
14                 stdin_tmp_bytes=$(wc -c <$stdin_tmp)
15         fi
16         exec <$stdin_tmp
17         ;;
18 esac
19
20 set +e
21 $attempt                                                \
22 $DGIT_TEST_REAL_GPG                                     \
23         --agent-program=$DGIT_STUNT_AGENT               \
24         "$@"
25 rc=$?
26 set -e
27
28 if [ $rc != 2 ]; then exit $rc; fi
29
30 echo >&2 "WARNING - GNUPG FAILED $rc - STUNT GNUPG $attempt $stdin_tmp_bytes $*"
31
32 sh -ec '
33         if [ "x$DGIT_GNUPG_STUNT_ERRLOG" != x ]; then
34                 exec >"$DGIT_GNUPG_STUNT_ERRLOG"
35         else
36                 exec 2>/dev/null
37         fi
38         exec >/dev/tty
39         printf "%s\n" "$*"
40 ' x "GNUPG WRAPPER - TROUBLE - $HOME $GNUPGHOME - FAILED $rc $attempt $stdin_tmp_bytes $*"
41
42 sleep 10
43
44 done
45
46 exit 127