From 75fd7de760030de56f1fc05728df3e5139672144 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Mon, 19 Aug 2024 23:03:37 +0200 Subject: [PATCH 1/2] [JENKINS-73297] Improve error handling when commit is not found. --- .../git/delta/DeltaRepositoryCallback.java | 3 +- .../git/delta/GitDeltaCalculator.java | 5 +- .../git/delta/GitDeltaCalculatorITest.java | 48 +++++++++++++++---- 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/DeltaRepositoryCallback.java b/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/DeltaRepositoryCallback.java index aee46cbf..f13225f3 100644 --- a/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/DeltaRepositoryCallback.java +++ b/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/DeltaRepositoryCallback.java @@ -129,7 +129,8 @@ private RemoteResultWrapper calculateDelta(final Repository repository) t GitDelta delta = new GitDelta(currentCommitId, referenceCommitId, Map.of(), exception.getMessage()); RemoteResultWrapper wrapper = new RemoteResultWrapper<>(delta, "Errors from Git Delta:"); - wrapper.logError("Could not find commit", exception); + wrapper.logException(exception, "Could not find the specified commit - is the SCM parameter correctly set?"); + return wrapper; } } diff --git a/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculator.java b/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculator.java index 4b42f915..c34c8477 100644 --- a/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculator.java +++ b/plugin/src/main/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculator.java @@ -64,6 +64,7 @@ public Optional calculateDelta(final Run build, final Run ref RemoteResultWrapper wrapped = git.withRepository( new DeltaRepositoryCallback(currentCommit, referenceCommit)); wrapped.getInfoMessages().forEach(log::logInfo); + wrapped.getErrorMessages().forEach(log::logError); return Optional.of(wrapped.getResult()); } catch (IOException | InterruptedException exception) { @@ -77,12 +78,12 @@ public Optional calculateDelta(final Run build, final Run ref } /** - * Returns the latest commit of the {@link GitCommitsRecord commits record} of a Git repository. + * Returns the latest commit of the {@link GitCommitsRecord commit record} of a Git repository. * * @param buildName * the name of the build the commits record corresponds to * @param record - * the commits record + * the commit record * @param log * the log * diff --git a/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java b/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java index 6df15bfe..d96f8355 100644 --- a/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java @@ -7,9 +7,11 @@ import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.Issue; import edu.hm.hafner.util.FilteredLog; +import org.jenkinsci.plugins.workflow.job.WorkflowJob; import hudson.model.FreeStyleProject; import hudson.model.Run; import hudson.plugins.git.GitSCM; @@ -34,6 +36,32 @@ class GitDeltaCalculatorITest extends GitITest { private static final String EMPTY_SCM_KEY = ""; private static final String EMPTY_FILE_PATH = ""; + private static final String GIT_FORENSICS_URL = "https://github.com/jenkinsci/git-forensics-plugin.git"; + private static final String GIT_FORENSICS_COMMIT = "86503e8bc0374e05e2cd32ed3bb8b4435d5fd757"; + + @Test @Issue("JENKINS-73297") + void shouldShowErrorIfCommitIsNotFound() { + WorkflowJob job = createPipeline(); + job.setDefinition(asStage("checkout([$class: 'GitSCM', " + + "branches: [[name: '" + GIT_FORENSICS_COMMIT + "' ]],\n" + + "userRemoteConfigs: [[url: '" + GIT_FORENSICS_URL + "']],\n" + + "extensions: [[$class: 'RelativeTargetDirectory', \n" + + " relativeTargetDir: '" + GIT_FORENSICS_COMMIT + "']]])")); + + Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); + + var log = createLog(); + Optional result = deltaCalculator.calculateDelta(build, build, EMPTY_SCM_KEY, log); + assertThat(result).isNotEmpty(); + + assertThat(log.getInfoMessages()) + .contains("-> Invoking Git delta calculator for determining the changes between commits '86503e8' and '86503e8'"); + assertThat(log.getErrorMessages()) + .contains("Could not find the specified commit - is the SCM parameter correctly set?", + "org.eclipse.jgit.errors.MissingObjectException: Missing unknown 86503e8bc0374e05e2cd32ed3bb8b4435d5fd757"); + } + @Test void shouldCreateEmptyDeltaIfCommitsAreInvalid() { GitDeltaCalculator deltaCalculator = createDeltaCalculator(); @@ -46,7 +74,6 @@ void shouldCreateEmptyDeltaIfCommitsAreInvalid() { void shouldCreateDiffFile() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); Run referenceBuild = buildSuccessfully(job); @@ -59,6 +86,7 @@ void shouldCreateDiffFile() { Run build = buildSuccessfully(job); String currentCommit = getHead(); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -86,7 +114,6 @@ void shouldCreateDiffFile() { @Test void shouldDetermineAddedFile() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); Run referenceBuild = buildSuccessfully(job); @@ -98,6 +125,7 @@ void shouldDetermineAddedFile() { commit("test"); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -117,7 +145,6 @@ void shouldDetermineAddedFile() { @Test void shouldDetermineModifiedFile() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "modified"; @@ -126,6 +153,7 @@ void shouldDetermineModifiedFile() { commitFile(content); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -145,7 +173,6 @@ void shouldDetermineModifiedFile() { @Test void shouldDetermineDeletedFile() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "content"; @@ -155,6 +182,7 @@ void shouldDetermineDeletedFile() { commit("test"); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -174,7 +202,6 @@ void shouldDetermineDeletedFile() { @Test void shouldDetermineRenamedFile() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "content"; @@ -184,6 +211,7 @@ void shouldDetermineRenamedFile() { writeFileAsAuthorFoo(content); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -203,7 +231,6 @@ void shouldDetermineRenamedFile() { @Test void shouldDetermineAddedLines() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "Test\nTest\n"; @@ -213,6 +240,7 @@ void shouldDetermineAddedLines() { commitFile(insertedContent); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -234,7 +262,6 @@ void shouldDetermineAddedLines() { @Test void shouldDetermineModifiedLines() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "Test\nTest\nTest\nTest"; @@ -244,6 +271,7 @@ void shouldDetermineModifiedLines() { commitFile(modified); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -265,7 +293,6 @@ void shouldDetermineModifiedLines() { @Test void shouldDetermineDeletedLines() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); FilteredLog log = createLog(); String content = "Test\nTest3\nTest"; @@ -275,6 +302,7 @@ void shouldDetermineDeletedLines() { commitFile(modified); Run build = buildSuccessfully(job); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); @@ -296,8 +324,6 @@ void shouldDetermineDeletedLines() { @Test void shouldDetermineAllChangeTypesTogether() { FreeStyleProject job = createJobWithReferenceRecorder(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - FilteredLog log = createLog(); String content = "Test1\nTest2\nTest3\nTest4"; String newContent = "Modified\nTest2\nInserted\nTest3"; @@ -306,6 +332,8 @@ void shouldDetermineAllChangeTypesTogether() { commitFile(newContent); Run build = buildSuccessfully(job); + FilteredLog log = createLog(); + GitDeltaCalculator deltaCalculator = createDeltaCalculator(); Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); From beeb13f30998f430bd78f4702b21650732e9eaf1 Mon Sep 17 00:00:00 2001 From: Ulli Hafner Date: Tue, 20 Aug 2024 11:33:01 +0200 Subject: [PATCH 2/2] Cleanup test case. --- .../git/delta/GitDeltaCalculatorITest.java | 184 ++++++++---------- 1 file changed, 79 insertions(+), 105 deletions(-) diff --git a/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java b/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java index d96f8355..f34e3ea9 100644 --- a/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java +++ b/plugin/src/test/java/io/jenkins/plugins/forensics/git/delta/GitDeltaCalculatorITest.java @@ -48,11 +48,11 @@ void shouldShowErrorIfCommitIsNotFound() { + "extensions: [[$class: 'RelativeTargetDirectory', \n" + " relativeTargetDir: '" + GIT_FORENSICS_COMMIT + "']]])")); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); + var build = buildSuccessfully(job); + var deltaCalculator = createDeltaCalculator(); var log = createLog(); - Optional result = deltaCalculator.calculateDelta(build, build, EMPTY_SCM_KEY, log); + var result = deltaCalculator.calculateDelta(build, build, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); assertThat(log.getInfoMessages()) @@ -64,30 +64,30 @@ void shouldShowErrorIfCommitIsNotFound() { @Test void shouldCreateEmptyDeltaIfCommitsAreInvalid() { - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); + var deltaCalculator = createDeltaCalculator(); - FilteredLog log = createLog(); + var log = createLog(); assertThat(deltaCalculator.calculateDelta(mock(Run.class), mock(Run.class), EMPTY_SCM_KEY, log)).isEmpty(); } @Test void shouldCreateDiffFile() { - FreeStyleProject job = createJobWithReferenceRecorder(); - - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); + var referenceBuild = buildSuccessfully(job); - Run referenceBuild = buildSuccessfully(job); String referenceCommit = getHead(); String fileName = "newFile"; String content = "content"; writeFile(fileName, content); addFile(fileName); commit("test"); - Run build = buildSuccessfully(job); + + var build = buildSuccessfully(job); String currentCommit = getHead(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); Delta delta = result.get(); @@ -108,144 +108,126 @@ void shouldCreateDiffFile() { assertThat(fileChanges.getModifiedLines()).containsExactly(1)); } - /** - * An added file should be determined. - */ @Test void shouldDetermineAddedFile() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); - - Run referenceBuild = buildSuccessfully(job); + var job = createJobWithReferenceRecorder(); + var referenceBuild = buildSuccessfully(job); String newFileName = "newFile"; String content = "added"; writeFile(newFileName, content); addFile(newFileName); commit("test"); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).containsExactly(1); - assertThat(fileChanges.getFileName()).isEqualTo(newFileName); assertThat(fileChanges.getOldFileName()).isEqualTo(EMPTY_FILE_PATH); assertThat(fileChanges.getFileEditType()).isEqualTo(FileEditType.ADD); assertThat(fileChanges.getFileContent()).isEqualTo(content); } - /** - * A modified file should be determined. - */ @Test void shouldDetermineModifiedFile() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "modified"; commitFile("test"); - Run referenceBuild = buildSuccessfully(job); + + var referenceBuild = buildSuccessfully(job); commitFile(content); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).containsExactly(1); - assertThat(fileChanges.getFileName()).isEqualTo(INITIAL_FILE); assertThat(fileChanges.getOldFileName()).isEqualTo(INITIAL_FILE); assertThat(fileChanges.getFileEditType()).isEqualTo(FileEditType.MODIFY); assertThat(fileChanges.getFileContent()).isEqualTo(content); } - /** - * A deleted file should be determined. - */ @Test void shouldDetermineDeletedFile() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "content"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); git("rm", INITIAL_FILE); commit("test"); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).isEmpty(); - assertThat(fileChanges.getFileName()).isEqualTo(EMPTY_FILE_PATH); assertThat(fileChanges.getOldFileName()).isEqualTo(INITIAL_FILE); assertThat(fileChanges.getFileEditType()).isEqualTo(FileEditType.DELETE); assertThat(fileChanges.getFileContent()).isEqualTo(content); } - /** - * A renamed file should be determined. - */ @Test void shouldDetermineRenamedFile() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "content"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); git("rm", INITIAL_FILE); writeFileAsAuthorFoo(content); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).isEmpty(); - assertThat(fileChanges.getFileName()).isEqualTo(ADDITIONAL_FILE); assertThat(fileChanges.getOldFileName()).isEqualTo(INITIAL_FILE); assertThat(fileChanges.getFileEditType()).isEqualTo(FileEditType.RENAME); assertThat(fileChanges.getFileContent()).isEqualTo(content); } - /** - * Added lines within a specific file should be determined. - */ @Test void shouldDetermineAddedLines() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "Test\nTest\n"; String insertedContent = "Test\nInsert1\nInsert2\nTest\n"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); commitFile(insertedContent); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).containsExactly(2, 3); Change change = getSingleChangeOfType(fileChanges, ChangeEditType.INSERT); @@ -256,27 +238,24 @@ void shouldDetermineAddedLines() { assertThat(change.getToLine()).isEqualTo(3); } - /** - * Modified lines within a specific file should be determined. - */ @Test void shouldDetermineModifiedLines() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "Test\nTest\nTest\nTest"; String modified = "Test\nModified\nModified2\nTest"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); commitFile(modified); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).containsExactly(2, 3); Change change = getSingleChangeOfType(fileChanges, ChangeEditType.REPLACE); @@ -287,27 +266,25 @@ void shouldDetermineModifiedLines() { assertThat(change.getToLine()).isEqualTo(3); } - /** - * Deleted lines within a specific file should be determined. - */ @Test void shouldDetermineDeletedLines() { - FreeStyleProject job = createJobWithReferenceRecorder(); - FilteredLog log = createLog(); + var job = createJobWithReferenceRecorder(); String content = "Test\nTest3\nTest"; String modified = "Test\nTest"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); commitFile(modified); - Run build = buildSuccessfully(job); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(delta); assertThat(fileChanges.getModifiedLines()).isEmpty(); Change change = getSingleChangeOfType(fileChanges, ChangeEditType.DELETE); @@ -318,27 +295,24 @@ void shouldDetermineDeletedLines() { assertThat(change.getToLine()).isEqualTo(1); } - /** - * Added, modified and deleted lines within a specific file should be determined properly together. - */ @Test void shouldDetermineAllChangeTypesTogether() { - FreeStyleProject job = createJobWithReferenceRecorder(); + var job = createJobWithReferenceRecorder(); String content = "Test1\nTest2\nTest3\nTest4"; String newContent = "Modified\nTest2\nInserted\nTest3"; commitFile(content); - Run referenceBuild = buildSuccessfully(job); + var referenceBuild = buildSuccessfully(job); commitFile(newContent); - Run build = buildSuccessfully(job); - FilteredLog log = createLog(); - GitDeltaCalculator deltaCalculator = createDeltaCalculator(); - Optional result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); + var build = buildSuccessfully(job); + + var log = createLog(); + var deltaCalculator = createDeltaCalculator(); + var result = deltaCalculator.calculateDelta(build, referenceBuild, EMPTY_SCM_KEY, log); assertThat(result).isNotEmpty(); - Delta delta = result.get(); - FileChanges fileChanges = getSingleFileChanges(delta); + var fileChanges = getSingleFileChanges(result.get()); assertThat(fileChanges.getModifiedLines()).containsExactly(1, 3); Change replace = getSingleChangeOfType(fileChanges, ChangeEditType.REPLACE); @@ -438,7 +412,7 @@ private GitDeltaCalculator createDeltaCalculator() { */ private FreeStyleProject createJobWithReferenceRecorder() { try { - FreeStyleProject job = createFreeStyleProject(); + var job = createFreeStyleProject(); job.setScm(new GitSCM(getRepositoryRoot())); job.getPublishersList().add(new GitReferenceRecorder()); return job;