To: vim_dev@googlegroups.com Subject: Patch 8.2.0899 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- Bram@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 ///