Hi Andreas, Once in a while, the quilt test suite fails with:
[faildiff.test] [1] $ mkdir patches -- ok [3] $ quilt new test.diff -- ok [6] $ cat > test.txt -- ok [8] $ quilt add test.txt -- ok [13] $ chmod -r test.txt -- ok [15] $ quilt refresh -- ok [18] $ echo 1 -- ok [21] $ chmod +r test.txt -- ok [25] $ printf "\\002\\000\\001" > test.bin -- ok [26] $ quilt add test.bin -- ok [29] $ printf "\\003\\000\\001" > test.bin -- ok [30] $ quilt diff -pab --no-index -- failed Diff failed on file 'test.bin', aborting !~ (Files|Binary files) a/test\.bin and b/test\.bin differ Binary files a/test.bin and b/test.bin differ != Diff failed on file 'test.bin', aborting [33] $ echo 1 -- ok [36] $ quilt refresh -- ok [38] $ echo 1 -- ok 15 commands (14 passed, 1 failed) Makefile:410: recipe for target 'test/.faildiff.ok' failed make: *** [test/.faildiff.ok] Error 1 The reason is that the 2 messages are not printed in the same order as expected. Looking at the code, I can't explain how this can possibly happen. "Binary files ..." is printed first in the code, and the subprocess which prints it is already gone by the time we reach the line which prints "Diff failed ...". It has to be, because we check its status code before printing "Diff failed ...". The inversion is very rare, the test can succeed hundred or even thousand times before if fails again. I'm using the following command to reproduce the error: $ n=0 ; while make check-faildiff ; do let n=n+1 ; echo $n ; rm test/.faildiff.ok ; done Do you have any idea how this can happen? Am I missing something, or could this be a bug in bash? I tried a few tricks (stdbuf, wait...) but nothing seems to solve the problem. If you (or anyone reading this) have any suggestion, that would be very welcome. Thanks, -- Jean Delvare SUSE L3 Support _______________________________________________ Quilt-dev mailing list Quilt-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/quilt-dev