From 8229759332add46aa499d92a303d23e74a8b8e15 Mon Sep 17 00:00:00 2001 From: Eugene Peh Date: Wed, 10 Oct 2018 21:35:25 +0800 Subject: [PATCH] [#363] Make the commits info analysis case insensitive (#364) CommitInfoExtractor uses git log to extract users' commits info. However, by default, the author matching pattern used in git log is case sensitive. This can cause the CommitInfoAnalyzer to miss out some or all their commits in the analysis. As a result, some authors do not have any ramps shown in their ramp chart, even though their code view shows line contributions. To resolve this problem, let's set the git log regex patterns to be case insensitive. --- src/main/java/reposense/system/CommandRunner.java | 2 +- src/test/java/reposense/system/CommandRunnerTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/reposense/system/CommandRunner.java b/src/main/java/reposense/system/CommandRunner.java index 782b77e5b7..11169f4241 100644 --- a/src/main/java/reposense/system/CommandRunner.java +++ b/src/main/java/reposense/system/CommandRunner.java @@ -28,7 +28,7 @@ public class CommandRunner { public static String gitLog(RepoConfiguration config, Author author) { Path rootPath = Paths.get(config.getRepoRoot()); - String command = "git log --no-merges "; + String command = "git log --no-merges -i "; command += convertToGitDateRangeArgs(config.getSinceDate(), config.getUntilDate()); command += " --pretty=format:\"%H|%aN|%ad|%s\" --date=iso --shortstat"; command += convertToFilterAuthorArgs(author); diff --git a/src/test/java/reposense/system/CommandRunnerTest.java b/src/test/java/reposense/system/CommandRunnerTest.java index fa2acf2e53..72d26a2c43 100644 --- a/src/test/java/reposense/system/CommandRunnerTest.java +++ b/src/test/java/reposense/system/CommandRunnerTest.java @@ -57,6 +57,14 @@ public void gitLog_fakeAuthorNameOnly_success() { Assert.assertTrue(TestUtil.compareNumberExpectedCommitsToGitLogLines(4, content)); } + @Test + public void gitLog_authorNameIncorrectCase_success() { + Author fakeAuthorName = new Author(FAKE_AUTHOR_NAME.toUpperCase()); + + String content = CommandRunner.gitLog(config, fakeAuthorName); + Assert.assertTrue(TestUtil.compareNumberExpectedCommitsToGitLogLines(4, content)); + } + @Test public void gitLog_fakeAuthorNameWithSpecialCharacter_success() { Author fakeAuthorWithSpecialCharacter = new Author(FAKE_AUTHOR_NAME.replace("fake", "#()!"));