Skip to content

Commit

Permalink
Get more tests working after async
Browse files Browse the repository at this point in the history
  • Loading branch information
damieng committed Sep 9, 2017
1 parent 9898f6b commit 0a2ff53
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 39 deletions.
10 changes: 6 additions & 4 deletions spec/grammars-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ describe "the `grammars` global", ->
atom.packages.activatePackage('language-git')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
try
temp.cleanupSync()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()
try
temp.cleanupSync()

describe ".selectGrammar(filePath)", ->
it "always returns a grammar", ->
Expand Down
48 changes: 32 additions & 16 deletions spec/language-mode-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-javascript')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe ".minIndentLevelForRowRange(startRow, endRow)", ->
it "returns the minimum indent level for the given row range", ->
Expand Down Expand Up @@ -175,8 +177,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-coffee-script')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe ".toggleLineCommentsForBufferRows(start, end)", ->
it "comments/uncomments lines in the given range", ->
Expand Down Expand Up @@ -222,8 +226,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-css')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe ".toggleLineCommentsForBufferRows(start, end)", ->
it "comments/uncomments lines in the given range", ->
Expand Down Expand Up @@ -274,8 +280,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-css')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe "when commenting lines", ->
it "only uses the `commentEnd` pattern if it comes from the same grammar as the `commentStart`", ->
Expand All @@ -294,8 +302,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-xml')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe "when uncommenting lines", ->
it "removes the leading whitespace from the comment end pattern match", ->
Expand All @@ -313,8 +323,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-javascript')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

it "maintains cursor buffer position when a folding/unfolding", ->
editor.setCursorBufferPosition([5, 5])
Expand Down Expand Up @@ -403,8 +415,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-javascript')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe ".unfoldAll()", ->
it "unfolds every folded line", ->
Expand Down Expand Up @@ -481,8 +495,10 @@ describe "LanguageMode", ->
atom.packages.activatePackage('language-css')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

describe "suggestedIndentForBufferRow", ->
it "does not return negative values (regression)", ->
Expand Down
79 changes: 66 additions & 13 deletions spec/package-manager-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ describe "PackageManager", ->
spyOn(atom.packages, 'loadAvailablePackage')

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()

it "sets hasLoadedInitialPackages", ->
expect(atom.packages.hasLoadedInitialPackages()).toBe false
Expand Down Expand Up @@ -172,8 +174,10 @@ describe "PackageManager", ->
model2 = {worksWithViewProvider2: true}

afterEach ->
atom.packages.deactivatePackage('package-with-view-providers')
atom.packages.unloadPackage('package-with-view-providers')
waitsForPromise ->
atom.packages.deactivatePackage('package-with-view-providers')
runs ->
atom.packages.unloadPackage('package-with-view-providers')

it "does not load the view providers immediately", ->
pack = atom.packages.loadPackage("package-with-view-providers")
Expand Down Expand Up @@ -641,7 +645,11 @@ describe "PackageManager", ->

runs ->
expect(mainModule.activate.callCount).toBe 1

waitsForPromise ->
atom.packages.deactivatePackage('package-with-activation-hooks')

runs ->
promise = atom.packages.activatePackage('package-with-activation-hooks')
atom.packages.triggerActivationHook('language-fictitious:grammar-used')
atom.packages.triggerDeferredActivationHooks()
Expand Down Expand Up @@ -704,7 +712,9 @@ describe "PackageManager", ->
expect(pack.mainModule.someNumber).not.toBe 77
pack.mainModule.someNumber = 77
atom.packages.serializePackage("package-with-serialization")
waitsForPromise ->
atom.packages.deactivatePackage("package-with-serialization")
runs ->
spyOn(pack.mainModule, 'activate').andCallThrough()
waitsForPromise ->
atom.packages.activatePackage("package-with-serialization")
Expand Down Expand Up @@ -872,6 +882,7 @@ describe "PackageManager", ->
expect(events.length).toBe(1)
expect(events[0].type).toBe("user-command")

waitsForPromise ->
atom.packages.deactivatePackage("package-with-keymaps")

waitsForPromise ->
Expand Down Expand Up @@ -1041,12 +1052,15 @@ describe "PackageManager", ->
consumerModule.consumeFirstServiceV4.reset()
consumerModule.consumeSecondService.reset()

waitsForPromise ->
atom.packages.deactivatePackage("package-with-provided-services")

runs ->
expect(firstServiceV3Disposed).toBe true
expect(firstServiceV4Disposed).toBe true
expect(secondServiceDisposed).toBe true

waitsForPromise ->
atom.packages.deactivatePackage("package-with-consumed-services")

waitsForPromise ->
Expand Down Expand Up @@ -1112,8 +1126,11 @@ describe "PackageManager", ->
runs ->
spyOn(pack1.mainModule, 'deactivate')
spyOn(pack2.mainModule, 'serialize')

waitsForPromise ->
atom.packages.deactivatePackages()

runs ->
expect(pack1.mainModule.deactivate).toHaveBeenCalled()
expect(pack2.mainModule.serialize).not.toHaveBeenCalled()

Expand All @@ -1131,7 +1148,10 @@ describe "PackageManager", ->
expect(atom.packages.isPackageActive("package-with-deactivate")).toBeTruthy()
spyOn(pack.mainModule, 'deactivate').andCallThrough()

waitsForPromise ->
atom.packages.deactivatePackage("package-with-deactivate")

runs ->
expect(pack.mainModule.deactivate).toHaveBeenCalled()
expect(atom.packages.isPackageActive("package-with-module")).toBeFalsy()

Expand All @@ -1145,44 +1165,60 @@ describe "PackageManager", ->
expect(atom.packages.isPackageActive("package-that-throws-on-activate")).toBeTruthy()
spyOn(badPack.mainModule, 'deactivate').andCallThrough()

waitsForPromise ->
atom.packages.deactivatePackage("package-that-throws-on-activate")

runs ->
expect(badPack.mainModule.deactivate).not.toHaveBeenCalled()
expect(atom.packages.isPackageActive("package-that-throws-on-activate")).toBeFalsy()

it "absorbs exceptions that are thrown by the package module's deactivate method", ->
spyOn(console, 'error')
thrownError = null

waitsForPromise ->
atom.packages.activatePackage("package-that-throws-on-deactivate")

waitsForPromise ->
try
atom.packages.deactivatePackage("package-that-throws-on-deactivate")
catch error
thrownError = error

runs ->
expect(-> atom.packages.deactivatePackage("package-that-throws-on-deactivate")).not.toThrow()
expect(thrownError).toBeNull()
expect(console.error).toHaveBeenCalled()

it "removes the package's grammars", ->
waitsForPromise ->
atom.packages.activatePackage('package-with-grammars')

runs ->
waitsForPromise ->
atom.packages.deactivatePackage('package-with-grammars')

runs ->
expect(atom.grammars.selectGrammar('a.alot').name).toBe 'Null Grammar'
expect(atom.grammars.selectGrammar('a.alittle').name).toBe 'Null Grammar'

it "removes the package's keymaps", ->
waitsForPromise ->
atom.packages.activatePackage('package-with-keymaps')

runs ->
waitsForPromise ->
atom.packages.deactivatePackage('package-with-keymaps')

runs ->
expect(atom.keymaps.findKeyBindings(keystrokes: 'ctrl-z', target: createTestElement('test-1'))).toHaveLength 0
expect(atom.keymaps.findKeyBindings(keystrokes: 'ctrl-z', target: createTestElement('test-2'))).toHaveLength 0

it "removes the package's stylesheets", ->
waitsForPromise ->
atom.packages.activatePackage('package-with-styles')

runs ->
waitsForPromise ->
atom.packages.deactivatePackage('package-with-styles')

runs ->
one = require.resolve("./fixtures/packages/package-with-style-sheets-manifest/styles/1.css")
two = require.resolve("./fixtures/packages/package-with-style-sheets-manifest/styles/2.less")
three = require.resolve("./fixtures/packages/package-with-style-sheets-manifest/styles/3.css")
Expand All @@ -1196,17 +1232,26 @@ describe "PackageManager", ->

runs ->
expect(atom.config.get 'editor.increaseIndentPattern', scope: ['.source.omg']).toBe '^a'

waitsForPromise ->
atom.packages.deactivatePackage("package-with-settings")

runs ->
expect(atom.config.get 'editor.increaseIndentPattern', scope: ['.source.omg']).toBeUndefined()

it "invokes ::onDidDeactivatePackage listeners with the deactivated package", ->
deactivatedPackage = null

waitsForPromise ->
atom.packages.activatePackage("package-with-main")

runs ->
deactivatedPackage = null
atom.packages.onDidDeactivatePackage (pack) -> deactivatedPackage = pack

waitsForPromise ->
atom.packages.deactivatePackage("package-with-main")

runs ->
expect(deactivatedPackage.name).toBe "package-with-main"

describe "::activate()", ->
Expand All @@ -1220,10 +1265,11 @@ describe "PackageManager", ->
expect(loadedPackages.length).toBeGreaterThan 0

afterEach ->
atom.packages.deactivatePackages()
atom.packages.unloadPackages()

jasmine.restoreDeprecationsSnapshot()
waitsForPromise ->
atom.packages.deactivatePackages()
runs ->
atom.packages.unloadPackages()
jasmine.restoreDeprecationsSnapshot()

it "sets hasActivatedInitialPackages", ->
spyOn(atom.styles, 'getUserStyleSheetPath').andReturn(null)
Expand Down Expand Up @@ -1286,6 +1332,9 @@ describe "PackageManager", ->

it "disables an enabled package", ->
packageName = 'package-with-main'
pack = null
activatedPackages = null

waitsForPromise ->
atom.packages.activatePackage(packageName)

Expand All @@ -1295,7 +1344,11 @@ describe "PackageManager", ->

pack = atom.packages.disablePackage(packageName)

waitsFor ->
activatedPackages = atom.packages.getActivePackages()
activatedPackages.length is 0

runs ->
expect(activatedPackages).not.toContain(pack)
expect(atom.config.get('core.disabledPackages')).toContain packageName

Expand Down
8 changes: 5 additions & 3 deletions spec/theme-manager-spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ describe "atom.themes", ->
spyOn(console, 'warn')

afterEach ->
atom.themes.deactivateThemes()
try
temp.cleanupSync()
waitsForPromise ->
atom.themes.deactivateThemes()
runs ->
try
temp.cleanupSync()

describe "theme getters and setters", ->
beforeEach ->
Expand Down
2 changes: 1 addition & 1 deletion src/atom-environment.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ class AtomEnvironment extends Model

@contextMenu.clear()

@packages.reset().then ->
@packages.reset().then =>
@workspace.reset(@packages)
@registerDefaultOpeners()
@project.reset(@packages)
Expand Down
3 changes: 1 addition & 2 deletions src/theme-manager.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -287,8 +287,7 @@ class ThemeManager
deactivateThemes: ->
@removeActiveThemeClasses()
@unwatchUserStylesheet()
@packageManager.deactivatePackage(pack.name) for pack in @getActiveThemes()
null
Promise.all(@packageManager.deactivatePackage(pack.name) for pack in @getActiveThemes())

isInitialLoadComplete: -> @initialLoadComplete

Expand Down

0 comments on commit 0a2ff53

Please sign in to comment.