tests: Make migration test more robust and silent.
[gnupg.git] / tests / migrations / from-classic.test
1 #!/bin/sh
2 # Copyright 2016 g10 Code GmbH
3 #
4 # This file is free software; as a special exception the author gives
5 # unlimited permission to copy and/or distribute it, with or without
6 # modifications, as long as this notice is preserved.  This file is
7 # distributed in the hope that it will be useful, but WITHOUT ANY
8 # WARRANTY, to the extent permitted by law; without even the implied
9 # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
11 if [ -z "$srcdir" ]; then
12    echo "not called from make" >&2
13    exit 1
14 fi
15
16 unset GNUPGHOME
17 set -e
18
19 # (We may not use a relative name for gpg-agent.)
20 GPG_AGENT="$(cd ../../agent && /bin/pwd)/gpg-agent"
21 GPG="../../g10/gpg --no-permission-warning --no-greeting --no-secmem-warning
22 --batch --agent-program=${GPG_AGENT}|--debug-quick-random"
23
24 TEST="from-classic"
25
26 setup_home()
27 {
28     XGNUPGHOME="`mktemp -d`"
29     rm -rf -- scratch
30     mkdir -p "$XGNUPGHOME"
31     for F in $srcdir/$TEST.gpghome/*.asc; do
32         $GPG --dearmor <"$F" >"$XGNUPGHOME/`basename $F .asc`"
33     done
34     chmod go-rwx $XGNUPGHOME/*
35     export GNUPGHOME="$XGNUPGHOME"
36 }
37
38 cleanup_home()
39 {
40     rm -rf -- "$XGNUPGHOME"
41 }
42
43 trigger_migration()
44 {
45     $GPG --list-secret-keys >/dev/null 2>&1
46 }
47
48 assert_migrated()
49 {
50     test -f $GNUPGHOME/.gpg-v21-migrated
51
52     for KEY in D74C5F22 C40FDECF ECABF51D; do
53         $GPG --list-secret-keys $KEY >/dev/null
54     done
55 }
56
57 setup_home
58 trigger_migration
59 assert_migrated
60 cleanup_home
61
62 # Test with an existing private-keys-v1.d.
63 setup_home
64 mkdir "$GNUPGHOME/private-keys-v1.d"
65 trigger_migration
66 assert_migrated
67 cleanup_home
68
69 # Test with an existing private-keys-v1.d with weird permissions.
70 setup_home
71 mkdir "$GNUPGHOME/private-keys-v1.d"
72 chmod 0 "$GNUPGHOME/private-keys-v1.d"
73 trigger_migration
74 assert_migrated
75 cleanup_home
76
77 # XXX Check a case where the migration fails.