summaryrefslogtreecommitdiff
path: root/tests/tests/debpolicy-dbretry
blob: a9f2334121c841ca43351eeb111d2c6fec76335f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash
set -e
. tests/lib

t-tstunt-parsechangelog

t-debpolicy
t-prep-newpackage example 1.0

cd $p
revision=1
git tag start

echo DUMMY >some-file
git add some-file
git commit -m some-file
taint=`git rev-parse HEAD`
t-policy-admin taint --global $taint dummy
git reset --hard HEAD~

t-commit 'Make something to autotaint'
t-dgit build
t-dgit push --new

autotaint=`t-git-get-ref "refs/tags/$tagpfx/$v"`

git reset --hard start
t-commit 'Thing which will autotaint'
t-dgit build

fifo=$tmp/sqlite-cmds
mkfifo $fifo
exec 3<>$fifo
sqlite3 -interactive $tmp/git/policy.sqlite3 0<$fifo 3>&- &
sqlite3_pid=$!

taintsout=$tmp/sqlite3.taints-out
echo >&3 'begin;';
echo >&3 ".output $taintsout"
echo >&3 'select * from taints;';
echo >&3 'create table dummy (x text);'

t-dgit build

while ! grep $taint $taintsout; do sleep 0.1; done

DGIT_RPD_TEST_DBLOOP_HOOK='
	print STDERR "DBLOOP HOOK $sleepy\n";
	$poldbh->sqlite_busy_timeout(2500);
	if ($sleepy > 2) {
		system '\''
			set -ex
			echo >'"$fifo"' "rollback;"
			touch '"$tmp/sqlite3.rolled-back"'
		'\'' and die "$? $!";
	}
' \
t-dgit push --deliberately-not-fast-forward

exec 3>&-
wait $sqlite3_pid

ls $tmp/sqlite3.rolled-back

t-policy-admin list-taints | tee $tmp/taints-list | grep $autotaint

t-ok