On some systems sed allows the usage of e.g. sed -i -e "s/line1/line2/" afile to edit the file "in place". Other systems don't allow that: one observed behaviour is that sed -i -e "s/line1/line2/" afile creates a backup file called afile-e, which breaks the test. As sed -i is not part of POSIX, avoid it. Use test_cmp, makes the test easier to debug. Chain all shell commands with && to detect all kinds of failure. Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> --- Changes since v1: No correction of TABs to make it easier to review If this is OK: Matthew would you like to send a complete re-roll, because the credit should be on you ? t/t9402-git-cvsserver-refs.sh | 44 ++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/t/t9402-git-cvsserver-refs.sh b/t/t9402-git-cvsserver-refs.sh index 858ef0f..5138f14 100755 --- a/t/t9402-git-cvsserver-refs.sh +++ b/t/t9402-git-cvsserver-refs.sh @@ -28,27 +28,26 @@ check_file() { } check_end_tree() { - sandbox="$1" - expectCount=$(wc -l < "$WORKDIR/check.list") - cvsCount=$(find "$sandbox" -name CVS -prune -o -type f -print | wc -l) - test x"$cvsCount" = x"$expectCount" - stat=$? - echo "check_end $sandbox : $stat cvs=$cvsCount expect=$expectCount" \ - >> "$WORKDIR/check.log" - return $stat + sandbox="$1" && + wc -l < "$WORKDIR/check.list" > expected && + find "$sandbox" -type f | grep -v "/CVS" > "$WORKDIR/check.cvsCount" && + wc -l < "$WORKDIR/check.cvsCount" >actual && + test_cmp expected actual && + rm expected actual && + sort < "$WORKDIR/check.list" > expected && + sort < "$WORKDIR/check.cvsCount" | sed -e "s%cvswork/%%" >actual && + test_cmp expected actual && + rm expected actual } check_end_full_tree() { - sandbox="$1" - ver="$2" - expectCount=$(wc -l < "$WORKDIR/check.list") - cvsCount=$(find "$sandbox" -name CVS -prune -o -type f -print | wc -l) - gitCount=$(git ls-tree -r "$2" | wc -l) - test x"$cvsCount" = x"$expectCount" -a x"$gitCount" = x"$expectCount" - stat=$? - echo "check_end $sandbox : $stat cvs=$cvsCount git=$gitCount expect=$expectCount" \ - >> "$WORKDIR/check.log" - return $stat + sandbox="$1" && + sort < "$WORKDIR/check.list" >expected && + find "$sandbox" -name CVS -prune -o -type f -print | sed -e "s%$sandbox/%%" | sort >act1 && + test_cmp expected act1 && + git ls-tree -r "$2" | sed -e "s/^.*blob [0-9a-fA-F]*[ ]*//" | sort > act2 && + test_cmp expected act2 && + rm expected act1 act2 } ######### @@ -155,7 +154,8 @@ test_expect_success 'cvs co b1 [cvswork3]' ' test_expect_success 'edit cvswork3 and save diff' ' ( cd cvswork3 && - sed -i -e "s/line1/line1 - data/" adir/afile && + sed -e "s/line1/line1 - data/" adir/afile >adir/afileNEW && + mv -f adir/afileNEW adir/afile && echo "afile5" > adir/afile5 && rm t2 && cvs -f add adir/afile5 && @@ -168,7 +168,8 @@ test_expect_success 'setup v1.2 on b1' ' git checkout b1 && echo "new v1.2" > t3 && rm t2 && - sed -i -e "s/line3/line3 - more data/" adir/afile && + sed -e "s/line3/line3 - more data/" adir/afile >adir/afileNEW && + mv -f adir/afileNEW adir/afile && rm adir/a2file && echo "a3file" >> adir/a3file && echo "bfile line 3" >> adir/bdir/bfile && @@ -300,7 +301,8 @@ test_expect_success 'root dir rm file [cvswork2]' ' test_expect_success 'subdir edit/add/rm files [cvswork2' ' ( cd cvswork2 && - sed -i -e "s/line 1/line 1 (v2)/" adir/bdir/bfile && + sed -e "s/line 1/line 1 (v2)/" adir/bdir/bfile >adir/bdir/bfileNEW && + mv -f adir/bdir/bfileNEW adir/bdir/bfile && rm adir/bdir/b2file && cd adir && cvs -f rm bdir/b2file && -- 1.8.0.197.g5a90748 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html