When opening a repo in a dir that is not a bare repo then an exception is thrown
This commit is contained in:
parent
e1e94c7770
commit
18e9d51248
4 changed files with 46 additions and 3 deletions
|
@ -22,6 +22,7 @@
|
|||
package net.kemitix.gitdb;
|
||||
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
|
@ -47,4 +48,12 @@ public interface GitDB {
|
|||
);
|
||||
}
|
||||
|
||||
static GitDBLocal openLocal(final Path dbDir) throws IOException {
|
||||
try {
|
||||
final Git git = Git.open(dbDir.toFile());
|
||||
return new GitDBLocal(git);
|
||||
} catch (RepositoryNotFoundException e) {
|
||||
throw new GitDbRepoNotFoundException(dbDir, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,6 +58,10 @@ class GitDBLocal implements GitDB {
|
|||
}
|
||||
}
|
||||
|
||||
GitDBLocal(final Git git) {
|
||||
this.git = git;
|
||||
}
|
||||
|
||||
private void validateDbDir(final File dbDir) throws IOException {
|
||||
verifyIsNotAFile(dbDir);
|
||||
if (dbDir.exists()) {
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package net.kemitix.gitdb;
|
||||
|
||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
/**
|
||||
* Runtime exception thrown when attempting to open to location that is not a GitDB repo.
|
||||
*
|
||||
* @author Paul Campbell (pcampbell@kemitix.net)
|
||||
*/
|
||||
public class GitDbRepoNotFoundException extends RuntimeException {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param path the path that is not a valid GitDB repo
|
||||
* @param cause the original exception
|
||||
*/
|
||||
GitDbRepoNotFoundException(final Path path, final RepositoryNotFoundException cause) {
|
||||
super(cause);
|
||||
}
|
||||
}
|
|
@ -6,14 +6,11 @@ import org.eclipse.jgit.api.errors.GitAPIException;
|
|||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.*;
|
||||
import java.util.List;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
|
@ -120,6 +117,16 @@ class GitDBTest implements WithAssertions {
|
|||
}
|
||||
|
||||
// When opening a repo in a dir that is not a bare repo then an exception is thrown
|
||||
@Test
|
||||
void openRepo_NotBareRepo_thenThrowException() throws IOException {
|
||||
//given
|
||||
final Path dir = dirExists();
|
||||
//then
|
||||
assertThatExceptionOfType(GitDbRepoNotFoundException.class)
|
||||
.isThrownBy(() -> GitDB.openLocal(dir))
|
||||
.withMessageContaining(dir.toString());
|
||||
}
|
||||
|
||||
// When opening a repo in a dir that is a file then an exception is thrown
|
||||
// When opening a repo in a dir that doesn't exist then an exception is thrown
|
||||
|
||||
|
|
Loading…
Reference in a new issue