Meta/TopicCheck: try new branches with expensive checks
Junio C Hamano committed
May 2, 2026 at 07:21 UTC
c1c6fb06bafc5606aff57304b600a210b6f57df3
1 file changed
+86
TopicCheck
new
+86
@@ -0,0 +1,86 @@
1
+#!/bin/sh
2
+
3
+usage () {
4
+ echo >&2 "usage: $0 [--stdin | <topics>...]"
5
+}
6
+
7
+stdin=
8
+while case "$1" in -*) ;; *) break; esac
9
+do
10
+ case "$1" in
11
+ --stdin)
12
+ stedin=stdin ;;
13
+ *)
14
+ usage
15
+ exit 1 ;;
16
+ esac
17
+ shift
18
+done
19
+
20
+section () {
21
+ printf >&3 "\033]0;%s %s\007" "$*"
22
+ printf >&3 "# %s %s\n" "$*"
23
+ printf >&2 "\n\n\n\n##### %s %s\n\n\n\n" "$*"
24
+}
25
+
26
+git checkout --quiet --detach
27
+
28
+logbase=./+log/$$
29
+mkdir -p "$logbase"
30
+
31
+exec 3>&2
32
+
33
+onetopic () {
34
+ topic="$1"
35
+ log="$logbase/$(echo "$topic" | tr '/' '-')"
36
+ exec >"$log" 2>&1
37
+ git reset --hard "$topic"
38
+ failed=
39
+
40
+ section "$topic - leaks" &&
41
+ (
42
+ export SANITIZE=leak GIT_TEST_PASSING_SANITIZE_LEAK=true &&
43
+ Meta/Make -j32 CC=clang test &&
44
+ Meta/Make -j32 CC=clang >/dev/null 2>&1 distclean
45
+ ) || failed="leaks"
46
+
47
+ section "$topic - sha256" &&
48
+ (
49
+ export GIT_TEST_DEFAULT_HASH=sha256 &&
50
+ Meta/Make -j32 test &&
51
+ Meta/Make >/dev/null 2>&1 distclean
52
+ ) || failed="$failed${failed:+" "}sha256"
53
+
54
+ section "$topic - test" &&
55
+ (
56
+ Meta/Make -j32 test &&
57
+ Meta/Make >/dev/null 2>&1 distclean
58
+ ) || failed="$failed${failed:+" "}test"
59
+
60
+ section "$topic - breaking" &&
61
+ (
62
+ Meta/Make $jobs WITH_BREAKING_CHANGES=YesPlease $T test &&
63
+ Meta/Make WITH_BREAKING_CHANGES=YesPlease >/dev/null 2>&1 distclean
64
+ ) || failed="$failed${failed:+" "}breaking"
65
+
66
+ if test "$failed" = ""
67
+ then
68
+ rm -f "$log"
69
+ else
70
+ echo >&3 "failed ($failed) $topic"
71
+ echo >&2 "failed ($failed) $topic"
72
+ fi
73
+}
74
+
75
+if test "$stdin" = stdin
76
+then
77
+ while read topic
78
+ do
79
+ onetopic "$topic"
80
+ done
81
+else
82
+ for topic
83
+ do
84
+ onetopic "$topic"
85
+ done
86
+fi