Patch 8.2.0899
Problem: Assert_equalfile() does not give a hint about the difference.
Solution: Display the last seen text.
Files: src/testing.c, src/testdir/test_assert.vim
*** ../vim-8.2.0898/src/testing.c 2020-06-03 19:55:31.115092047 +0200
--- src/testing.c 2020-06-04 16:39:56.112078820 +0200
***************
*** 309,314 ****
--- 309,317 ----
garray_T ga;
FILE *fd1;
FILE *fd2;
+ char line1[200];
+ char line2[200];
+ int lineidx = 0;
if (fname1 == NULL || fname2 == NULL)
return 0;
***************
*** 329,336 ****
}
else
{
! int c1, c2;
! long count = 0;
for (;;)
{
--- 332,340 ----
}
else
{
! int c1, c2;
! long count = 0;
! long linecount = 1;
for (;;)
{
***************
*** 347,359 ****
STRCPY(IObuff, "second file is shorter");
break;
}
! else if (c1 != c2)
{
! vim_snprintf((char *)IObuff, IOSIZE,
! "difference at byte %ld", count);
! break;
}
++count;
}
fclose(fd1);
fclose(fd2);
--- 351,381 ----
STRCPY(IObuff, "second file is shorter");
break;
}
! else
{
! line1[lineidx] = c1;
! line2[lineidx] = c2;
! ++lineidx;
! if (c1 != c2)
! {
! vim_snprintf((char *)IObuff, IOSIZE,
! "difference at byte %ld, line %ld",
! count, linecount);
! break;
! }
}
++count;
+ if (c1 == NL)
+ {
+ ++linecount;
+ lineidx = 0;
+ }
+ else if (lineidx + 2 == (int)sizeof(line1))
+ {
+ mch_memmove(line1, line1 + 100, lineidx - 100);
+ mch_memmove(line2, line2 + 100, lineidx - 100);
+ lineidx -= 100;
+ }
}
fclose(fd1);
fclose(fd2);
***************
*** 372,377 ****
--- 394,412 ----
ga_concat(&ga, (char_u *)": ");
}
ga_concat(&ga, IObuff);
+ if (lineidx > 0)
+ {
+ line1[lineidx] = NUL;
+ line2[lineidx] = NUL;
+ ga_concat(&ga, (char_u *)" after \"");
+ ga_concat(&ga, (char_u *)line1);
+ if (STRCMP(line1, line2) != 0)
+ {
+ ga_concat(&ga, (char_u *)"\" vs \"");
+ ga_concat(&ga, (char_u *)line2);
+ }
+ ga_concat(&ga, (char_u *)"\"");
+ }
assert_error(&ga);
ga_clear(&ga);
return 1;
*** ../vim-8.2.0898/src/testdir/test_assert.vim 2020-06-03 19:55:31.115092047 +0200
--- src/testdir/test_assert.vim 2020-06-04 16:51:56.630174938 +0200
***************
*** 78,88 ****
call writefile(['1234X89'], 'Xone')
call writefile(['1234Y89'], 'Xtwo')
call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
! call assert_match("difference at byte 4", v:errors[0])
call remove(v:errors, 0)
call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message'))
! call assert_match("a message: difference at byte 4", v:errors[0])
call remove(v:errors, 0)
call delete('Xone')
--- 78,95 ----
call writefile(['1234X89'], 'Xone')
call writefile(['1234Y89'], 'Xtwo')
call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
! call assert_match('difference at byte 4, line 1 after "1234X" vs "1234Y"', v:errors[0])
! call remove(v:errors, 0)
!
! call writefile([repeat('x', 234) .. 'X'], 'Xone')
! call writefile([repeat('x', 234) .. 'Y'], 'Xtwo')
! call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
! let xes = repeat('x', 134)
! call assert_match('difference at byte 234, line 1 after "' .. xes .. 'X" vs "' .. xes .. 'Y"', v:errors[0])
call remove(v:errors, 0)
call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message'))
! call assert_match("a message: difference at byte 234, line 1 after", v:errors[0])
call remove(v:errors, 0)
call delete('Xone')
*** ../vim-8.2.0898/src/version.c 2020-06-04 15:52:06.095922759 +0200
--- src/version.c 2020-06-04 16:39:10.180208182 +0200
***************
*** 748,749 ****
--- 748,751 ----
{ /* Add new patch number below this line */
+ /**/
+ 899,
/**/
--
GOD: That is your purpose Arthur ... the Quest for the Holy Grail ...
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- Br...@Moolenaar.net --
http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features --
http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language --
http://www.Zimbu.org ///
\\\ help me help AIDS victims --
http://ICCF-Holland.org ///