Meta/cycle-run: try building each individual step
Junio C Hamano committed
Mar 22, 2021 at 17:09 UTC
5b24ed8d987d654154feb2e89bf822b05a648217
1 file changed
+42
-23
cycle-run
+42
-23
@@ -3,23 +3,25 @@
3
: ${RANGE:=origin/master..origin/seen} ${J:=j32} ${OKNG:="(OK|NG)"}
4
5
test_it () {
6
- commit=$1 subject=$2
6
+ type=$1 commit=$2 subject=$3
7
log=".Cycle/log.$commit"
8
rm -f "$log"
9
git ls-files -x Meta -x .Cycle -o -z | xargs -r -0 rm -rf
10
11
(
12
echo "*** log for $subject ***" &&
13
-
14
- D= &&
15
- git checkout --detach "$commit" &&
16
- if ! Meta/Make -$J
17
- then
18
- D=DEVELOPER=
19
- Meta/Make -$J -- DEVELOPER=
20
- fi &&
21
- Meta/Make -$J -- $D test &&
22
- Meta/Make -$J -- $D doc
13
+ case "$type" in
14
+ C)
15
+ Meta/Make -$J
16
+ ;;
17
+ M)
18
+ Meta/Make -$J -- SPARSE_FLAGS=-Wsparse-error sparse
19
+ ;;
20
+ T)
21
+ Meta/Make -$J -- test &&
22
+ Meta/Make -$J -- doc
23
+ ;;
24
+ esac
25
26
status=$?
27
@@ -40,13 +42,23 @@ test_it () {
42
test_them () {
43
while read merge parent sides
44
do
43
- for side in $sides
44
- do
45
- git rev-parse --verify --quiet "$side" || continue
45
+ case "$parent" in
46
+ ?*)
47
+ egrep "^$OKNG M$merge" .Cycle/log >/dev/null && continue
48
echo "TEST M $merge"
47
- egrep "^$OKNG $side" .Cycle/log >/dev/null && continue
48
- echo "TEST $side $merge"
49
- done
49
+ for tip in $sides
50
+ do
51
+ git rev-parse --verify --quiet "$tip" || continue
52
+ egrep "^$OKNG T$tip" .Cycle/log >/dev/null && continue
53
+ echo "TEST $tip $merge"
54
+ done
55
+ ;;
56
+ '')
57
+ commit=$merge
58
+ git rev-parse --verify --quiet "$commit" || continue
59
+ egrep "^$OKNG C$commit" .Cycle/log >/dev/null ||
60
+ echo "TEST C $commit"
61
+ esac
62
done |
63
sed -n -e 's/^TEST //p' >.Cycle/plan
64
@@ -55,14 +67,20 @@ test_them () {
67
68
total=$count
69
echo TEST $count ON $(date) >>.Cycle/log
58
- while read side merge
70
+ while read tip merge
71
do
60
- case "$side" in
61
- M)
72
+ case "$tip" in
73
+ M)
74
+ type=M
75
+ commit=$merge
76
+ subject=$(git show -s --format="%s" "$merge") ;;
77
+ C)
78
+ type=C
79
commit=$merge
80
subject=$(git show -s --format="%s" "$merge") ;;
81
*)
65
- commit=$side
82
+ type=T
83
+ commit=$tip
84
subject=$(
85
git show -s --format="%s" "$merge" |
86
sed -e 's/^Merge branch '\''\(.*\)'\'' into .*/\1/'
@@ -70,13 +88,13 @@ test_them () {
88
esac
89
90
echo >&2 -n "$count/$total ?? $subject
"
73
- if test_it $commit "$subject"
91
+ if test_it $type $commit "$subject"
92
then
93
OK=OK
94
else
95
OK=NG
96
fi
79
- echo "$OK $commit $count" >>.Cycle/log
97
+ echo "$OK $type$commit $count" >>.Cycle/log
98
echo >&2 "$count/$total $OK $subject"
99
count=$(( $count - 1 ))
100
done <.Cycle/plan
@@ -93,4 +111,5 @@ do
111
done
112
113
git fetch
114
+git rev-list --no-merges $RANGE | test_them
115
git rev-list --first-parent --parents $RANGE | test_them