Guard against detected repository that does not open

Closes #5609
This commit is contained in:
Kevin Sawicki
2015-02-18 09:11:48 -08:00
parent 2939104bbc
commit 63af713a3f
2 changed files with 17 additions and 2 deletions

View File

@@ -1,11 +1,12 @@
path = require 'path'
fs = require 'fs-plus'
temp = require 'temp'
{Directory} = require 'pathwatcher'
GitRepository = require '../src/git-repository'
GitRepositoryProvider = require '../src/git-repository-provider'
describe "GitRepositoryProvider", ->
describe ".repositoryForDirectory(directory)", ->
describe "when specified a Directory with a Git repository", ->
it "returns a Promise that resolves to a GitRepository", ->
waitsForPromise ->
@@ -37,6 +38,19 @@ describe "GitRepositoryProvider", ->
it "returns a Promise that resolves to null", ->
waitsForPromise ->
provider = new GitRepositoryProvider atom.project
directory = new Directory '/tmp'
directory = new Directory temp.mkdirSync('dir')
provider.repositoryForDirectory(directory).then (result) ->
expect(result).toBe null
describe "when specified a Directory with an invalid Git repository", ->
it "returns a Promise that resolves to null", ->
waitsForPromise ->
provider = new GitRepositoryProvider atom.project
dirPath = temp.mkdirSync('dir')
fs.writeFileSync(path.join(dirPath, '.git', 'objects'), '')
fs.writeFileSync(path.join(dirPath, '.git', 'HEAD'), '')
fs.writeFileSync(path.join(dirPath, '.git', 'refs'), '')
directory = new Directory dirPath
provider.repositoryForDirectory(directory).then (result) ->
expect(result).toBe null

View File

@@ -62,6 +62,7 @@ class GitRepositoryProvider
repo = @pathToRepository[gitDirPath]
unless repo
repo = GitRepository.open(gitDirPath, project: @project)
return null unless repo
repo.onDidDestroy(=> delete @pathToRepository[gitDirPath])
@pathToRepository[gitDirPath] = repo
repo.refreshIndex()