Clean up repository-providers when their providing packages are are deactivated

This commit is contained in:
Max Brunsfeld
2015-10-08 13:49:37 -07:00
parent c268b4e050
commit 2af6f995b4
2 changed files with 19 additions and 3 deletions

View File

@@ -16,7 +16,7 @@ describe "Project", ->
# Wait for project's service consumers to be asynchronously added
waits(1)
describe "when a new repository-provider is added", ->
describe "when a repository-provider service is provided", ->
it "uses it to create repositories for any directories that need one", ->
projectPath = temp.mkdirSync('atom-project')
atom.project.setPaths([projectPath])
@@ -54,6 +54,19 @@ describe "Project", ->
expect(atom.project.getRepositories()).toBe repositories
it "stops using it to create repositories when the service is removed", ->
atom.project.setPaths([])
disposable = atom.packages.serviceHub.provide("atom.repository-provider", "0.1.0", {
repositoryForDirectory: (directory) -> Promise.resolve(dummyRepository)
repositoryForDirectorySync: (directory) -> {destroy: -> null}
})
disposable.dispose()
atom.project.addPath(temp.mkdirSync('atom-project'))
expect(atom.project.getRepositories()).toEqual [null]
describe "serialization", ->
deserializedProject = null

View File

@@ -3,7 +3,7 @@ url = require 'url'
_ = require 'underscore-plus'
fs = require 'fs-plus'
{Emitter} = require 'event-kit'
{Emitter, Disposable} = require 'event-kit'
TextBuffer = require 'text-buffer'
DefaultDirectoryProvider = require './default-directory-provider'
@@ -53,7 +53,10 @@ class Project extends Model
# @repositoryProviders has been updated.
if null in @repositories
@setPaths(@getPaths())
)
new Disposable =>
@repositoryProviders.splice(@repositoryProviders.indexOf(provider), 1)
)
destroyed: ->
buffer.destroy() for buffer in @getBuffers()