Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class VersionerPlugin implements Plugin<Project> {

@Override
public void apply(Project project) {
File gitFolder = new File(project.getRootDir() + "/.git");
File gitFolder = findGitFolder(project.getRootDir());
Versioner versioner = Versioner.builder().gitFolder(gitFolder).build();
VersionerExtension extension =
project.getExtensions().create("versioner", VersionerExtension.class, project, versioner);
Expand Down Expand Up @@ -50,4 +50,12 @@ public void apply(Project project) {
tagVersionTask.get().getVersion().set(innerProject.getVersion().toString());
});
}

File findGitFolder(File folder) {
if(folder == null) {
throw new IllegalStateException("No .git directory found in path tree");
}
File gitFolder = new File(folder, ".git");
return gitFolder.exists() ? gitFolder : findGitFolder(folder.getParentFile());
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
/* (C) 2022 Hugo Dias */
package pt.com.hugodias.gradle.gitversioner;

import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.gradle.api.Project;
import org.gradle.testfixtures.ProjectBuilder;
import org.junit.jupiter.api.Test;

import java.io.File;

import static org.junit.jupiter.api.Assertions.*;

class VersionerPluginTest {

@Test
Expand All @@ -20,4 +21,24 @@ void greetingTest() {
assertNotNull(project.getTasks().getByName("printVersion"));
assertNotNull(project.getTasks().getByName("tagVersion"));
}

@Test
void testFindGitFolderInCurrentDir() {
Project project = ProjectBuilder.builder().build();
File gitDir = new File(project.getRootDir() + "/.git");
assertTrue(gitDir.mkdirs());

assertEquals(gitDir, new VersionerPlugin().findGitFolder(project.getRootDir()));
}

@Test
void testFindGitFolderInParentDir() {
Project project = ProjectBuilder.builder().build();
File gitDir = new File(project.getRootDir() + "/.git");
File testRootDir = new File(project.getRootDir() + "/sub1/sub2");
assertTrue(gitDir.mkdirs());
assertTrue(testRootDir.mkdirs());

assertEquals(gitDir, new VersionerPlugin().findGitFolder(testRootDir));
}
}