Stop using directory providers when their providing packages are deactivated

This commit is contained in:
Max Brunsfeld
2015-10-08 15:20:13 -07:00
parent b754f1e125
commit a9c8640ab1
2 changed files with 13 additions and 2 deletions

View File

@@ -159,8 +159,10 @@ describe "Project", ->
existsSync: -> @path.endsWith('does-exist')
contains: (filePath) -> filePath.startsWith(@path)
serviceDisposable = null
beforeEach ->
atom.packages.serviceHub.provide("atom.directory-provider", "0.1.0", {
serviceDisposable = atom.packages.serviceHub.provide("atom.directory-provider", "0.1.0", {
directoryForURISync: (uri) ->
if uri.startsWith("ssh://")
new DummyDirectory(uri)
@@ -204,6 +206,11 @@ describe "Project", ->
expect(directories[3].getPath()).toBe otherRemotePath
expect(directories[3] instanceof DummyDirectory).toBe true
it "stops using the provider when the service is removed", ->
serviceDisposable.dispose()
atom.project.setPaths(["ssh://foreign-directory:8080/does-exist"])
expect(atom.project.getDirectories()[0] instanceof Directory).toBe true
describe ".open(path)", ->
[absolutePath, newBufferHandler] = []

View File

@@ -33,7 +33,11 @@ class Project extends Model
packageManager.serviceHub.consume(
'atom.directory-provider',
'^0.1.0',
(provider) => @directoryProviders.unshift(provider))
(provider) =>
@directoryProviders.unshift(provider)
new Disposable =>
@directoryProviders.splice(@directoryProviders.indexOf(provider), 1)
)
# Mapping from the real path of a {Directory} to a {Promise} that resolves
# to either a {Repository} or null. Ideally, the {Directory} would be used