diff --git a/spec/git-repository-provider-spec.coffee b/spec/git-repository-provider-spec.coffee index 7d77adc36..59e3f55af 100644 --- a/spec/git-repository-provider-spec.coffee +++ b/spec/git-repository-provider-spec.coffee @@ -54,3 +54,27 @@ describe "GitRepositoryProvider", -> directory = new Directory dirPath provider.repositoryForDirectory(directory).then (result) -> expect(result).toBe null + + describe "when specified a Directory without existsSync()", -> + directory = null + provider = null + beforeEach -> + provider = new GitRepositoryProvider atom.project + + # An implementation of Directory that does not implement existsSync(). + subdirectory = {} + directory = + getSubdirectory: -> + isRoot: -> true + spyOn(directory, "getSubdirectory").andReturn(subdirectory) + + it "returns null", -> + repo = provider.repositoryForDirectorySync(directory) + expect(repo).toBe null + expect(directory.getSubdirectory).toHaveBeenCalledWith(".git") + + it "returns a Promise that resolves to null for the async implementation", -> + waitsForPromise -> + provider.repositoryForDirectory(directory).then (repo) -> + expect(repo).toBe null + expect(directory.getSubdirectory).toHaveBeenCalledWith(".git") diff --git a/src/git-repository-provider.coffee b/src/git-repository-provider.coffee index 210197599..850d30f22 100644 --- a/src/git-repository-provider.coffee +++ b/src/git-repository-provider.coffee @@ -11,7 +11,7 @@ findGitDirectorySync = (directory) -> # can return cached values rather than always returning new objects: # getParent(), getFile(), getSubdirectory(). gitDir = directory.getSubdirectory('.git') - if gitDir.existsSync() and isValidGitDirectorySync gitDir + if gitDir.existsSync?() and isValidGitDirectorySync gitDir gitDir else if directory.isRoot() return null