diff --git a/.gitignore b/.gitignore index c69f491..525dbc0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -/diffparser.iml -/build -/.idea -/.gradle +/diffparser.iml +/build +/.idea +/.gradle +/.nb-gradle/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0e32092..60d9f11 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ ext{ dependencies { compile('org.slf4j:slf4j-api:1.7.25') testCompile('org.slf4j:slf4j-log4j12:1.7.25') - testCompile('org.testng:testng:6.8.7') + testCompile('org.testng:testng:6.10') } task sourcesJar(type: Jar, dependsOn: classes) { @@ -137,4 +137,7 @@ bintray { publish = true } - +//Setup the test task +test { + useTestNG() +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1a958be..0d4a951 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 52dd1f0..a95009c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.2-bin.zip diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 index 4453cce..cccdd3d --- a/gradlew +++ b/gradlew @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +155,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/gradlew.bat b/gradlew.bat index f955316..e95643d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/io/reflectoring/diffparser/api/UnifiedDiffParser.java b/src/main/java/io/reflectoring/diffparser/api/UnifiedDiffParser.java index 059c051..38266f7 100644 --- a/src/main/java/io/reflectoring/diffparser/api/UnifiedDiffParser.java +++ b/src/main/java/io/reflectoring/diffparser/api/UnifiedDiffParser.java @@ -15,6 +15,16 @@ */ package io.reflectoring.diffparser.api; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import io.reflectoring.diffparser.api.model.Diff; import io.reflectoring.diffparser.api.model.Hunk; import io.reflectoring.diffparser.api.model.Line; @@ -22,12 +32,6 @@ import io.reflectoring.diffparser.unified.ParserState; import io.reflectoring.diffparser.unified.ResizingParseWindow; -import java.io.*; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - /** * A parser that parses a unified diff from text into a {@link Diff} data structure. *

@@ -101,7 +105,7 @@ public List parse(InputStream in) { } private void parseNeutralLine(Diff currentDiff, String currentLine) { - Line line = new Line(Line.LineType.NEUTRAL, currentLine); + Line line = new Line(Line.LineType.NEUTRAL, currentLine.substring(1)); currentDiff.getLatestHunk().getLines().add(line); } @@ -169,12 +173,8 @@ public List parse(byte[] bytes) { @Override public List parse(File file) throws IOException { - FileInputStream in = new FileInputStream(file); - try{ + try(FileInputStream in = new FileInputStream(file)) { return parse(in); - } finally { - in.close(); } } - } diff --git a/src/test/java/io/reflectoring/diffparser/unified/GitDiffTest.java b/src/test/java/io/reflectoring/diffparser/unified/GitDiffTest.java index dd09b06..76aa20a 100644 --- a/src/test/java/io/reflectoring/diffparser/unified/GitDiffTest.java +++ b/src/test/java/io/reflectoring/diffparser/unified/GitDiffTest.java @@ -3,51 +3,54 @@ */ package io.reflectoring.diffparser.unified; -import io.reflectoring.diffparser.api.DiffParser; -import io.reflectoring.diffparser.api.UnifiedDiffParser; -import io.reflectoring.diffparser.api.model.Diff; -import io.reflectoring.diffparser.api.model.Hunk; -import io.reflectoring.diffparser.api.model.Line; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + import java.io.InputStream; import java.util.List; import org.testng.annotations.Test; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; - -public class GitDiffTest { - - @Test - public void testParse() { - // given - DiffParser parser = new UnifiedDiffParser(); - InputStream in = getClass().getResourceAsStream("git.diff"); - - // when - List diffs = parser.parse(in); - - // then - assertNotNull(diffs); - assertEquals(3, diffs.size()); - - Diff diff1 = diffs.get(0); - assertEquals("a/diffparser/pom.xml", diff1.getFromFileName()); - assertEquals("b/diffparser/pom.xml", diff1.getToFileName()); - assertEquals(2, diff1.getHunks().size()); - - List headerLines = diff1.getHeaderLines(); - assertEquals(2, headerLines.size()); - - Hunk hunk1 = diff1.getHunks().get(0); - assertEquals(6, hunk1.getFromFileRange().getLineStart()); - assertEquals(7, hunk1.getFromFileRange().getLineCount()); - assertEquals(6, hunk1.getToFileRange().getLineStart()); - assertEquals(7, hunk1.getToFileRange().getLineCount()); +import io.reflectoring.diffparser.api.DiffParser; +import io.reflectoring.diffparser.api.UnifiedDiffParser; +import io.reflectoring.diffparser.api.model.Diff; +import io.reflectoring.diffparser.api.model.Hunk; +import io.reflectoring.diffparser.api.model.Line; - List lines = hunk1.getLines(); - assertEquals(8, lines.size()); - assertEquals(Line.LineType.FROM, lines.get(3).getLineType()); - assertEquals(Line.LineType.TO, lines.get(4).getLineType()); - } +public class GitDiffTest +{ + + @Test + public void testParse() + { + // given + DiffParser parser = new UnifiedDiffParser(); + InputStream in = getClass().getResourceAsStream("git.diff"); + + // when + List diffs = parser.parse(in); + + // then + assertNotNull(diffs); + assertEquals(diffs.size(), 3); + + Diff diff1 = diffs.get(0); + assertEquals("a/diffparser/pom.xml", diff1.getFromFileName()); + assertEquals("b/diffparser/pom.xml", diff1.getToFileName()); + assertEquals(diff1.getHunks().size(), 2); + + List headerLines = diff1.getHeaderLines(); + assertEquals(headerLines.size(), 2); + + Hunk hunk1 = diff1.getHunks().get(0); + assertEquals(hunk1.getFromFileRange().getLineStart(), 6); + assertEquals(hunk1.getFromFileRange().getLineCount(), 7); + assertEquals(hunk1.getToFileRange().getLineStart(), 6); + assertEquals(hunk1.getToFileRange().getLineCount(), 7); + + List lines = hunk1.getLines(); + assertEquals(lines.size(), 8); + assertEquals(lines.get(3).getLineType(), Line.LineType.FROM); + assertEquals(lines.get(4).getLineType(), Line.LineType.TO); + } } diff --git a/src/test/java/io/reflectoring/diffparser/unified/SvnDiffTest.java b/src/test/java/io/reflectoring/diffparser/unified/SvnDiffTest.java index 67f5ab9..1126790 100644 --- a/src/test/java/io/reflectoring/diffparser/unified/SvnDiffTest.java +++ b/src/test/java/io/reflectoring/diffparser/unified/SvnDiffTest.java @@ -1,16 +1,17 @@ package io.reflectoring.diffparser.unified; +import java.io.InputStream; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.Test; + import io.reflectoring.diffparser.api.DiffParser; import io.reflectoring.diffparser.api.UnifiedDiffParser; -import junit.framework.Assert; -import org.testng.annotations.Test; import io.reflectoring.diffparser.api.model.Diff; import io.reflectoring.diffparser.api.model.Hunk; import io.reflectoring.diffparser.api.model.Line; -import java.io.InputStream; -import java.util.List; - /** * Tests the DiffParser with a diff created by the "svn diff" command. */ diff --git a/src/test/java/io/reflectoring/diffparser/unified/TortoiseDiffTest.java b/src/test/java/io/reflectoring/diffparser/unified/TortoiseDiffTest.java index 842b7b2..8304d82 100644 --- a/src/test/java/io/reflectoring/diffparser/unified/TortoiseDiffTest.java +++ b/src/test/java/io/reflectoring/diffparser/unified/TortoiseDiffTest.java @@ -1,16 +1,17 @@ package io.reflectoring.diffparser.unified; +import java.io.InputStream; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.Test; + import io.reflectoring.diffparser.api.DiffParser; import io.reflectoring.diffparser.api.UnifiedDiffParser; -import io.reflectoring.diffparser.api.model.Hunk; -import junit.framework.Assert; -import org.testng.annotations.Test; import io.reflectoring.diffparser.api.model.Diff; +import io.reflectoring.diffparser.api.model.Hunk; import io.reflectoring.diffparser.api.model.Line; -import java.io.InputStream; -import java.util.List; - /** * Tests the diffparser with a diff created by Tortoise SVN. */