From 186bcd70a5d0a7b9fd22abecf817fe4ffe6b66ed Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 12 May 2017 10:09:13 +0200 Subject: [PATCH] Fix running packages preloading tests in interactive mode This change also makes the test more useful, as it verifies that reading metadata from package.json's `packagesCache` works correctly. --- spec/package-manager-spec.coffee | 21 ++++++++++++++++----- src/package-manager.coffee | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index 392d515b2..62cc067e9 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -328,10 +328,15 @@ describe "PackageManager", -> it "requires the main module, loads the config schema and activates keymaps, menus and settings without reactivating them during package activation", -> availablePackage = atom.packages.getAvailablePackages().find (p) -> p.name is 'spell-check' availablePackage.isBundled = true + metadata = atom.packages.loadPackageMetadata(availablePackage) expect(atom.packages.preloadedPackages[availablePackage.name]).toBeUndefined() expect(atom.packages.isPackageLoaded(availablePackage.name)).toBe(false) - metadata = atom.packages.loadPackageMetadata(availablePackage) + atom.packages.packagesCache = {} + atom.packages.packagesCache[availablePackage.name] = { + main: path.join(availablePackage.path, metadata.main), + grammarPaths: [] + } preloadedPackage = atom.packages.preloadPackage( availablePackage.name, { @@ -345,14 +350,15 @@ describe "PackageManager", -> expect(preloadedPackage.mainModule).toBeTruthy() expect(preloadedPackage.configSchemaRegisteredOnLoad).toBeTruthy() - atom.packages.loadAvailablePackage(availablePackage) - spyOn(atom.keymaps, 'add') spyOn(atom.menu, 'add') spyOn(atom.contextMenu, 'add') spyOn(atom.config, 'setSchema') - atom.packages.activatePackage(availablePackage.name) + atom.packages.loadAvailablePackage(availablePackage) + expect(preloadedPackage.getMainModulePath()).toBe(path.join(availablePackage.path, metadata.main)) + + atom.packages.activatePackage(availablePackage.name) expect(atom.keymaps.add).not.toHaveBeenCalled() expect(atom.menu.add).not.toHaveBeenCalled() expect(atom.contextMenu.add).not.toHaveBeenCalled() @@ -366,10 +372,15 @@ describe "PackageManager", -> it "deactivates disabled keymaps during package activation", -> availablePackage = atom.packages.getAvailablePackages().find (p) -> p.name is 'spell-check' availablePackage.isBundled = true + metadata = atom.packages.loadPackageMetadata(availablePackage) expect(atom.packages.preloadedPackages[availablePackage.name]).toBeUndefined() expect(atom.packages.isPackageLoaded(availablePackage.name)).toBe(false) - metadata = atom.packages.loadPackageMetadata(availablePackage) + atom.packages.packagesCache = {} + atom.packages.packagesCache[availablePackage.name] = { + main: path.join(availablePackage.path, metadata.main), + grammarPaths: [] + } preloadedPackage = atom.packages.preloadPackage( availablePackage.name, { diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 191c8d6dc..55c5f2f02 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -73,6 +73,8 @@ class PackageManager @loadedPackages = {} @preloadedPackages = {} @packageStates = {} + @packagesCache = packageJSON._atomPackages ? {} + @packageDependencies = packageJSON.packageDependencies ? {} @triggeredActivationHooks.clear() ###