0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.0899: assert_equalfile() does not give a hint about the difference

Problem:    Assert_equalfile() does not give a hint about the difference.
Solution:   Display the last seen text.
This commit is contained in:
Bram Moolenaar
2020-06-04 16:52:40 +02:00
parent 6b0e528368
commit 30cc44a97f
3 changed files with 52 additions and 8 deletions

View File

@@ -309,6 +309,9 @@ assert_equalfile(typval_T *argvars)
garray_T ga;
FILE *fd1;
FILE *fd2;
char line1[200];
char line2[200];
int lineidx = 0;
if (fname1 == NULL || fname2 == NULL)
return 0;
@@ -329,8 +332,9 @@ assert_equalfile(typval_T *argvars)
}
else
{
int c1, c2;
long count = 0;
int c1, c2;
long count = 0;
long linecount = 1;
for (;;)
{
@@ -347,13 +351,31 @@ assert_equalfile(typval_T *argvars)
STRCPY(IObuff, "second file is shorter");
break;
}
else if (c1 != c2)
else
{
vim_snprintf((char *)IObuff, IOSIZE,
"difference at byte %ld", count);
break;
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,6 +394,19 @@ assert_equalfile(typval_T *argvars)
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;