1

Screen capture of Result tree

Code keeps running in infinite loop , wheather the data matches or not. Also i want to ignore the first/header column when comparing. Can you
please help with this. Thanks

I am using below code to compare 2 csv files.

Input Files:

File1

ColumnA
A
B
C

File2

ColumnA
A
B
D

Code

#import java.io.File;#
#import java.io.FileReader;#
#import java.io.LineNumberReader;#

String strfile1 = vars.get("thisScriptPath") + "file1.csv";
String strfile2 = vars.get("thisScriptPath") + "file2.csv";

def file1 = new File('/path/to/file1')
def file2 = new File('/path/to/file2')

def file1Lines = file1.readLines('UTF-8')
def file2Lines = file2.readLines('UTF-8')

if (file1Lines.size() != file2Lines.size()) {
    SampleResult.setSussessful(false)
    SampleResult.setResponseMessage('Files size is different, omitting line-by-line compare')
} else {
    def differences = new StringBuilder()

   file1Lines.eachWithIndex { String file1Line, int number ->
       String file2Line = file2Lines.get(number)
       if (!file1Line.equals(file2Line)) {
           differences.append('Difference # ').append(number).append('. Expected:        ').append(file1Line).append('. Actual: ' + file2Line)
           differences.append(System.getProperty('line.separator'))
       }
    }

    if (differences.toString().length() > 0) {
        SampleResult.setSuccessful(false)
        SampleResult.setResponseMessage(differences.toString())
    }
}

REFER IMAGE

Daniel
  • 2,790
  • 1
  • 12
  • 27
  • To ignore the first line, just put an `if (number > 0)` right inside your `eachwithIndex` closure. I don't immediately see anything else in your code that would cause it to run in an infinite loop. – Daniel Apr 20 '20 at 21:00

0 Answers0