Merge pull request #9975 from atom/mb-fix-package-json-config-schema-handling

Fix some issues with config schemas in packages' package.json files
This commit is contained in:
Max Brunsfeld
2015-12-08 12:33:35 -08:00
3 changed files with 21 additions and 4 deletions

View File

@@ -154,7 +154,6 @@ describe "PackageManager", ->
it "registers the config schema in the package's metadata, if present", ->
pack = atom.packages.loadPackage("package-with-json-config-schema")
expect(atom.config.getSchema('package-with-json-config-schema')).toEqual {
type: 'object'
properties: {
@@ -165,9 +164,20 @@ describe "PackageManager", ->
expect(pack.mainModule).toBeNull()
atom.packages.unloadPackage('package-with-json-config-schema')
atom.config.clear()
pack = atom.packages.loadPackage("package-with-json-config-schema")
expect(atom.config.getSchema('package-with-json-config-schema')).toEqual {
type: 'object'
properties: {
a: {type: 'number', default: 5}
b: {type: 'string', default: 'five'}
}
}
describe "when a package does not have deserializers, view providers or a config schema in its package.json", ->
beforeEach ->
atom.packages.unloadPackage('package-with-main')
mockLocalStorage()
it "defers loading the package's main module if the package previously used no Atom APIs when its main module was required", ->

View File

@@ -47,6 +47,7 @@ class PackageManager
@packagesCache = require('../package.json')?._atomPackages ? {}
@loadedPackages = {}
@activePackages = {}
@activatingPackages = {}
@packageStates = {}
@serviceHub = new ServiceHub
@@ -62,6 +63,7 @@ class PackageManager
reset: ->
@serviceHub.clear()
@deactivatePackages()
@loadedPackages = {}
@packageStates = {}
###
@@ -436,9 +438,12 @@ class PackageManager
if pack = @getActivePackage(name)
Promise.resolve(pack)
else if pack = @loadPackage(name)
@activatingPackages[pack.name] = pack
pack.activate().then =>
@activePackages[pack.name] = pack
@emitter.emit 'did-activate-package', pack
if @activatingPackages[pack.name]?
delete @activatingPackages[pack.name]
@activePackages[pack.name] = pack
@emitter.emit 'did-activate-package', pack
pack
else
Promise.reject(new Error("Failed to load package '#{name}'"))
@@ -474,6 +479,7 @@ class PackageManager
@setPackageState(pack.name, state) if state = pack.serialize?()
pack.deactivate()
delete @activePackages[pack.name]
delete @activatingPackages[pack.name]
@emitter.emit 'did-deactivate-package', pack
handleMetadataError: (error, packagePath) ->

View File

@@ -14,6 +14,7 @@ class ThemePackage extends Package
load: ->
@loadTime = 0
@configSchemaRegisteredOnLoad = @registerConfigSchemaFromMetadata()
this
activate: ->