diff --git a/src/main/java/pl/project13/maven/git/GitDirLocator.java b/src/main/java/pl/project13/maven/git/GitDirLocator.java
index 4926ab61..789aa1c1 100644
--- a/src/main/java/pl/project13/maven/git/GitDirLocator.java
+++ b/src/main/java/pl/project13/maven/git/GitDirLocator.java
@@ -135,13 +135,14 @@ private File processGitDirFile(@Nonnull File file) {
}
// All seems ok so return the "gitdir" value read from the file.
- File gitDir = resolveWorktree(new File(parts[1]));
+ String extractFromConfig = parts[1];
+ File gitDir = resolveWorktree(new File(extractFromConfig));
if (gitDir.isAbsolute()) {
// gitdir value is an absolute path. Return as-is
return gitDir;
} else {
// gitdir value is relative.
- return new File(file.getParentFile(), parts[1]);
+ return new File(file.getParentFile(), extractFromConfig);
}
} catch (IOException e) {
return null;
@@ -149,8 +150,13 @@ private File processGitDirFile(@Nonnull File file) {
}
/**
- * If the file looks like the location of a worktree, return the .git folder of the git repository
- * of the worktree. If not, return the file as is.
+ * Attempts to resolve the actual location of the .git folder for a given
+ * worktree.
+ * For example for a worktree like {@code a/.git/worktrees/X} structure would
+ * return {@code a/.git}.
+ *
+ * If the conditions for a git worktree like file structure are met simply return the provided
+ * argument as is.
*/
static File resolveWorktree(File fileLocation) {
Path parent = fileLocation.toPath().getParent();
diff --git a/src/test/java/pl/project13/maven/git/AvailableGitTestRepo.java b/src/test/java/pl/project13/maven/git/AvailableGitTestRepo.java
index b994b20d..f629ef31 100644
--- a/src/test/java/pl/project13/maven/git/AvailableGitTestRepo.java
+++ b/src/test/java/pl/project13/maven/git/AvailableGitTestRepo.java
@@ -54,7 +54,42 @@ public enum AvailableGitTestRepo {
*/
WITH_COMMIT_THAT_HAS_TWO_TAGS("src/test/resources/_git_with_commit_that_has_two_tags"),
ON_A_TAG_DIRTY("src/test/resources/_git_on_a_tag_dirty"),
+
+ /**
+ *
+ * * 01ed93c - (11 years ago) any commit, just a readme - Konrad Malawski (HEAD -> master)
+ * * 4ce26eb - (11 years ago) my submodules, yay - Konrad Malawski
+ *
+ *
+ * $ git submodule status
+ * -9fd4b69a5ca09b60884d4f8f49ce16ea071077be module1
+ * -9fd4b69a5ca09b60884d4f8f49ce16ea071077be module2
+ * -9fd4b69a5ca09b60884d4f8f49ce16ea071077be module3
+ * -9fd4b69a5ca09b60884d4f8f49ce16ea071077be module4
+ *
+ * $ git config --file .gitmodules --get-regexp '\.url$'
+ * submodule.module1.url /tmp/module1
+ * submodule.module2.url /tmp/module1
+ * submodule.module3.url /tmp/module1
+ * submodule.module4.url /tmp/module1
+ *
+ */
WITH_SUBMODULES("src/test/resources/_git_with_submodules"),
+
+ /**
+ *
+ * 6455ccd - (3 minutes ago) init (HEAD -> master)
+ *
+ *
+ * $ git submodule status
+ * 945bfe60e8a3eff168e915c7ba5bac37c9d0165b remote-module (heads/empty-branch)
+ *
+ * $ git submodule foreach --recursive git remote get-url origin
+ * Entering 'remote-module'
+ * git@github.com:git-commit-id/git-test-resources.git
+ *
+ */
+ WITH_REMOTE_SUBMODULES("src/test/resources/_git_with_remote_submodules"),
/**
*
*
diff --git a/src/test/java/pl/project13/maven/git/BigDiffTest.java b/src/test/java/pl/project13/maven/git/BigDiffTest.java
index b06d2318..bdfaeb93 100644
--- a/src/test/java/pl/project13/maven/git/BigDiffTest.java
+++ b/src/test/java/pl/project13/maven/git/BigDiffTest.java
@@ -86,23 +86,6 @@ public void bigDiff() throws Exception {
assertGitPropertiesPresentInProject(targetProject.getProperties());
}
- private void assertGitPropertiesPresentInProject(final Properties properties) {
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
- }
-
private GitDescribeConfig createGitDescribeConfig(
final boolean forceLongFormat, final int abbrev) {
final GitDescribeConfig gitDescribeConfig = new GitDescribeConfig();
diff --git a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java
index 28d93d10..ee1a0608 100644
--- a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java
+++ b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java
@@ -18,7 +18,6 @@
package pl.project13.maven.git;
-import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.mockito.Mockito.when;
@@ -26,7 +25,6 @@
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
@@ -49,17 +47,6 @@
@RunWith(JUnitParamsRunner.class)
public class GitCommitIdMojoIntegrationTest extends GitIntegrationTest {
- private static final boolean UseJGit = false;
- private static final boolean UseNativeGit = true;
-
- public static Collection> useNativeGit() {
- return asList(UseJGit, UseNativeGit);
- }
-
- public static Collection> useDirty() {
- return asList(true, false);
- }
-
@Test
@Parameters(method = "useNativeGit")
public void shouldIncludeExpectedProperties(boolean useNativeGit) throws Exception {
@@ -78,19 +65,7 @@ public void shouldIncludeExpectedProperties(boolean useNativeGit) throws Excepti
// then
Properties properties = targetProject.getProperties();
-
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.dirty"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
+ assertGitPropertiesPresentInProject(properties);
}
@Test
@@ -1731,28 +1706,4 @@ private GitDescribeConfig createGitDescribeConfig(boolean forceLongFormat, int a
gitDescribeConfig.setDirty("");
return gitDescribeConfig;
}
-
- private void assertPropertyPresentAndEqual(Properties properties, String key, String expected) {
- assertThat(properties.stringPropertyNames()).contains(key);
- assertThat(properties.getProperty(key)).isEqualTo(expected);
- }
-
- private void assertGitPropertiesPresentInProject(Properties properties) {
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.commit.count"));
- }
}
diff --git a/src/test/java/pl/project13/maven/git/GitDirLocatorTest.java b/src/test/java/pl/project13/maven/git/GitDirLocatorTest.java
index e4ac9e12..98dccdbb 100644
--- a/src/test/java/pl/project13/maven/git/GitDirLocatorTest.java
+++ b/src/test/java/pl/project13/maven/git/GitDirLocatorTest.java
@@ -25,7 +25,9 @@
import java.util.Collections;
import java.util.List;
import org.apache.maven.project.MavenProject;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@@ -37,18 +39,20 @@ public class GitDirLocatorTest {
List reactorProjects = Collections.emptyList();
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Test
public void shouldUseTheManuallySpecifiedDirectory() throws Exception {
// given
- File dotGitDir = Files.createTempDirectory("temp").toFile();
+ File dotGitDir = folder.newFolder("temp");
try {
-
// when
GitDirLocator locator = new GitDirLocator(project, reactorProjects);
File foundDirectory = locator.lookupGitDirectory(dotGitDir);
// then
- assert foundDirectory != null;
+ assertThat(foundDirectory).isNotNull();
assertThat(foundDirectory.getAbsolutePath()).isEqualTo(dotGitDir.getAbsolutePath());
} finally {
if (!dotGitDir.delete()) {
@@ -57,12 +61,66 @@ public void shouldUseTheManuallySpecifiedDirectory() throws Exception {
}
}
+ @Test
+ public void shouldResolveRelativeSubmodule() throws Exception {
+ // given
+ folder.newFolder("main-project");
+ folder.newFolder("main-project", ".git", "modules", "sub-module");
+ folder.newFolder("main-project", "sub-module");
+
+ // and a .git dir in submodule that points to the main's project .git/modules/submodule
+ File dotGitDir = folder.getRoot().toPath()
+ .resolve("main-project")
+ .resolve("sub-module")
+ .resolve(".git")
+ .toFile();
+ Files.write(
+ dotGitDir.toPath(),
+ "gitdir: ../.git/modules/sub-module".getBytes()
+ );
+
+ try {
+ // when
+ GitDirLocator locator = new GitDirLocator(project, reactorProjects);
+ File foundDirectory = locator.lookupGitDirectory(dotGitDir);
+
+ // then
+ assertThat(foundDirectory).isNotNull();
+ assertThat(
+ foundDirectory.getCanonicalFile()
+ ).isEqualTo(
+ folder.getRoot().toPath()
+ .resolve("main-project")
+ .resolve(".git")
+ .resolve("modules")
+ .resolve("sub-module")
+ .toFile()
+ );
+ } finally {
+ if (!dotGitDir.delete()) {
+ dotGitDir.deleteOnExit();
+ }
+ }
+ }
+
@Test
public void testWorktreeResolution() {
- String[] noopCases = {"", "a", "a/b", ".git/worktrees", ".git/worktrees/", "a.git/worktrees/b"};
+ // tests to ensure we do not try to modify things that should not be modified
+ String[] noopCases = {
+ "",
+ "a",
+ "a/b",
+ ".git/worktrees",
+ ".git/worktrees/",
+ "a.git/worktrees/b",
+ ".git/modules",
+ ".git/modules/",
+ "a.git/modules/b",
+ };
for (String path : noopCases) {
assertThat(GitDirLocator.resolveWorktree(new File(path))).isEqualTo(new File(path));
}
+ // tests that worktree resolution works
assertThat(GitDirLocator.resolveWorktree(new File("a/.git/worktrees/b")))
.isEqualTo(new File("a/.git"));
assertThat(GitDirLocator.resolveWorktree(new File("/a/.git/worktrees/b")))
diff --git a/src/test/java/pl/project13/maven/git/GitIntegrationTest.java b/src/test/java/pl/project13/maven/git/GitIntegrationTest.java
index 0beca07d..8452307b 100644
--- a/src/test/java/pl/project13/maven/git/GitIntegrationTest.java
+++ b/src/test/java/pl/project13/maven/git/GitIntegrationTest.java
@@ -18,6 +18,8 @@
package pl.project13.maven.git;
+import static java.util.Arrays.asList;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -25,6 +27,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.Properties;
@@ -47,6 +50,13 @@ public abstract class GitIntegrationTest {
private static final String SANDBOX_DIR = "target" + File.separator + "sandbox" + File.separator;
protected static final String evaluateOnCommit = "HEAD";
+ private static final boolean UseJGit = false;
+ private static final boolean UseNativeGit = true;
+
+ public static Collection> useNativeGit() {
+ return asList(UseJGit, UseNativeGit);
+ }
+
/** Sandbox directory with unique name for current test. */
private String currSandbox;
@@ -156,4 +166,47 @@ private static List getReactorProjects(@Nonnull MavenProject proje
}
return reactorProjects;
}
+
+ public static void assertPropertyPresentAndEqual(
+ Properties properties, String key, String expected) {
+ assertThat(properties.stringPropertyNames()).contains(key);
+ assertThat(properties.getProperty(key)).isEqualTo(expected);
+ }
+
+ /**
+ * Ensures that the provided properties contain the properties the plugin can generate.
+ * See also {@link pl.project13.core.GitCommitPropertyConstant}
+ *
+ * @param properties The properties that should be verified
+ */
+ public static void assertGitPropertiesPresentInProject(Properties properties) {
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.local.branch.ahead"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.local.branch.behind"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.dirty"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe-short"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.build.version"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
+ // assertThat(properties).satisfies(new ContainsKeyCondition("git.build.number"));
+ // assertThat(properties).satisfies(new ContainsKeyCondition("git.build.number.unique"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.author.time"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.committer.time"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.tags"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.name"));
+ // assertThat(properties).satisfies(new ContainsKeyCondition("git.tag"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.commit.count"));
+ assertThat(properties).satisfies(new ContainsKeyCondition("git.total.commit.count"));
+ }
}
diff --git a/src/test/java/pl/project13/maven/git/GitPropertiesFileTest.java b/src/test/java/pl/project13/maven/git/GitPropertiesFileTest.java
index bc463ad8..f0c0af15 100644
--- a/src/test/java/pl/project13/maven/git/GitPropertiesFileTest.java
+++ b/src/test/java/pl/project13/maven/git/GitPropertiesFileTest.java
@@ -108,25 +108,4 @@ public void shouldConformPropertiesFileWhenSpecialCharactersInValueString(boolea
}
}
}
-
- private void assertGitPropertiesPresentInProject(Properties properties) {
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.committer.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.author.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.commit.count"));
- }
}
diff --git a/src/test/java/pl/project13/maven/git/GitSubmodulesTest.java b/src/test/java/pl/project13/maven/git/GitSubmodulesTest.java
index b2990a6e..3fb15306 100644
--- a/src/test/java/pl/project13/maven/git/GitSubmodulesTest.java
+++ b/src/test/java/pl/project13/maven/git/GitSubmodulesTest.java
@@ -18,22 +18,23 @@
package pl.project13.maven.git;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.util.Properties;
-import javax.annotation.Nonnull;
+import java.nio.file.Files;
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
import org.apache.maven.project.MavenProject;
import org.junit.Test;
-import pl.project13.core.jgit.DescribeCommand;
+import org.junit.runner.RunWith;
/**
* Testcases to verify that the git-commit-id-plugin works properly.
*/
+@RunWith(JUnitParamsRunner.class)
public class GitSubmodulesTest extends GitIntegrationTest {
@Test
- public void shouldResolvePropertiesOnDefaultSettingsForNonPomProject() throws Exception {
+ @Parameters(method = "useNativeGit")
+ public void shouldResolvePropertiesOnDefaultSettingsForNonPomProject(
+ boolean useNativeGit) throws Exception {
mavenSandbox
.withParentProject("my-jar-project", "jar")
.withGitRepoInParent(AvailableGitTestRepo.WITH_SUBMODULES)
@@ -42,6 +43,7 @@ public void shouldResolvePropertiesOnDefaultSettingsForNonPomProject() throws Ex
MavenProject targetProject = mavenSandbox.getChildProject();
setProjectToExecuteMojoIn(targetProject);
+ mojo.useNativeGit = useNativeGit;
// when
mojo.execute();
@@ -50,24 +52,33 @@ public void shouldResolvePropertiesOnDefaultSettingsForNonPomProject() throws Ex
assertGitPropertiesPresentInProject(targetProject.getProperties());
}
- public void setProjectToExecuteMojoIn(@Nonnull MavenProject project) {
- mojo.project = project;
- mojo.dotGitDirectory = new File(project.getBasedir(), ".git");
- }
+ @Test
+ @Parameters(method = "useNativeGit")
+ public void shouldGeneratePropertiesWithSubmodules(boolean useNativeGit) throws Exception {
+ // given
+ mavenSandbox
+ .withParentProject("my-pom-project", "pom")
+ .withGitRepoInParent(AvailableGitTestRepo.WITH_REMOTE_SUBMODULES)
+ .withChildProject("remote-module", "jar")
+ .create();
+ MavenProject targetProject = mavenSandbox.getChildProject();
+ setProjectToExecuteMojoIn(targetProject);
- private void assertGitPropertiesPresentInProject(Properties properties) {
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
+ // create a relative pointer to trigger the relative path logic in
+ // GitDirLocator#lookupGitDirectory
+ // makes the dotGitDirectory look like "my-pom-project/.git/modules/remote-module"
+ Files.write(
+ mavenSandbox.getChildProject().getBasedir().toPath().resolve(".git"),
+ "gitdir: ../.git/modules/remote-module".getBytes()
+ );
+
+ mojo.useNativeGit = useNativeGit;
+
+ // when
+ mojo.execute();
+
+ // then
+ assertPropertyPresentAndEqual(
+ targetProject.getProperties(), "git.commit.id.abbrev", "945bfe6");
}
}
diff --git a/src/test/java/pl/project13/maven/git/NaivePerformanceTest.java b/src/test/java/pl/project13/maven/git/NaivePerformanceTest.java
index e9de42ed..802d62e9 100644
--- a/src/test/java/pl/project13/maven/git/NaivePerformanceTest.java
+++ b/src/test/java/pl/project13/maven/git/NaivePerformanceTest.java
@@ -94,23 +94,4 @@ private GitDescribeConfig createGitDescribeConfig(boolean forceLongFormat, int a
gitDescribeConfig.setAbbrev(abbrev);
return gitDescribeConfig;
}
-
- private void assertGitPropertiesPresentInProject(Properties properties) {
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.host"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.branch"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.abbrev"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.id.describe"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.build.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.name"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.user.email"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.author.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.committer.time"));
- assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
- }
}
diff --git a/src/test/java/pl/project13/maven/git/NativeAndJGitProviderTest.java b/src/test/java/pl/project13/maven/git/NativeAndJGitProviderTest.java
index 215c5439..4c35a98c 100644
--- a/src/test/java/pl/project13/maven/git/NativeAndJGitProviderTest.java
+++ b/src/test/java/pl/project13/maven/git/NativeAndJGitProviderTest.java
@@ -186,10 +186,4 @@ private Properties createCopy(Properties orig) {
return p;
}
-
- private void assertGitPropertiesPresentInProject(Properties properties) {
- for (String key : GIT_KEYS) {
- assertThat(properties).satisfies(new ContainsKeyCondition(key));
- }
- }
}
diff --git a/src/test/resources b/src/test/resources
index f2d84eea..0e549504 160000
--- a/src/test/resources
+++ b/src/test/resources
@@ -1 +1 @@
-Subproject commit f2d84eeaa87c2a28e482bbd64eae47402a08bff4
+Subproject commit 0e549504984403f5e9a29b9c104d027a705d9963