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