Merge pull request #18917 from rafeca/rewrite-jasmine-globals

Override global jasmine spec functions
This commit is contained in:
Rafael Oleza
2019-02-28 16:35:57 +01:00
committed by GitHub

View File

@@ -10,6 +10,16 @@ module.exports = ({logFile, headless, testPaths, buildAtomEnvironment}) ->
window[key] = value for key, value of require '../vendor/jasmine'
require 'jasmine-tagged'
# Rewrite global jasmine functions to have support for async tests.
# This way packages can create async specs without having to import these from the
# async-spec-helpers file.
global.it = asyncifyJasmineFn global.it, 1
global.fit = asyncifyJasmineFn global.fit, 1
global.ffit = asyncifyJasmineFn global.ffit, 1
global.fffit = asyncifyJasmineFn global.fffit, 1
global.beforeEach = asyncifyJasmineFn global.beforeEach, 0
global.afterEach = asyncifyJasmineFn global.afterEach, 0
# Allow document.title to be assigned in specs without screwing up spec window title
documentTitle = null
Object.defineProperty document, 'title',
@@ -59,6 +69,28 @@ module.exports = ({logFile, headless, testPaths, buildAtomEnvironment}) ->
jasmineEnv.execute()
promise
asyncifyJasmineFn = (fn, callbackPosition) ->
(args...) ->
if typeof args[callbackPosition] is 'function'
callback = args[callbackPosition]
args[callbackPosition] = (args...) ->
result = callback.apply this, args
if result instanceof Promise
waitsForPromise(-> result)
fn.apply this, args
waitsForPromise = (fn) ->
promise = fn()
global.waitsFor('spec promise to resolve', (done) ->
promise.then(done, (error) ->
jasmine.getEnv().currentSpec.fail error
done()
)
)
disableFocusMethods = ->
['fdescribe', 'ffdescribe', 'fffdescribe', 'fit', 'ffit', 'fffit'].forEach (methodName) ->
focusMethod = window[methodName]
@@ -124,4 +156,4 @@ buildTerminalReporter = (logFile, resolveWithExitCode) ->
new JasmineListReporter(options)
else
{TerminalReporter} = require 'jasmine-tagged'
new TerminalReporter(options)
new TerminalReporter(options)