Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80677 views
1
((jasmine) ->
2
3
# the window
4
root = @
5
6
# jasmines environment
7
env = jasmine.getEnv()
8
9
# features we want added, describe.only and it.only
10
describeOnly = (description, specDefinitions) ->
11
suite = new jasmine.Suite(@, description, null, @currentSuite)
12
suite.exclusive_ = 1
13
@exclusive_ = Math.max(@exclusive_, 1)
14
@describe_(suite, specDefinitions)
15
16
itOnly = (description, func) ->
17
spec = @it(description, func)
18
spec.exclusive_ = 2
19
@exclusive_ = 2
20
spec
21
22
env.exclusive_ = 0
23
24
env.describe = (description, specDefinitions) ->
25
suite = new jasmine.Suite(@, description, null, @currentSuite)
26
@describe_(suite, specDefinitions)
27
28
env.describe_ = (suite, specDefinitions) ->
29
parentSuite = @currentSuite
30
if parentSuite
31
parentSuite.add suite
32
else
33
@currentRunner_.add suite
34
@currentSuite = suite
35
declarationError = null
36
try
37
specDefinitions.call suite
38
catch e
39
declarationError = e
40
if declarationError
41
@it "encountered a declaration exception", ->
42
throw declarationError
43
44
@currentSuite = parentSuite
45
46
return suite
47
48
env.specFilter = (spec) ->
49
@exclusive_ <= spec.exclusive_
50
51
env.describe.only = ->
52
describeOnly.apply(env, arguments)
53
54
env.it.only = ->
55
itOnly.apply(env, arguments)
56
57
root.describe.only = (description, specDefinitions) ->
58
env.describe.only(description, specDefinitions)
59
60
root.it.only = (description, func) ->
61
env.it.only(description, func)
62
63
# aliases
64
65
root.iit = root.it.only
66
root.ddescribe = root.describe.only
67
68
# constructor duck punching, <3 coffeescript
69
70
class jasmine.Spec extends jasmine.Spec
71
constructor: (env, suite, description) ->
72
@exclusive_ = suite.exclusive_
73
super(env, suite, description)
74
75
class jasmine.Suite extends jasmine.Suite
76
constructor: (env, suite, specDefinitions, parentSuite) ->
77
@exclusive_ = parentSuite and parentSuite.exclusive_ or 0
78
super(env, suite, specDefinitions, parentSuite)
79
80
) jasmine
81
82