mirror of
https://github.com/atom/atom.git
synced 2026-01-25 06:48:28 -05:00
Merge pull request #6026 from atom/jlks-missing-services-fix
Check Comsumed/Provided Service Method Exists, fixes #416
This commit is contained in:
4
spec/fixtures/packages/package-with-missing-consumed-services/index.coffee
vendored
Normal file
4
spec/fixtures/packages/package-with-missing-consumed-services/index.coffee
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports =
|
||||
activate: ->
|
||||
|
||||
deactivate: ->
|
||||
11
spec/fixtures/packages/package-with-missing-consumed-services/package.json
vendored
Normal file
11
spec/fixtures/packages/package-with-missing-consumed-services/package.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "package-with-missing-consumed-services",
|
||||
|
||||
"consumedServices": {
|
||||
"service-1": {
|
||||
"versions": {
|
||||
">=0.1": "consumeMissingService"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
spec/fixtures/packages/package-with-missing-provided-services/index.coffee
vendored
Normal file
4
spec/fixtures/packages/package-with-missing-provided-services/index.coffee
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports =
|
||||
activate: ->
|
||||
|
||||
deactivate: ->
|
||||
12
spec/fixtures/packages/package-with-missing-provided-services/package.json
vendored
Normal file
12
spec/fixtures/packages/package-with-missing-provided-services/package.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "package-with-missing-provided-services",
|
||||
|
||||
"providedServices": {
|
||||
"service-1": {
|
||||
"description": "The first service",
|
||||
"versions": {
|
||||
"0.2.9": "provideMissingService"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -547,6 +547,21 @@ describe "PackageManager", ->
|
||||
expect(consumerModule.consumeFirstServiceV4).not.toHaveBeenCalled()
|
||||
expect(consumerModule.consumeSecondService).not.toHaveBeenCalled()
|
||||
|
||||
it "ignores provided and consumed services that do not exist", ->
|
||||
addErrorHandler = jasmine.createSpy()
|
||||
atom.notifications.onDidAddNotification(addErrorHandler)
|
||||
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage("package-with-missing-consumed-services")
|
||||
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage("package-with-missing-provided-services")
|
||||
|
||||
runs ->
|
||||
expect(atom.packages.isPackageActive("package-with-missing-consumed-services")).toBe true
|
||||
expect(atom.packages.isPackageActive("package-with-missing-provided-services")).toBe true
|
||||
expect(addErrorHandler.callCount).toBe 0
|
||||
|
||||
describe "::deactivatePackage(id)", ->
|
||||
afterEach ->
|
||||
atom.packages.unloadPackages()
|
||||
|
||||
@@ -225,12 +225,14 @@ class Package
|
||||
for name, {versions} of @metadata.providedServices
|
||||
servicesByVersion = {}
|
||||
for version, methodName of versions
|
||||
servicesByVersion[version] = @mainModule[methodName]()
|
||||
if typeof @mainModule[methodName] is 'function'
|
||||
servicesByVersion[version] = @mainModule[methodName]()
|
||||
@activationDisposables.add atom.packages.serviceHub.provide(name, servicesByVersion)
|
||||
|
||||
for name, {versions} of @metadata.consumedServices
|
||||
for version, methodName of versions
|
||||
@activationDisposables.add atom.packages.serviceHub.consume(name, version, @mainModule[methodName].bind(@mainModule))
|
||||
if typeof @mainModule[methodName] is 'function'
|
||||
@activationDisposables.add atom.packages.serviceHub.consume(name, version, @mainModule[methodName].bind(@mainModule))
|
||||
return
|
||||
|
||||
loadKeymaps: ->
|
||||
|
||||
Reference in New Issue
Block a user