On Fri, Jul 27, 2012 at 11:45:00AM -0400, Jeff King wrote:

> And of course with non-broken probes, "-v" would also help to see exactly
> when the probe is run, using which commands, and what output they
> produced. E.g., for SYMLINKS, we should probably drop the stderr
> redirection from the probe so we can see how "ln" complains.
> 
> It might also be worth doing a "say >&3" at the end of the check, too,
> to tell "-v" users the outcome.

Here is an updated version of my suggestion that does both of those
things.  I think it should just be squashed into your patch.

diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 2214388..d2ebe24 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -232,6 +232,26 @@ test_lazy_prereq () {
        eval test_prereq_lazily_$1=\$2
 }
 
+test_run_prereq_ () {
+       script='
+mkdir -p "$TRASH_DIRECTORY/prereq-test-dir" &&
+(cd "$TRASH_DIRECTORY/prereq-test-dir" &&
+'"$2"'
+)
+'
+       say >&3 "checking prerequisite: $1"
+       say >&3 "$script"
+       test_eval_ "$script"
+       eval_ret=$?
+       rm -rf "$TRASH_DIRECTORY/prereq-test-dir"
+       if test "$eval_ret" = 0; then
+               say >&3 "prerequisite $1 ok"
+       else
+               say >&3 "prerequisite $1 not fulfilled"
+       fi
+       return $eval_ret
+}
+
 test_have_prereq () {
        # prerequisites can be concatenated with ','
        save_IFS=$IFS
@@ -251,16 +271,11 @@ test_have_prereq () {
                *)
                        case " $lazy_testable_prereq " in
                        *" $prerequisite "*)
-                               mkdir -p "$TRASH_DIRECTORY/prereq-test-dir"
-                               if (
-                                       eval 
"script=\$test_prereq_lazily_$prerequisite" &&
-                                       cd "$TRASH_DIRECTORY/prereq-test-dir" &&
-                                       eval "$script"
-                               )
+                               eval 
"script=\$test_prereq_lazily_$prerequisite" &&
+                               if test_run_prereq_ "$prerequisite" "$script"
                                then
                                        test_set_prereq $prerequisite
                                fi
-                               rm -fr "$TRASH_DIRECTORY/prereq-test-dir"
                                
lazy_tested_prereq="$lazy_tested_prereq$prerequisite "
                        esac
                        ;;
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 878d000..35739b9 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -661,7 +661,7 @@ test_i18ngrep () {
 
 test_lazy_prereq SYMLINKS '
        # test whether the filesystem supports symbolic links
-       ln -s x y 2>/dev/null && test -h y 2>/dev/null
+       ln -s x y && test -h y
 '
 
 # When the tests are run as root, permission tests will report that
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to