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>tags/v1.1.0.201109011030-rc2
@@ -46,6 +46,7 @@ import static org.junit.Assert.assertEquals; | |||
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 class ResetCommandTest extends RepositoryTestCase { | |||
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 class ResetCommand extends GitCommand<Ref> { | |||
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), |