2018-02-07 3:39 GMT+01:00 Kiyoshi KANAZAWA <yoi_no_myou...@yahoo.co.jp>:
> HiAndreas,
>
> Have one FAIL in merge.log, after applying the patch.

Okay, my guess is that sed produces empty output for something like this:

  printf "" > empty.sed; echo hello | sed -f empty.sed

If that is the case, the test suite should succeed with the attached
patch against patch-2.7.6.

Andreas
diff --git a/src/util.c b/src/util.c
index b1c7266..1cc08ba 100644
--- a/src/util.c
+++ b/src/util.c
@@ -256,8 +256,8 @@ set_file_attributes (char const *to, enum file_attributes 
attr,
     }
   if (attr & FA_IDS)
     {
-      static uid_t euid = -1;
-      static gid_t egid = -1;
+      static uid_t euid = (uid_t)-1;
+      static gid_t egid = (gid_t)-1;
       uid_t uid;
       uid_t gid;
 
diff --git a/tests/crlf-handling b/tests/crlf-handling
index 239149c..c192cac 100644
--- a/tests/crlf-handling
+++ b/tests/crlf-handling
@@ -14,7 +14,7 @@ use_local_patch
 use_tmpdir
 
 lf2crlf() {
-    while read l; do echo -e "$l\r"; done
+    while read l; do printf "%s\r\n" "$l"; done
 }
 
 echo 1 > a
diff --git a/tests/git-cleanup b/tests/git-cleanup
index 2e3e4c6..ca527a1 100644
--- a/tests/git-cleanup
+++ b/tests/git-cleanup
@@ -36,8 +36,8 @@ BAD PATCH
 EOF
 
 echo 1 > f
-echo -n '' > g
-echo -n '' > h
+printf '' > g
+printf '' > h
 
 check 'patch -f -i 1.diff || echo status: $?' <<EOF
 patching file f
diff --git a/tests/merge b/tests/merge
index 22d787b..f0d52a8 100644
--- a/tests/merge
+++ b/tests/merge
@@ -30,30 +30,36 @@ x2() {
     while test $# -gt 0 && test "$1" != -- ; do
        echo "$1"
        shift
-    done > a.sed
-    echo "$body" | sed -f a.sed > b
+    done > b.sed
+    if test -s b.sed ; then
+       echo "$body" | sed -f b.sed > b
+    else
+       echo "$body" > b
+    fi
     shift
     while test $# -gt 0 ; do
        echo "$1"
        shift
-    done > b.sed
-    echo "$body" | sed -f b.sed > c
-    rm -f a.sed b.sed
+    done > c.sed
+    if test -s c.sed ; then
+       echo "$body" | sed -f c.sed > c
+    else
+       echo "$body" > c
+    fi
+    rm -f b.sed c.sed
     output=`diff -u a b | patch $ARGS -f c`
     status=$?
     echo "$output" | sed -e '/^$/d' -e '/^patching file c$/d'
     cat c
-    test $status == 0 || echo "Status: $status"
+    test $status = 0 || echo "Status: $status"
 }
 
 x() {
-    ARGS="$ARGS --merge" x2 "$@"
+    ARGS="--merge" x2 "$@"
     echo
-    ARGS="$ARGS --merge=diff3" x2 "$@"
+    ARGS="--merge=diff3" x2 "$@"
 }
 
-unset ARGS
-
 # ==============================================================
 
 check 'x 3' <<EOF
diff --git a/tests/test-lib.sh b/tests/test-lib.sh
index be0d7e3..661da52 100644
--- a/tests/test-lib.sh
+++ b/tests/test-lib.sh
@@ -41,7 +41,7 @@ use_local_patch() {
 
     eval 'patch() {
        if test -n "$GDB" ; then
-         echo -e "\n" >&3
+         printf "\n\n" >&3
          gdbserver localhost:53153 $PATCH "$@" 2>&3
        else
           $PATCH "$@"
@@ -113,22 +113,15 @@ cleanup() {
     exit $status
 }
 
-if test -z "`echo -n`"; then
-    if eval 'test -n "${BASH_LINENO[0]}" 2>/dev/null'; then
-       eval '
-           _start_test() {
-               echo -n "[${BASH_LINENO[2]}] $* -- "
-           }'
-    else
-       eval '
-           _start_test() {
-               echo -n "* $* -- "
-           }'
-    fi
+if eval 'test -n "${BASH_LINENO[0]}" 2>/dev/null'; then
+    eval '
+       _start_test() {
+           printf "[${BASH_LINENO[2]}] %s -- " "$*"
+       }'
 else
     eval '
        _start_test() {
-           echo "* $*"
+           printf "* %s -- " "$*"
        }'
 fi
 

Reply via email to