Skip to content

Differences are marked on some lines correctly, but not marked on others #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
cloaked-ninja opened this issue Mar 15, 2018 · 6 comments

Comments

@cloaked-ninja
Copy link

cloaked-ninja commented Mar 15, 2018

Expected Behavior

Should mark the differences between the two lists or two files. In my example, I have information stored in CSV files.

Actual Behavior

At first appears to correctly identify the differences between two CSV files, but later the differences are incorrectly marked. I've also tried this with two lists that have the same structure.

The last three lines show it skipping some differences and marking others incorrectly, like putting ** in front rather than around the item that is not the same ('**TASK'), and not marking the differences at all on the last line on the second file but marking them on the first ('ACTIONS_C16913').

Steps to Reproduce the Problem

  1. Have two lists or two files containing a structure similar to this:

File One
(snip)
TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE,
ACTIONS_C17005, ID, NUMBER, 22, 19, N,
ACTIONS_C17005, ISSUEID, NUMBER, 22, 19, Y,
ACTIONS_C17005, MODIFIED, NUMBER, 22, 10, Y,
ACTIONS_C17005, TABLE, VARCHAR2, 1020, null, Y,
ACTIONS_C17005, S_NAME, CLOB, 4000, null, Y,
ACTIONS_C17008, ID, NUMBER, 22, 19, N,
ACTIONS_C17008, ISSUEID, NUMBER, 22, 19, Y,
ACTIONS_C17008, MODIFIED, NUMBER, 22, 10, Y,

File Two
(snip)
TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE,
ACTIONS_C16913, ID, NUMBER, 22, 19, N,
ACTIONS_C16913, ISSUEID, NUMBER, 22, 19, Y,
ACTIONS_C16913, MODIFIED, NUMBER, 22, 10, Y,
ACTIONS_C16913, VRS, NUMBER, 22, 1, Y,
ACTIONS_C16913, ZTABS, VARCHAR2, 255, null, Y,
ACTIONS_C16913, ZTABS_S, VARCHAR2, 255, null, Y,
ACTIONS_C16913, TASK, VARCHAR2, 255, null, Y,
ACTIONS_C16913, HOURS_SPENT, VARCHAR2, 255, null, Y,

import com.github.difflib.algorithm.DiffException;
import com.github.difflib.text.DiffRow;
import com.github.difflib.text.DiffRowGenerator;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Demo {

    public static void main(String[] args) throws DiffException, IOException {
        final String FIRSTDB = "C:\\dev\\fileOneSchema.csv";
        final String SECONDDB = "C:\\dev\\fileTwoSchema.csv";

        BufferedReader in = new BufferedReader(new FileReader(FIRSTDB));
        String strOne;

        List<String> listOne = new ArrayList<String>();
        while ((strOne = in.readLine()) != null) {
            listOne.add(strOne);
        }

        BufferedReader inTwo = new BufferedReader(new FileReader(SECONDDB));
        String strTwo;

        List<String> listTwo = new ArrayList<String>();
        while ((strTwo = inTwo.readLine()) != null) {
            listTwo.add(strTwo);
        }

        DiffRowGenerator generator = DiffRowGenerator.create()
                .showInlineDiffs(true)      //show the ~ ~ and ** ** symbols on each difference
                .inlineDiffByWord(true)     //show the ~ ~ and ** ** around each different word instead of each letter
                //.reportLinesUnchanged(true) //experiment
                .oldTag(f -> "~")
                .newTag(f -> "**")
                .build();

        List<DiffRow> rows = generator.generateDiffRows(listOne, listTwo);

        for (DiffRow row : rows) {
            System.out.println("|" + row.getOldLine() + "| " + row.getNewLine() + " |");
        }
    }
}
  1. Result
    |TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE,| TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE, |
    |ACTIONS_C17005, ID, NUMBER, 22, 19, N, | ACTIONS_C16913, ID, NUMBER, 22, 19, N, |
    |ACTIONS_C17005, ISSUEID, NUMBER, 22, 19, Y, | ACTIONS_C16913, ISSUEID, NUMBER, 22, 19, Y, |
    |ACTIONS_C17005, MODIFIED, NUMBER, 22, 10, Y, | ACTIONS_C16913, MODIFIED, NUMBER, 22, 10, Y, |
    |ACTIONS_C17005, TABLE, VARCHAR2, 1020, null, Y, | ACTIONS_C16913, VRS, **NUMBER, 22, 1, Y, |
    |ACTIONS_C17005, S_NAME, CLOB, 4000, null, Y, | ACTIONS_C16913, ZTABS, **VARCHAR2, 255, null, Y, |
    |ACTIONS_C17008, ID, NUMBER, 22, 19, N, | ACTIONS_C16913, ZTABS_S, VARCHAR2, 255, null, Y, |
    |ACTIONS_C17008, ISSUEID, NUMBER, 22, 19, Y, | ACTIONS_C16913, **TASK, VARCHAR2, 255, null, Y, |
    |ACTIONS_C17008, MODIFIED, NUMBER, 22, 10, Y, | ACTIONS_C16913, HOURS_SPENT, VARCHAR2, 255, null, Y, |

Specifications

  • Version: com.github.wumpz:diffutils:2.2
  • Platform: Windows 7, JDK 8, IntelliJ 2017.3.4
  • Subsystem:
@cloaked-ninja
Copy link
Author

edited to add other code that reads the files into a list before running the differences

wumpz added a commit that referenced this issue Mar 16, 2018
@wumpz
Copy link
Collaborator

wumpz commented Mar 17, 2018

I introduced a test from your testdata. Using version 2.3 - SNAPSHOT I got this result. Please look into the test, to find problems. The testoutput differs from yours but seems to be correct.

|TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE,| TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, NULLABLE, |
|ACTIONS_C17005, ID, NUMBER, 22, 19, N,| ACTIONS_C16913, ID, NUMBER, 22, 19, N, |
|ACTIONS_C17005, ISSUEID, NUMBER, 22, 19, Y,| ACTIONS_C16913, ISSUEID, NUMBER, 22, 19, Y, |
|ACTIONS_C17005, MODIFIED, NUMBER, 22, 10, Y,| ACTIONS_C16913, MODIFIED, NUMBER, 22, 10, Y, |
|ACTIONS_C17005, TABLE, VARCHAR2, 1020, null, Y,| ACTIONS_C16913, VRS, NUMBER, 22, 1, Y, |
|ACTIONS_C17005, S_NAME, CLOB, 4000, null, Y,| ACTIONS_C16913, ZTABS, VARCHAR2, 255, null, Y, |
|ACTIONS_C17008, ID, NUMBER, 22, 19, N,| ACTIONS_C16913, ZTABS_S, VARCHAR2, 255, null, Y, |
|ACTIONS_C17008, ISSUEID, NUMBER, 22, 19, Y,| ACTIONS_C16913, TASK, VARCHAR2, 255, null, Y, |
|ACTIONS_C17008, MODIFIED, NUMBER, 22, 10, Y,| ACTIONS_C16913, HOURS_SPENT, VARCHAR2, 255, null, Y, |

@wumpz
Copy link
Collaborator

wumpz commented Mar 19, 2018

Older versions have some kind of line wrapping. Maybe this confuses markups. Set the linelenght to zero or a very high value.

@cloaked-ninja
Copy link
Author

That seems to have resolved it. Thank you.

@wumpz
Copy link
Collaborator

wumpz commented Mar 19, 2018

So we can close this one?

@cloaked-ninja
Copy link
Author

Yes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants