Re: [PATCH 1/1] tests: Allow customization of how say_color() prints

2012-12-17 Thread Junio C Hamano
Ramsay Jones ram...@ramsay1.demon.co.uk writes:

 Junio C Hamano wrote:
 ...
 Why does your printf die in the first place???

 I really don't know. ...

 Sorry for wasting your time.

Not a waste. I was hoping somebody (not necessarily you) may be able
to come up with a cleaner solution.  Unfortunately it hasn't
happened (yet), but discussing issues on the list is often not a
waste.

We could introduce git_test_print and git_test_println shell
functions that default to the current printf, and let the users
override these by including a custom scriptllet from t/test-lib.sh,
or something.

--
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


[PATCH 1/1] tests: Allow customization of how say_color() prints

2012-12-15 Thread Ramsay Jones

Since commit 7bc0911d (test-lib: Fix say_color () not to interpret
\a\b\c in the message, 11-10-2012), the --no-color version of
say_color() has been using the (bash builtin) printf function, rather
than echo, to print the testsuite output. Due to an intermittent (and
rare) failure of the printf builtin function on some older versions
of cygwin, this leads to several (currently 7) test failures.

In order the fix the test failures, we provide a means to customize
the function used by say_color() to print the output. The function
is customized using GIT_TEST_PRINT[_LN] variables, which are set by
default to keep the current behaviour unchanged, but may used from
(say) the config.mak file to re-instate the use of echo. This could
be done by adding the following to config.mak:

GIT_TEST_PRINT=echo -nE
GIT_TEST_PRINT_LN=echo -E
export GIT_TEST_PRINT GIT_TEST_PRINT_LN

Note that the GIT_TEST_PRINT variable is used in the --color version
of say_color(), and does not provide the line termination character.
In contrast, the GIT_TEST_PRINT_LN variable is used by the --no-color
version of say_color() and does provide the line termination.

Signed-off-by: Ramsay Jones ram...@ramsay1.demon.co.uk
---
 Makefile  |  6 ++
 t/test-lib.sh | 13 +++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 736ecd4..4f7803e 100644
--- a/Makefile
+++ b/Makefile
@@ -2603,6 +2603,12 @@ GIT-BUILD-OPTIONS: FORCE
 ifdef GIT_TEST_OPTS
@echo GIT_TEST_OPTS=\''$(subst ','\'',$(subst 
','\'',$(GIT_TEST_OPTS)))'\' $@
 endif
+ifdef GIT_TEST_PRINT
+   @echo GIT_TEST_PRINT=\''$(subst ','\'',$(subst 
','\'',$(GIT_TEST_PRINT)))'\' $@
+endif
+ifdef GIT_TEST_PRINT_LN
+   @echo GIT_TEST_PRINT_LN=\''$(subst ','\'',$(subst 
','\'',$(GIT_TEST_PRINT_LN)))'\' $@
+endif
 ifdef GIT_TEST_CMP
@echo GIT_TEST_CMP=\''$(subst ','\'',$(subst 
','\'',$(GIT_TEST_CMP)))'\' $@
 endif
diff --git a/t/test-lib.sh b/t/test-lib.sh
index f50f834..9dcf3c1 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -202,6 +202,15 @@ do
esac
 done
 
+if test -z $GIT_TEST_PRINT
+then
+   GIT_TEST_PRINT=printf %s
+fi
+if test -z $GIT_TEST_PRINT_LN
+then
+   GIT_TEST_PRINT_LN=printf %s\n
+fi
+
 if test -n $color
 then
say_color () {
@@ -221,7 +230,7 @@ then
test -n $quiet  return;;
esac
shift
-   printf %s $*
+   $GIT_TEST_PRINT $*
tput sgr0
echo
)
@@ -230,7 +239,7 @@ else
say_color() {
test -z $1  test -n $quiet  return
shift
-   printf %s\n $*
+   $GIT_TEST_PRINT_LN $*
}
 fi
 
-- 
1.8.0

--
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


Re: [PATCH 1/1] tests: Allow customization of how say_color() prints

2012-12-15 Thread Junio C Hamano
Ramsay Jones ram...@ramsay1.demon.co.uk writes:

 diff --git a/t/test-lib.sh b/t/test-lib.sh
 index f50f834..9dcf3c1 100644
 --- a/t/test-lib.sh
 +++ b/t/test-lib.sh
 @@ -202,6 +202,15 @@ do
   esac
  done
  
 +if test -z $GIT_TEST_PRINT
 +then
 + GIT_TEST_PRINT=printf %s
 +fi
 +if test -z $GIT_TEST_PRINT_LN
 +then
 + GIT_TEST_PRINT_LN=printf %s\n
 +fi
 +
  if test -n $color
  then
   say_color () {
 @@ -221,7 +230,7 @@ then
   test -n $quiet  return;;
   esac
   shift
 - printf %s $*
 + $GIT_TEST_PRINT $*
   tput sgr0
   echo
   )
 @@ -230,7 +239,7 @@ else
   say_color() {
   test -z $1  test -n $quiet  return
   shift
 - printf %s\n $*
 + $GIT_TEST_PRINT_LN $*
   }
  fi

As you said, this is ugly and also unwieldy in that I do not see an
easy way for a platform/builder to define something that needs to
pass a parameter with $IFS in it in these two variables.

Why does your printf die in the first place???

--
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