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