Throw JGit exception when ResetCommand got wrong ref
If the ResetCommand should reset to a invalid ref (e.g. HEAD in a repo whithout a single commit) it was throwing an NPE. This is fixed now by throwing a JGitInternalExcpeption. It would be nicer if we could throw a InvalidRefException, but this would modify our API. Bug: 339610 Change-Id: Iffcb4f2cca9f702176471d93c3a71e5cb3e700b1 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
This commit is contained in:
parent
9952223e06
commit
930875a81a
|
@ -46,6 +46,7 @@
|
|||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -156,6 +157,22 @@ public void testHardReset() throws JGitInternalException,
|
|||
assertReflog(prevHead, head);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResetToNonexistingHEAD() throws JGitInternalException,
|
||||
AmbiguousObjectException, IOException {
|
||||
|
||||
// create a file in the working tree of a fresh repo
|
||||
git = new Git(db);
|
||||
writeTrashFile("f", "content");
|
||||
|
||||
try {
|
||||
git.reset().setRef(Constants.HEAD).call();
|
||||
fail("Expected JGitInternalException didn't occur");
|
||||
} catch (JGitInternalException e) {
|
||||
// got the expected exception
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSoftReset() throws JGitInternalException,
|
||||
AmbiguousObjectException, IOException, NoFilepatternException,
|
||||
|
|
|
@ -151,6 +151,12 @@ public Ref call() throws IOException {
|
|||
final ObjectId commitId;
|
||||
try {
|
||||
commitId = repo.resolve(ref);
|
||||
if (commitId == null) {
|
||||
// @TODO throw an InvalidRefNameException. We can't do that
|
||||
// now because this would break the API
|
||||
throw new JGitInternalException("Invalid ref " + ref
|
||||
+ " specified");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new JGitInternalException(
|
||||
MessageFormat.format(JGitText.get().cannotRead, ref),
|
||||
|
|
Loading…
Reference in New Issue