Meta/Make, Dothem: use prove test when available
Junio C Hamano committed
Feb 23, 2012 at 14:13 UTC
7e62b4a70b5d9b9c0234fabde81b869274dfa0ca
2 files changed
+48
-29
Dothem
+42
-29
@@ -48,12 +48,6 @@ do
48
done
49
50
sh -c 'asciidoc --version >/dev/null 2>&1' || nodoc=y
51
-if sh -c 'prove --version >/dev/null 2>&1' &&
52
- sh -c 'prove --exec : >/dev/null 2>&1'
53
-then
54
- DEFAULT_TEST_TARGET=prove GIT_PROVE_OPTS="$jobs"
55
- export DEFAULT_TEST_TARGET GIT_PROVE_OPTS
56
-fi
51
GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}"
52
export GIT_TEST_OPTS
53
@@ -74,6 +68,35 @@ fi
68
test -n "$branches" || branches='next master maint jch pu'
69
test -n "$jobs" || jobs=-j2
70
71
+find_installed () {
72
+ branch=$1
73
+ test -f "$inst_prefix/git-$branch/bin/git" &&
74
+ installed=$($inst_prefix/git-$branch/bin/git version) &&
75
+ if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$')
76
+ then
77
+ :
78
+ elif version=v$(expr "$installed" : \
79
+ 'git version \(.*\)\.rc[0-9]*$')
80
+ then
81
+ version="$version"-$(expr "$installed" : \
82
+ 'git version .*\.\(rc[0-9]*\)$')
83
+ else
84
+ version=v$(expr "$installed" : 'git version \(.*\)')
85
+ fi &&
86
+ git rev-parse --verify "$version^0" 2>/dev/null
87
+}
88
+
89
+installed_source_trees=" "
90
+for branch in $branches
91
+do
92
+ if v=$(find_installed $branch) &&
93
+ test -n "$v" &&
94
+ v=$(git rev-parse --verify "$v^{tree}" 2>/dev/null)
95
+ then
96
+ installed_source_trees="$installed_source_trees$v "
97
+ fi
98
+done
99
+
100
for branch in $branches
101
do
102
echo "** $branch **"
@@ -99,21 +122,8 @@ do
122
private=$(git rev-parse -q --verify private-$branch 2>/dev/null)
123
case $? in 0|1) ;; *) exit $? ;; esac
124
102
- if test -f "$inst_prefix/git-$branch/bin/git" &&
103
- installed=$($inst_prefix/git-$branch/bin/git version) &&
104
- if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$')
105
- then
106
- :
107
- elif version=v$(expr "$installed" : \
108
- 'git version \(.*\)\.rc[0-9]*$')
109
- then
110
- version="$version"-$(expr "$installed" : \
111
- 'git version .*\.\(rc[0-9]*\)$')
112
- else
113
- version=v$(expr "$installed" : 'git version \(.*\)')
114
- fi &&
115
- version=$(git rev-parse --verify "$version^0" 2>/dev/null) &&
116
- test "z$version" = "z$revision"
125
+ version=$(find_installed $branch)
126
+ if test "z$version" = "z$revision"
127
then
128
echo "* up-to-date version \"$installed\" is already installed from $branch"
129
test -n "$force" || continue
@@ -121,16 +131,18 @@ do
131
132
(
133
skip_test=$notest
124
- case ",$version,$revision," in
125
- *,,*)
126
- ;;
127
- *)
128
- if git diff --quiet --exit-code $version $revision
129
- then
130
- skip_test=1
131
- fi
134
+ vtree=$(git rev-parse --verify "$version^{tree}")
135
+ rtree=$(git rev-parse --verify "$revision^{tree}")
136
+ case "$installed_source_trees" in
137
+ *" $rtree "*)
138
+ skip_test=1
139
;;
140
esac
141
+ if test "z$vtree" = "z$rtree"
142
+ then
143
+ skip_test=1
144
+ nodoc=1
145
+ fi
146
case "$branch, $branches " in
147
jch,*' next '*)
148
if git diff --quiet --exit-code jch next
@@ -139,6 +151,7 @@ do
151
fi
152
;;
153
esac
154
+ test $(git rev-parse --verify "$version^{tree}" 2>/dev/null)
155
case "$skip_test" in
156
?*) dotest= ;;
157
'') dotest=test ;;
Make
+6
@@ -135,6 +135,12 @@ if test -z "$tests" && test -n "$skip"
135
then
136
: GIT_SKIP_TESTS="${GIT_SKIP_TESTS:-$skip}"
137
fi
138
+if sh -c 'prove --version >/dev/null 2>&1' &&
139
+ sh -c 'prove --exec : >/dev/null 2>&1'
140
+then
141
+ DEFAULT_TEST_TARGET=prove GIT_PROVE_OPTS="$jobs"
142
+ export DEFAULT_TEST_TARGET GIT_PROVE_OPTS
143
+fi
144
145
LC_ALL=$LANG
146
export LANG LC_ALL