summaryrefslogtreecommitdiff
path: root/EndoForge/test
diff options
context:
space:
mode:
Diffstat (limited to 'EndoForge/test')
-rw-r--r--EndoForge/test/Makefile38
-rw-r--r--EndoForge/test/tests.sh66
2 files changed, 104 insertions, 0 deletions
diff --git a/EndoForge/test/Makefile b/EndoForge/test/Makefile
new file mode 100644
index 0000000..3bc1a66
--- /dev/null
+++ b/EndoForge/test/Makefile
@@ -0,0 +1,38 @@
1.DEFAULT_GOAL = test
2
3include ../Makefile
4
5testuser = testuser
6
7SU = $(SUDO) su
8
9.PHONY: test useradd cleanuser
10
11useradd:
12 $(SUDO) useradd $(testuser) --shell /bin/bash --create-home
13 $(SU) - $(testuser) -c 'ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""'
14 $(SU) - $(testuser) -c 'git config --global user.name $(testuser)'
15 $(SU) - $(testuser) -c 'git config --global user.email $(testuser)'
16
17test: $(shell getent passwd $(testuser) >/dev/null || echo useradd)
18 $(ROOT_INSTALL) -t ~$(testuser) tests.sh
19 $(SU) - $(testuser) -c ./tests.sh
20
21ifeq ($(testuser),)
22$(error testuser not defined)
23endif
24cleanuser_command = $(SUDO) rm -I -r ~$(testuser)
25
26cleanuser:
27 : Preparing to run destructive command:
28 :
29 :
30 : $(cleanuser_command)
31 :
32 :
33 : Press ctrl-c to abort.
34 :
35 @for n in 5 4 3 2 1; do printf ' %d\r' "$$n"; sleep 1; done
36 $(cleanuser_command) || true
37 $(SUDO) userdel testuser || true
38
diff --git a/EndoForge/test/tests.sh b/EndoForge/test/tests.sh
new file mode 100644
index 0000000..37f819f
--- /dev/null
+++ b/EndoForge/test/tests.sh
@@ -0,0 +1,66 @@
1#!/bin/sh
2set -ex
3USER=u
4DIR=src/anonymous-ssh
5HOST=localhost
6SSH_ID=~/.ssh/id_ed25519
7
8get_sshfp()
9{
10 (
11 key="$1"
12 r="${2:-.}"
13 dns=$(mktemp) || exit
14 trap 'rm -rf "$dns"' EXIT
15
16 ssh-keygen -r "$r" -f "$key" > "$dns"
17 exec < "$dns"
18 while read line
19 do
20 set -- $line
21 if [ "$3 $5" = "SSHFP 2" ]
22 then
23 echo "$line"
24 break
25 fi
26 done
27 )
28}
29
30make_test_commit()
31{
32 newfile=newfile.$(date -Ins|tr -d :)
33 touch "$newfile"
34 git add "$newfile"
35 git commit -m "$newfile"
36}
37
38[ -e "$SSH_ID" ] || ssh-keygen -t ed25519 -f "$SSH_ID" -P ''
39
40git_namespace=$(set -- $(get_sshfp "$SSH_ID") && echo $6)
41
42ssh -o NoHostAuthenticationForLocalhost=yes $USER@$HOST -- test || true
43[ ! -e anonymous-ssh ] || rm -rf anonymous-ssh
44export GIT_SSH_COMMAND="ssh -o NoHostAuthenticationForLocalhost=yes -i $SSH_ID"
45git clone -v ${USER}@${HOST}:${DIR}
46cd anonymous-ssh
47
48make install
49
50git pull --ff-only
51make_test_commit
52git push -f
53make_test_commit
54git push
55git log -n4
56git pull --ff-only
57git log -n4
58git push
59
60# branch=$(git branch -q --show-current)
61# forkname=origin-myfork
62# ns_branch=refs/namespaces/$git_namespace/refs/heads/$branch
63# git remote add -m "$ns_branch" "$forkname" $(git remote get-url origin)
64# git push "$forkname"
65# git pull "$forkname" --ff-only "$branch"
66exit