summaryrefslogtreecommitdiff
path: root/tests/lib-gdr
blob: fb58bf9c08a1556d4297acc0af99e64c8a52bc6d (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#

: ${GDR_TEST_DEBUG=-D}
export GDR_TEST_DEBUG

t-git-debrebase () {
	local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase}
	: '
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{'
	$gdr	$GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@"
	: '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
'
}

t-gdr-branch-structure () {
	local state=$1
	# state should be one of
	#   laundered
	#   stitched
	#   patches

	case $state in
	laundered)	etype=Upstream	;;
	stitched)	etype=Pseudomerge ;;
	patches)	etype=XXX-TODO ;;
	esac

	t-git-debrebase analyse >../anal.check
	expect=`git rev-parse HEAD`
	exec <../anal.check
	local cid ctype info nparents
	while read cid ctype info; do
		: ===== $cid $ctype $info =====
		test $cid = $expect
		local cetype=$etype
		if [ "x$ctype" = "x$etype" ]; then cetype=SAME; fi
		local parents="`git log -n1 --pretty=format:%P $cid`"
		expect="$parents"
		enparents=1
		: "$ctype/$cetype" "$parents"
		case "$ctype/$cetype" in
		Pseudomerge/SAME)
			expect=${info#Contributor=}
			expect=${expect%% *}
			enparents=2
			git diff --quiet $expect..$cid
			etype=Upstream
			;;
		Packaging/SAME|\
		Packaging/Upstream)
			git diff --quiet $expect..$cid -- ':.' ':!debian' 
			git diff --quiet $expect..$cid -- ':debian/patches'
			etype=Packaging
			;;
		Changelog/Packaging|\
		Changelog/Upstream)
			git diff --quiet $expect..$cid -- \
				':.' ':!debian/changelog'
			etype=Packaging
			;;
		Upstream/SAME)
			git diff --quiet $expect..$cid -- ':debian'
			;;
		BreakwaterUpstreamMerge/Upstream| \
		BreakwaterUpstreamMerge/Packaging)
			break
			;;
		*)
			fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
			;;
		esac

		local cnparents=`printf "%s" "$parents" | wc -w`
		test $cnparents = $enparents

		case "$parents" in
		*"$expect"*)	;;
		*)		fail 'unexpected parent' ;;
		esac

	done
}