diff options
Diffstat (limited to 'selftest.sh')
-rw-r--r-- | selftest.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/selftest.sh b/selftest.sh new file mode 100644 index 0000000..87b9d26 --- /dev/null +++ b/selftest.sh | |||
@@ -0,0 +1,38 @@ | |||
1 | #!/bin/sh | ||
2 | keyfile=~/.ssh/id_ed25519 | ||
3 | port=${1:-22022} | ||
4 | |||
5 | username=$(id -un) | ||
6 | hostname=$(hostname) | ||
7 | pwd=$(pwd) | ||
8 | |||
9 | append_idempotent() | ||
10 | { | ||
11 | if ! grep -q -F -e "$1" -- "$2" | ||
12 | then | ||
13 | printf '%s\n' "$1" >> "$2" | ||
14 | fi | ||
15 | } | ||
16 | |||
17 | know_thyself() | ||
18 | { | ||
19 | read keytype keydata _ < "$keyfile".pub || return | ||
20 | |||
21 | authline=$(printf '[%s]:%d %s %s\n' "$hostname" "$port" "$keytype" "$keydata") | ||
22 | append_idempotent "$authline" ~/.ssh/known_hosts | ||
23 | } | ||
24 | |||
25 | run_test() | ||
26 | { | ||
27 | ( | ||
28 | set -x | ||
29 | export GIT_SSH_COMMAND="ssh -p $port" | ||
30 | git push "${username}@${hostname}:${pwd}" "$(git branch -q --show-current)" | ||
31 | ) | ||
32 | } | ||
33 | |||
34 | know_thyself | ||
35 | fuser -k "$port"/tcp | ||
36 | (sleep 1 | ||
37 | run_test) & | ||
38 | make run | ||