From fba34b3babee501fb9a5ab243c847f5a972d97a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 11 May 2020 16:48:02 +0200 Subject: [PATCH] Add unit tests --- .../spi/GitDiffResultCommandTest.java | 16 +++++++++++ .../scm/repository/spi/GitHunkParserTest.java | 28 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitDiffResultCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitDiffResultCommandTest.java index cf42b00719..e2722b78ab 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitDiffResultCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitDiffResultCommandTest.java @@ -103,6 +103,22 @@ public class GitDiffResultCommandTest extends AbstractGitCommandTestBase { assertThat(hunk.getNewLineCount()).isEqualTo(2); } + @Test + public void shouldReturnRenames() throws IOException { + DiffResult diffResult = createDiffResult("rename"); + + Iterator fileIterator = diffResult.iterator(); + DiffFile renameA = fileIterator.next(); + assertThat(renameA.getOldPath()).isEqualTo("a.txt"); + assertThat(renameA.getNewPath()).isEqualTo("a-copy.txt"); + assertThat(renameA.iterator().hasNext()).isFalse(); + + DiffFile renameB = fileIterator.next(); + assertThat(renameB.getOldPath()).isEqualTo("b.txt"); + assertThat(renameB.getNewPath()).isEqualTo("b-copy.txt"); + assertThat(renameB.iterator().hasNext()).isFalse(); + } + private DiffResult createDiffResult(String s) throws IOException { GitDiffResultCommand gitDiffResultCommand = new GitDiffResultCommand(createContext()); DiffCommandRequest diffCommandRequest = new DiffCommandRequest(); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitHunkParserTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitHunkParserTest.java index fda99ed7bf..54c92a4346 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitHunkParserTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitHunkParserTest.java @@ -112,6 +112,15 @@ class GitHunkParserTest { " indent_size = 2\r\r\n" + " charset = utf-8\n"; + private static final String RENAMES = "diff --git a/a.txt b/a-copy.txt\n" + + "similarity index 100%\n" + + "rename from a.txt\n" + + "rename to a-copy.txt\n" + + "diff --git a/b.txt b/b-copy.txt\n" + + "similarity index 100%\n" + + "rename from b.txt\n" + + "rename to b-copy.txt"; + @Test void shouldParseHunks() { List hunks = new GitHunkParser().parse(DIFF_001); @@ -210,6 +219,25 @@ class GitHunkParserTest { assertThat(lines.hasNext()).isFalse(); } + @Test + void shouldHandleRenames() { + List hunks = new GitHunkParser().parse(RENAMES); + + Hunk hunk = hunks.get(0); + hunk.getRawHeader(); + + Iterator lines = hunk.iterator(); + + DiffLine line1 = lines.next(); + assertThat(line1.getOldLineNumber()).hasValue(10); + assertThat(line1.getNewLineNumber()).hasValue(10); + assertThat(line1.getContent()).isEqualTo("indent_style = space"); + + lines.next(); + lines.next(); + assertThat(lines.hasNext()).isFalse(); + } + private void assertHunk(Hunk hunk, int oldStart, int oldLineCount, int newStart, int newLineCount) { assertThat(hunk.getOldStart()).isEqualTo(oldStart); assertThat(hunk.getOldLineCount()).isEqualTo(oldLineCount);