The FS class and the subclasses FS_POSIX assumed in the findHook() method that every repository has a valid gitDir. But in tests when using in-memory-repositories this is not true and this method was generating NPEs. Change the method to return null if no repository directory can be determined. Change-Id: I38a4d36dc6452b5dacae3d0dbf562b569ca3c19btags/v4.1.0.201509280440-r
@@ -866,7 +866,10 @@ public abstract class FS { | |||
* @since 4.0 | |||
*/ | |||
public File findHook(Repository repository, final String hookName) { | |||
final File hookFile = new File(new File(repository.getDirectory(), | |||
File gitDir = repository.getDirectory(); | |||
if (gitDir == null) | |||
return null; | |||
final File hookFile = new File(new File(gitDir, | |||
Constants.HOOKS), hookName); | |||
return hookFile.isFile() ? hookFile : null; | |||
} |
@@ -335,6 +335,9 @@ public class FS_POSIX extends FS { | |||
@Override | |||
public File findHook(Repository repository, String hookName) { | |||
final File gitdir = repository.getDirectory(); | |||
if (gitdir == null) { | |||
return null; | |||
} | |||
final Path hookPath = gitdir.toPath().resolve(Constants.HOOKS) | |||
.resolve(hookName); | |||
if (Files.isExecutable(hookPath)) |