Merge pull request #12897 from atom/fb-mdt-initial-packages-getters

Add methods for checking if initial packages have been loaded/activated
This commit is contained in:
Nathan Sobo
2016-10-07 06:58:10 -06:00
committed by GitHub
2 changed files with 29 additions and 0 deletions

View File

@@ -31,6 +31,19 @@ describe "PackageManager", ->
it "returns the value of the core.apmPath config setting", ->
expect(atom.packages.getApmPath()).toBe "/path/to/apm"
describe "::loadPackages()", ->
beforeEach ->
spyOn(atom.packages, 'loadPackage')
afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
it "sets hasLoadedInitialPackages", ->
expect(atom.packages.hasLoadedInitialPackages()).toBe false
atom.packages.loadPackages()
expect(atom.packages.hasLoadedInitialPackages()).toBe true
describe "::loadPackage(name)", ->
beforeEach ->
atom.config.set("core.disabledPackages", [])
@@ -1022,6 +1035,12 @@ describe "PackageManager", ->
jasmine.restoreDeprecationsSnapshot()
it "sets hasActivatedInitialPackages", ->
spyOn(atom.packages, 'activatePackages')
expect(atom.packages.hasActivatedInitialPackages()).toBe false
waitsForPromise -> atom.packages.activate()
runs -> expect(atom.packages.hasActivatedInitialPackages()).toBe true
it "activates all the packages, and none of the themes", ->
packageActivator = spyOn(atom.packages, 'activatePackages')
themeActivator = spyOn(atom.themes, 'activatePackages')

View File

@@ -45,6 +45,8 @@ class PackageManager
@packageDirPaths.push(path.join(configDirPath, "packages"))
@packagesCache = require('../package.json')?._atomPackages ? {}
@initialPackagesLoaded = false
@initialPackagesActivated = false
@loadedPackages = {}
@activePackages = {}
@activatingPackages = {}
@@ -241,6 +243,9 @@ class PackageManager
isPackageActive: (name) ->
@getActivePackage(name)?
# Public: Returns a {Boolean} indicating whether package activation has occurred.
hasActivatedInitialPackages: -> @initialPackagesActivated
###
Section: Accessing loaded packages
###
@@ -271,6 +276,9 @@ class PackageManager
isPackageLoaded: (name) ->
@getLoadedPackage(name)?
# Public: Returns a {Boolean} indicating whether package loading has occurred.
hasLoadedInitialPackages: -> @initialPackagesLoaded
###
Section: Accessing available packages
###
@@ -364,6 +372,7 @@ class PackageManager
@config.transact =>
@loadPackage(packagePath) for packagePath in packagePaths
return
@initialPackagesLoaded = true
@emitter.emit 'did-load-initial-packages'
loadPackage: (nameOrPath) ->
@@ -426,6 +435,7 @@ class PackageManager
promises = promises.concat(activator.activatePackages(packages))
Promise.all(promises).then =>
@triggerDeferredActivationHooks()
@initialPackagesActivated = true
@emitter.emit 'did-activate-initial-packages'
# another type of package manager can handle other package types.