mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Gracefully handle empty keymaps and menus
Closes atom/settings-view#310
This commit is contained in:
0
spec/fixtures/packages/package-with-empty-keymap/keymaps/keymap.cson
vendored
Normal file
0
spec/fixtures/packages/package-with-empty-keymap/keymaps/keymap.cson
vendored
Normal file
4
spec/fixtures/packages/package-with-empty-keymap/package.json
vendored
Normal file
4
spec/fixtures/packages/package-with-empty-keymap/package.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "package-with-empty-keymap",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
0
spec/fixtures/packages/package-with-empty-menu/menus/menu.cson
vendored
Normal file
0
spec/fixtures/packages/package-with-empty-menu/menus/menu.cson
vendored
Normal file
4
spec/fixtures/packages/package-with-empty-menu/package.json
vendored
Normal file
4
spec/fixtures/packages/package-with-empty-menu/package.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "package-with-empty-menu",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
@@ -273,6 +273,14 @@ describe "PackageManager", ->
|
||||
expect(atom.keymaps.findKeyBindings(keystrokes:'ctrl-n', target:element1[0])[0].command).toBe 'keymap-2'
|
||||
expect(atom.keymaps.findKeyBindings(keystrokes:'ctrl-y', target:element3[0])).toHaveLength 0
|
||||
|
||||
describe "when the keymap file is empty", ->
|
||||
it "does not throw an error on activation", ->
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage("package-with-empty-keymap")
|
||||
|
||||
runs ->
|
||||
expect(atom.packages.isPackageActive("package-with-empty-keymap")).toBe true
|
||||
|
||||
describe "menu loading", ->
|
||||
beforeEach ->
|
||||
atom.contextMenu.definitions = []
|
||||
@@ -311,6 +319,14 @@ describe "PackageManager", ->
|
||||
expect(atom.contextMenu.templateForElement(element)[1].label).toBe "Menu item 1"
|
||||
expect(atom.contextMenu.templateForElement(element)[2]).toBeUndefined()
|
||||
|
||||
describe "when the menu file is empty", ->
|
||||
it "does not throw an error on activation", ->
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage("package-with-empty-menu")
|
||||
|
||||
runs ->
|
||||
expect(atom.packages.isPackageActive("package-with-empty-menu")).toBe true
|
||||
|
||||
describe "stylesheet loading", ->
|
||||
describe "when the metadata contains a 'stylesheets' manifest", ->
|
||||
it "loads stylesheets from the stylesheets directory as specified by the manifest", ->
|
||||
|
||||
@@ -206,13 +206,13 @@ class Package
|
||||
if @bundledPackage and packagesCache[@name]?
|
||||
@keymaps = (["#{atom.packages.resourcePath}#{path.sep}#{keymapPath}", keymapObject] for keymapPath, keymapObject of packagesCache[@name].keymaps)
|
||||
else
|
||||
@keymaps = @getKeymapPaths().map (keymapPath) -> [keymapPath, CSON.readFileSync(keymapPath)]
|
||||
@keymaps = @getKeymapPaths().map (keymapPath) -> [keymapPath, CSON.readFileSync(keymapPath) ? {}]
|
||||
|
||||
loadMenus: ->
|
||||
if @bundledPackage and packagesCache[@name]?
|
||||
@menus = (["#{atom.packages.resourcePath}#{path.sep}#{menuPath}", menuObject] for menuPath, menuObject of packagesCache[@name].menus)
|
||||
else
|
||||
@menus = @getMenuPaths().map (menuPath) -> [menuPath, CSON.readFileSync(menuPath)]
|
||||
@menus = @getMenuPaths().map (menuPath) -> [menuPath, CSON.readFileSync(menuPath) ? {}]
|
||||
|
||||
getKeymapPaths: ->
|
||||
keymapsDirPath = path.join(@path, 'keymaps')
|
||||
|
||||
Reference in New Issue
Block a user