summaryrefslogtreecommitdiff
path: root/sys/src/cmd/git/test/range.rc
blob: 6dbb474197fdb631fe40c434be90ad0b36f178ee (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
#!/bin/rc

. util.rc

rm -fr scratch
mkdir -p scratch
cd scratch

fn commit {
	$G/$O.save -n regress -e regress $* f
}

# h→g→f
# ↓   ↓
# e→d→c→b→a
echo @@ test range @@
@{
	q $G/init a
	cd a
	touch f

	a=`{commit -m a}
	b=`{commit -m b -p $a}
	c=`{commit -m c -p $b}
	d=`{commit -m d -p $c}
	e=`{commit -m e -p $d}
	f=`{commit -m f -p $c}
	g=`{commit -m g -p $f}
	h=`{commit -m h -p $e -p $g}
	map='
		s/^'$a'$/a/
		s/^'$b'$/b/
		s/^'$c'$/c/
		s/^'$d'$/d/
		s/^'$e'$/e/
		s/^'$f'$/f/
		s/^'$g'$/g/
		s/^'$h'$/h/
	'

	diff -u <{echo d; echo e; echo g; echo h} \
		<{$G/$O.query $f..$h | sed -e $map} || die range
}

#       b
#      ↙ ↖
# f←e←d   a
#      ↖ ↙
#       c
echo @@ test range 2 @@
@{
	q $G/init b
	cd b
	touch f

	a=`{commit -m a}
	b=`{commit -m b -p $a}
	c=`{commit -m c -p $a}
	d=`{commit -m d -p $b -p $c}
	e=`{commit -m e -p $d}
	f=`{commit -m f -p $e}
	map='
		s/^'$a'$/a/
		s/^'$b'$/b/
		s/^'$c'$/c/
		s/^'$d'$/d/
		s/^'$e'$/e/
		s/^'$f'$/f/
	'

	diff -u <{echo c; echo d; echo e; echo f} \
		<{$G/$O.query $b..$f | sed -e $map} || die range
	diff -u <{echo b; echo d; echo e; echo f} \
		<{$G/$O.query $c..$f | sed -e $map} || die range
}