visionmedia-jspec 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.rdoc +10 -0
- data/Manifest +7 -6
- data/README.rdoc +34 -0
- data/bin/jspec +72 -9
- data/jspec.gemspec +4 -4
- data/lib/jspec.js +3 -3
- data/lib/jspec.shell.js +36 -0
- data/spec/{modules.js → helpers.js} +29 -5
- data/spec/spec.dom.html +2 -2
- data/spec/spec.jquery.js +4 -1
- data/spec/spec.js +89 -50
- data/spec/spec.rhino.js +1 -1
- data/spec/spec.server.html +1 -1
- data/spec/spec.utils.js +4 -1
- metadata +11 -9
data/History.rdoc
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
|
2
|
+
=== 2.11.0 / 2009-09-04
|
3
|
+
|
4
|
+
* Added --symlink switch (links the current version of JSpec to ./spec/lib) [#4]
|
5
|
+
* Added --freeze switch (copies the current version of JSpec to ./spec/lib) [#4]
|
6
|
+
|
7
|
+
=== 2.10.1 / 2009-09-02
|
8
|
+
|
9
|
+
* Added `jspec shell` sub command (interactive Rhino shell through JSpec)
|
10
|
+
* Added jspec.shell.js
|
11
|
+
|
2
12
|
=== 2.10.0 / 2009-08-27
|
3
13
|
|
4
14
|
* Added Async support via mock timers (lib/jspec.timers.js) [#19]
|
data/Manifest
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
bin/jspec
|
2
1
|
History.rdoc
|
2
|
+
Manifest
|
3
|
+
README.rdoc
|
4
|
+
Rakefile
|
5
|
+
bin/jspec
|
3
6
|
jspec.gemspec
|
4
7
|
lib/images/bg.png
|
5
8
|
lib/images/hr.png
|
@@ -10,11 +13,9 @@ lib/images/vr.png
|
|
10
13
|
lib/jspec.css
|
11
14
|
lib/jspec.jquery.js
|
12
15
|
lib/jspec.js
|
16
|
+
lib/jspec.shell.js
|
13
17
|
lib/jspec.timers.js
|
14
18
|
lib/jspec.xhr.js
|
15
|
-
Manifest
|
16
|
-
Rakefile
|
17
|
-
README.rdoc
|
18
19
|
server/browsers.rb
|
19
20
|
server/helpers.rb
|
20
21
|
server/routes.rb
|
@@ -24,7 +25,7 @@ spec/env.js
|
|
24
25
|
spec/fixtures/test.html
|
25
26
|
spec/fixtures/test.json
|
26
27
|
spec/fixtures/test.xml
|
27
|
-
spec/
|
28
|
+
spec/helpers.js
|
28
29
|
spec/server.rb
|
29
30
|
spec/spec.dom.html
|
30
31
|
spec/spec.fixtures.js
|
@@ -42,8 +43,8 @@ spec/spec.shared-behaviors.js
|
|
42
43
|
spec/spec.utils.js
|
43
44
|
spec/spec.xhr.js
|
44
45
|
templates/default/History.rdoc
|
45
|
-
templates/default/lib/yourlib.core.js
|
46
46
|
templates/default/README.rdoc
|
47
|
+
templates/default/lib/yourlib.core.js
|
47
48
|
templates/default/spec/server.rb
|
48
49
|
templates/default/spec/spec.core.js
|
49
50
|
templates/default/spec/spec.dom.html
|
data/README.rdoc
CHANGED
@@ -33,6 +33,7 @@ and much more.
|
|
33
33
|
* Method Stubbing
|
34
34
|
* Shared behaviors
|
35
35
|
* Profiling
|
36
|
+
* Interactive Shell
|
36
37
|
* Ruby on Rails Integration
|
37
38
|
* Tiny (15 kb compressed, 1300-ish LOC)
|
38
39
|
|
@@ -49,6 +50,13 @@ provides the `jspec` executable. To install execute:
|
|
49
50
|
At which point you may:
|
50
51
|
$ jspec init myproject
|
51
52
|
|
53
|
+
By default, the command above will use absolute path for all JSpec library files.
|
54
|
+
This behavior can be a problem when you're working across different computers or
|
55
|
+
operating systems. You can freeze the library or symlink it.
|
56
|
+
|
57
|
+
$ jspec init myproject --freeze
|
58
|
+
$ jspec init myproject --symlink
|
59
|
+
|
52
60
|
JSpec scripts should NOT be referenced via the <script> tag, they should be
|
53
61
|
loaded using the exec method (unless you are using the grammar-less alternative).
|
54
62
|
Below is an example:
|
@@ -700,6 +708,20 @@ to reply, where as $.get('/status/404', function(){}) will respond
|
|
700
708
|
with an 404 status code. Add additional Sinatra routes to the jspec.rb
|
701
709
|
file to add your own functionality.
|
702
710
|
|
711
|
+
== Interactive Shell
|
712
|
+
|
713
|
+
JSpec provides an interactive shell through Rhino, utilize with:
|
714
|
+
|
715
|
+
$ jspec shell
|
716
|
+
|
717
|
+
Or to specify additional files to load:
|
718
|
+
|
719
|
+
$ jspec shell lib/*.js
|
720
|
+
|
721
|
+
Or view additional shell help
|
722
|
+
|
723
|
+
$ jspec help shell
|
724
|
+
|
703
725
|
== Ruby on Rails
|
704
726
|
|
705
727
|
No additional gems are required for JSpec to work with rails, although
|
@@ -722,6 +744,17 @@ Or run via the terminal using Rhino:
|
|
722
744
|
|
723
745
|
$ jspec run --rhino
|
724
746
|
|
747
|
+
== Support Browsers
|
748
|
+
|
749
|
+
Browsers below are supported and can be found in server/browsers.rb, however
|
750
|
+
your spec/server.rb file may support additional browsers.
|
751
|
+
|
752
|
+
* Safari
|
753
|
+
* Chrome
|
754
|
+
* Firefox
|
755
|
+
* Opera
|
756
|
+
* Internet Explorer
|
757
|
+
|
725
758
|
== Known Issues
|
726
759
|
|
727
760
|
* Tabs may cause a parse error. To prevent this use 'soft tabs' (setting in your IDE/Editor)
|
@@ -762,6 +795,7 @@ JSpec more enjoyable, and bug free ;)
|
|
762
795
|
* mpd@jesters-court.ne
|
763
796
|
* kevin.gisi@gmail.com
|
764
797
|
* enno84@gmx.net
|
798
|
+
* fnando
|
765
799
|
|
766
800
|
== License
|
767
801
|
|
data/bin/jspec
CHANGED
@@ -12,7 +12,7 @@ require 'server/server'
|
|
12
12
|
RHINO = 'java org.mozilla.javascript.tools.shell.Main'
|
13
13
|
|
14
14
|
program :name, 'JSpec'
|
15
|
-
program :version, '2.
|
15
|
+
program :version, '2.11.0'
|
16
16
|
program :description, 'JavaScript BDD Testing Framework'
|
17
17
|
default_command :bind
|
18
18
|
|
@@ -21,17 +21,47 @@ command :init do |c|
|
|
21
21
|
c.summary = 'Initialize a JSpec project template'
|
22
22
|
c.description = 'Initialize a JSpec project template. Defaults to the current directory
|
23
23
|
when [dest] is not specified. The template includes several files for
|
24
|
-
running via Rhino, DOM, and the JSpec Rack server.
|
24
|
+
running via Rhino, DOM, and the JSpec Rack server.
|
25
|
+
|
26
|
+
Additional switches --freeze, and --symlink are available in order
|
27
|
+
to preserve the version of JSpec at the time of initialization. Otherwise
|
28
|
+
incompatibilities from later versions may prevent your suite from
|
29
|
+
running properly.'
|
30
|
+
c.option '-R', '--rails', 'Initialize rails template from rails root directory'
|
31
|
+
c.option '-f', '--freeze', 'Copy the JSpec library'
|
32
|
+
c.option '-s', '--symlink', 'Symlink the JSpec library instead of copying it'
|
25
33
|
c.example 'Create a directory foo, initialized with a jspec template', 'jspec init foo'
|
26
|
-
c.option '-R', '--rails', 'Initialize rails template'
|
27
34
|
c.when_called do |args, options|
|
28
35
|
dest = args.shift || '.'
|
29
36
|
if options.rails
|
30
|
-
initialize_rails_at dest
|
37
|
+
initialize_rails_at dest, options
|
31
38
|
else
|
32
|
-
initialize_at dest
|
39
|
+
initialize_at dest, options
|
40
|
+
end
|
41
|
+
say "Template initialized at `#{dest}'"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
command :shell do |c|
|
46
|
+
c.syntax = 'jspec shell [path ...]'
|
47
|
+
c.summary = 'JSpec interactive shell'
|
48
|
+
c.description = 'Launch interactive shell with jspec.js, jspec.shell.js,
|
49
|
+
and any [path]s given. Simply type "quit" or "exit" to
|
50
|
+
terminate the shell.'
|
51
|
+
c.example 'Run shell', 'jspec shell'
|
52
|
+
c.example 'Run shell with glob of files', 'jspec shell lib/*.js'
|
53
|
+
c.example 'Run shell with list of files', 'jspec shell lib/foo.js lib/bar.js'
|
54
|
+
c.when_called do |args, options|
|
55
|
+
paths = ['jspec.js', 'jspec.shell.js'] | args
|
56
|
+
paths.map! do |path|
|
57
|
+
if path.include? 'jspec'
|
58
|
+
"-f #{JSPEC_ROOT}/lib/#{path}"
|
59
|
+
else
|
60
|
+
"-f #{path}"
|
61
|
+
end
|
33
62
|
end
|
34
|
-
say "
|
63
|
+
say "JSpec #{program(:version)}"
|
64
|
+
`#{RHINO} #{paths.join(' ')} -f -`
|
35
65
|
end
|
36
66
|
end
|
37
67
|
|
@@ -126,22 +156,26 @@ alias_command :bind, :run, '--bind'
|
|
126
156
|
##
|
127
157
|
# Initialize template at _dest_.
|
128
158
|
|
129
|
-
def initialize_at dest
|
159
|
+
def initialize_at dest, options
|
130
160
|
unless Dir[dest + '/*'].empty?
|
131
161
|
abort unless agree "'#{dest}' is not empty; continue? "
|
132
162
|
end
|
163
|
+
|
133
164
|
copy_template_to 'default', dest
|
165
|
+
setup_lib_dir dest, options
|
134
166
|
replace_root_in dest, 'spec/spec.dom.html', 'spec/spec.rhino.js'
|
135
167
|
end
|
136
168
|
|
137
169
|
##
|
138
170
|
# Initialize rails template at _dest_.
|
139
171
|
|
140
|
-
def initialize_rails_at dest
|
172
|
+
def initialize_rails_at dest, options
|
141
173
|
unless looks_like_rails_root?(dest)
|
142
174
|
abort unless agree "'#{dest}' does not look like root of a rails project; continue? "
|
143
175
|
end
|
176
|
+
|
144
177
|
copy_template_to 'rails', "#{dest}/jspec"
|
178
|
+
setup_lib_dir "#{dest}/jspec", options
|
145
179
|
replace_root_in "#{dest}/jspec", 'spec.dom.html', 'spec.rhino.js'
|
146
180
|
end
|
147
181
|
|
@@ -214,9 +248,17 @@ end
|
|
214
248
|
# Replace JSPEC_ROOT placeholder in _paths_ relative to _dest_.
|
215
249
|
|
216
250
|
def replace_root_in dest, *paths
|
251
|
+
if rails? && File.exist?("#{dest}/jspec/lib")
|
252
|
+
root = "."
|
253
|
+
elsif File.exist?("#{dest}/spec/lib")
|
254
|
+
root = "."
|
255
|
+
else
|
256
|
+
root = JSPEC_ROOT
|
257
|
+
end
|
258
|
+
|
217
259
|
paths.each do |path|
|
218
260
|
path = File.join dest, path
|
219
|
-
contents = File.read(path).gsub 'JSPEC_ROOT',
|
261
|
+
contents = File.read(path).gsub 'JSPEC_ROOT', root
|
220
262
|
File.open(path, 'w') { |file| file.write contents }
|
221
263
|
end
|
222
264
|
end
|
@@ -240,3 +282,24 @@ end
|
|
240
282
|
def looks_like_rails_root? path = '.'
|
241
283
|
File.directory? "#{path}/vendor"
|
242
284
|
end
|
285
|
+
|
286
|
+
##
|
287
|
+
# Copy or symlink library to the specified path.
|
288
|
+
|
289
|
+
def setup_lib_dir dest, options
|
290
|
+
return unless options.symlink || options.freeze
|
291
|
+
|
292
|
+
if rails?
|
293
|
+
dest = File.join dest, "lib"
|
294
|
+
else
|
295
|
+
dest = File.join dest, "spec", "lib"
|
296
|
+
end
|
297
|
+
|
298
|
+
from = File.join JSPEC_ROOT, "lib"
|
299
|
+
|
300
|
+
if options.symlink
|
301
|
+
FileUtils.symlink from, dest, :force => true
|
302
|
+
else
|
303
|
+
FileUtils.cp_r from, dest
|
304
|
+
end
|
305
|
+
end
|
data/jspec.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{jspec}
|
5
|
-
s.version = "2.
|
5
|
+
s.version = "2.11.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["TJ Holowaychuk"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-09-04}
|
10
10
|
s.default_executable = %q{jspec}
|
11
11
|
s.description = %q{JavaScript BDD Testing Framework}
|
12
12
|
s.email = %q{tj@vision-media.ca}
|
13
13
|
s.executables = ["jspec"]
|
14
|
-
s.extra_rdoc_files = ["bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.
|
15
|
-
s.files = ["
|
14
|
+
s.extra_rdoc_files = ["README.rdoc", "bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.shell.js", "lib/jspec.timers.js", "lib/jspec.xhr.js"]
|
15
|
+
s.files = ["History.rdoc", "Manifest", "README.rdoc", "Rakefile", "bin/jspec", "jspec.gemspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.shell.js", "lib/jspec.timers.js", "lib/jspec.xhr.js", "server/browsers.rb", "server/helpers.rb", "server/routes.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/fixtures/test.html", "spec/fixtures/test.json", "spec/fixtures/test.xml", "spec/helpers.js", "spec/server.rb", "spec/spec.dom.html", "spec/spec.fixtures.js", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.js", "spec/spec.jquery.xhr.js", "spec/spec.js", "spec/spec.matchers.js", "spec/spec.modules.js", "spec/spec.node.js", "spec/spec.rhino.js", "spec/spec.server.html", "spec/spec.shared-behaviors.js", "spec/spec.utils.js", "spec/spec.xhr.js", "templates/default/History.rdoc", "templates/default/README.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/spec/server.rb", "templates/default/spec/spec.core.js", "templates/default/spec/spec.dom.html", "templates/default/spec/spec.rhino.js", "templates/default/spec/spec.server.html", "templates/rails/server.rb", "templates/rails/spec.application.js", "templates/rails/spec.dom.html", "templates/rails/spec.rhino.js", "templates/rails/spec.server.html"]
|
16
16
|
s.homepage = %q{http://visionmedia.github.com/jspec}
|
17
17
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Jspec", "--main", "README.rdoc"]
|
18
18
|
s.require_paths = ["lib"]
|
data/lib/jspec.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
JSpec = {
|
7
7
|
|
8
|
-
version : '2.
|
8
|
+
version : '2.11.0',
|
9
9
|
cache : {},
|
10
10
|
suites : [],
|
11
11
|
modules : [],
|
@@ -501,14 +501,14 @@
|
|
501
501
|
// Add passing assertion
|
502
502
|
|
503
503
|
pass : function(message) {
|
504
|
-
this.assertions.push({ passed
|
504
|
+
this.assertions.push({ passed: true, message: message })
|
505
505
|
++JSpec.stats.passes
|
506
506
|
},
|
507
507
|
|
508
508
|
// Add failing assertion
|
509
509
|
|
510
510
|
fail : function(message) {
|
511
|
-
this.assertions.push({ passed
|
511
|
+
this.assertions.push({ passed: false, message: message })
|
512
512
|
++JSpec.stats.failures
|
513
513
|
},
|
514
514
|
|
data/lib/jspec.shell.js
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
// JSpec - Shell - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)
|
3
|
+
|
4
|
+
;(function(){
|
5
|
+
|
6
|
+
var _quit = quit
|
7
|
+
|
8
|
+
Shell = {
|
9
|
+
|
10
|
+
// --- Global
|
11
|
+
|
12
|
+
main: this,
|
13
|
+
|
14
|
+
// --- Commands
|
15
|
+
|
16
|
+
commands: {
|
17
|
+
quit: ['Terminate the shell', function(){ _quit() }],
|
18
|
+
exit: ['Terminate the shell', function(){ _quit() }]
|
19
|
+
},
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Start the interactive shell.
|
23
|
+
*
|
24
|
+
* @api public
|
25
|
+
*/
|
26
|
+
|
27
|
+
start : function() {
|
28
|
+
for (var name in this.commands)
|
29
|
+
if (this.commands.hasOwnProperty(name))
|
30
|
+
this.main.__defineGetter__(name, this.commands[name][1])
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
Shell.start()
|
35
|
+
|
36
|
+
})()
|
@@ -1,6 +1,32 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
name
|
2
|
+
JSpec.include({
|
3
|
+
name: 'Helpers',
|
4
|
+
utilities : {
|
5
|
+
mock_it : function(body) {
|
6
|
+
var spec = new JSpec.Spec('mock', body)
|
7
|
+
var prev = JSpec.currentSpec
|
8
|
+
JSpec.runSpec(spec)
|
9
|
+
JSpec.currentSpec = prev
|
10
|
+
return spec
|
11
|
+
}
|
12
|
+
},
|
13
|
+
|
14
|
+
matchers : {
|
15
|
+
have_failure_message : function(spec, expected) {
|
16
|
+
return JSpec.any(spec.assertions, function(assertion){
|
17
|
+
if (assertion.passed) return
|
18
|
+
switch (expected.constructor) {
|
19
|
+
case String: return assertion.message == expected
|
20
|
+
case RegExp: return expected.test(assertion.message)
|
21
|
+
default : return false
|
22
|
+
}
|
23
|
+
})
|
24
|
+
}
|
25
|
+
}
|
26
|
+
})
|
27
|
+
|
28
|
+
JSpec.include({
|
29
|
+
name: 'ExampleModule',
|
4
30
|
utilities : {
|
5
31
|
doFoo : function(){ return 'foo' },
|
6
32
|
doBar : function(){ return 'bar' }
|
@@ -33,9 +59,7 @@ ExampleModule = {
|
|
33
59
|
}
|
34
60
|
}
|
35
61
|
}
|
36
|
-
}
|
37
|
-
|
38
|
-
JSpec.include(ExampleModule)
|
62
|
+
})
|
39
63
|
|
40
64
|
JSpec.include({
|
41
65
|
name : 'EmptyModule'
|
data/spec/spec.dom.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<script src="../lib/jspec.jquery.js"></script>
|
7
7
|
<script src="../lib/jspec.xhr.js"></script>
|
8
8
|
<script src="../lib/jspec.timers.js"></script>
|
9
|
-
<script src="
|
9
|
+
<script src="helpers.js"></script>
|
10
10
|
<script src="spec.grammar-less.js"></script>
|
11
11
|
<script>
|
12
12
|
function runSuites() {
|
@@ -21,7 +21,7 @@
|
|
21
21
|
.exec('spec.modules.js')
|
22
22
|
.exec('spec.xhr.js')
|
23
23
|
.exec('spec.jquery.xhr.js')
|
24
|
-
.run()
|
24
|
+
.run({ failuresOnly: true })
|
25
25
|
.report()
|
26
26
|
}
|
27
27
|
</script>
|
data/spec/spec.jquery.js
CHANGED
@@ -49,7 +49,10 @@ describe 'jQuery'
|
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'should fail with pretty print of element'
|
52
|
-
|
52
|
+
spec = mock_it(function() {
|
53
|
+
elem.should.not.have_tag 'label'
|
54
|
+
})
|
55
|
+
spec.should.have_failure_message(/<label>\s*<em>Save?/i)
|
53
56
|
end
|
54
57
|
|
55
58
|
describe 'have_tag / have_one'
|
data/spec/spec.js
CHANGED
@@ -1,107 +1,146 @@
|
|
1
1
|
|
2
|
-
describe '
|
2
|
+
describe 'Failing specs'
|
3
3
|
|
4
4
|
it 'should fail'
|
5
|
-
|
5
|
+
spec = mock_it(function(){
|
6
|
+
'test'.should.not.eql 'test'
|
7
|
+
})
|
8
|
+
spec.should.have_failure_message("expected 'test' to not eql 'test'")
|
6
9
|
end
|
7
10
|
|
8
11
|
it 'should fail with one faulty assertion'
|
9
|
-
|
10
|
-
|
12
|
+
spec = mock_it(function() {
|
13
|
+
'test'.should.equal 'test'
|
14
|
+
'test'.should.equal 'foo'
|
15
|
+
})
|
16
|
+
spec.should.have_failure_message("expected 'test' to be 'foo'")
|
11
17
|
end
|
12
18
|
|
13
19
|
it 'should fail and print array with square braces'
|
14
|
-
|
20
|
+
spec = mock_it(function() {
|
21
|
+
[1,2].should.equal [1,3]
|
22
|
+
})
|
23
|
+
spec.should.have_failure_message("expected [ 1, 2 ] to be [ 1, 3 ]")
|
15
24
|
end
|
16
25
|
|
17
26
|
it 'should fail and print nested array'
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
elem = document.createElement('a')
|
23
|
-
elem.setAttribute('href', 'http://vision-media.ca')
|
24
|
-
elem.should.not.eql elem
|
27
|
+
spec = mock_it(function() {
|
28
|
+
[1, ['foo']].should.equal [1, ['bar', ['whatever', 1.0, { foo : 'bar', bar : { 1 : 2 } }]]]
|
29
|
+
})
|
30
|
+
spec.should.have_failure_message(/^expected \[\s*1,\s*\[\s*'foo'/)
|
25
31
|
end
|
26
32
|
|
27
33
|
it 'should fail with selector for jQuery objects'
|
28
|
-
|
29
|
-
|
34
|
+
spec = mock_it(function() {
|
35
|
+
elem = { jquery : '1.3.1', selector : '.foobar' }
|
36
|
+
elem.should.eql 'foo'
|
37
|
+
})
|
38
|
+
spec.should.have_failure_message("expected selector '.foobar' to eql 'foo'")
|
30
39
|
end
|
31
40
|
|
32
|
-
it 'should fail with
|
33
|
-
|
41
|
+
it 'should fail with negated message'
|
42
|
+
spec = mock_it(function(){
|
43
|
+
'1'.should.not.be_true
|
44
|
+
})
|
45
|
+
spec.should.have_failure_message(/expected '1' to not be true/)
|
34
46
|
end
|
35
47
|
|
36
48
|
it 'should fail with positive message'
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
-{ throw 'foo' }.should.not.throw_error
|
49
|
+
spec = mock_it(function() {
|
50
|
+
false.should.be_true
|
51
|
+
})
|
52
|
+
spec.should.have_failure_message(/expected false to be true/)
|
42
53
|
end
|
43
54
|
|
44
55
|
it 'should fail saying which error has been thrown'
|
45
|
-
|
56
|
+
spec = mock_it(function() {
|
57
|
+
-{ throw 'foo' }.should.throw_error 'bar'
|
58
|
+
})
|
59
|
+
spec.should.have_failure_message("expected exception of 'bar' to be thrown, but got 'foo'")
|
46
60
|
end
|
47
61
|
|
48
62
|
it 'should fail saying no error was thrown'
|
49
|
-
|
63
|
+
spec = mock_it(function() {
|
64
|
+
-{ }.should.throw_error 'foo'
|
65
|
+
})
|
66
|
+
spec.should.have_failure_message("expected exception of 'foo' to be thrown, but nothing was")
|
50
67
|
end
|
51
68
|
|
52
69
|
it 'should fail saying no error matching was thrown'
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
-{ throw 'foo' }.should.not.throw_error(/foo/)
|
70
|
+
spec = mock_it(function() {
|
71
|
+
-{ throw 'bar' }.should.throw_error(/foo/)
|
72
|
+
})
|
73
|
+
spec.should.have_failure_message("expected exception matching /foo/ to be thrown, but got 'bar'")
|
58
74
|
end
|
59
75
|
|
60
76
|
it 'should fail saying constructors'
|
61
|
-
|
77
|
+
spec = mock_it(function() {
|
78
|
+
-{ throw new TypeError('oh no') }.should.throw_error(Error)
|
79
|
+
})
|
80
|
+
spec.should.have_failure_message("expected Error to be thrown, but got TypeError: oh no")
|
62
81
|
end
|
63
82
|
|
64
83
|
it 'should fail saying multiple arg messages'
|
65
|
-
|
84
|
+
spec = mock_it(function() {
|
85
|
+
-{ throw new TypeError('oh no') }.should.throw_error(TypeError, /foo/)
|
86
|
+
})
|
87
|
+
spec.should.have_failure_message("expected TypeError and exception matching /foo/ to be thrown, but got TypeError: oh no")
|
66
88
|
end
|
67
89
|
|
68
90
|
it 'should fail with constructor name'
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
-{ 'foo' }.should.not.include 'foo'
|
91
|
+
spec = mock_it(function() {
|
92
|
+
function Foo(){}
|
93
|
+
function Bar(){}
|
94
|
+
Bar.prototype.toString = function(){ return 'Bar: oh no' }
|
95
|
+
-{ throw new Bar }.should.throw_error Foo
|
96
|
+
})
|
97
|
+
spec.should.have_failure_message("expected Foo to be thrown, but got Bar: oh no")
|
77
98
|
end
|
78
99
|
|
79
100
|
it 'should fail with constructor name'
|
80
|
-
|
81
|
-
|
82
|
-
|
101
|
+
spec = mock_it(function() {
|
102
|
+
function Foo(){ this.toString = function(){ return '<Foo>' }}
|
103
|
+
foo = new Foo
|
104
|
+
foo.should.not.be_an_instance_of Foo
|
105
|
+
})
|
106
|
+
spec.should.have_failure_message("expected <Foo> to not be an instance of Foo")
|
83
107
|
end
|
84
108
|
|
85
109
|
it 'should fail with message of first failure'
|
86
|
-
|
87
|
-
|
88
|
-
|
110
|
+
spec = mock_it(function() {
|
111
|
+
true.should.be_true
|
112
|
+
'bar'.should.match(/foo/gm)
|
113
|
+
'bar'.should.include 'foo'
|
114
|
+
})
|
115
|
+
spec.should.have_failure_message("expected 'bar' to match /foo/gm")
|
89
116
|
end
|
90
117
|
|
91
118
|
it 'should fail with list'
|
92
|
-
|
119
|
+
spec = mock_it(function() {
|
120
|
+
['foo', 'bar'].should.include 'foo', 'car'
|
121
|
+
})
|
122
|
+
spec.should.have_failure_message("expected [ 'foo', 'bar' ] to include 'foo', 'car'")
|
93
123
|
end
|
94
124
|
|
95
125
|
it 'should catch exceptions throw within specs'
|
96
|
-
|
126
|
+
spec = mock_it(function() {
|
127
|
+
throw new Error('Oh noes!')
|
128
|
+
})
|
129
|
+
spec.should.have_failure_message(/Error: Oh noes!/)
|
97
130
|
end
|
98
131
|
|
99
|
-
it 'should catch
|
100
|
-
|
132
|
+
it 'should catch exceptions without constructors'
|
133
|
+
spec = mock_it(function() {
|
134
|
+
throw 'oh noes'
|
135
|
+
})
|
136
|
+
spec.should.have_failure_message(/oh noes/)
|
101
137
|
end
|
102
138
|
|
103
|
-
it 'should catch
|
104
|
-
|
139
|
+
it 'should catch indirect exceptions'
|
140
|
+
spec = mock_it(function() {
|
141
|
+
iDoNotExist.neitherDoI()
|
142
|
+
})
|
143
|
+
spec.should.have_failure_message(/iDoNotExist/)
|
105
144
|
end
|
106
145
|
|
107
146
|
end
|
data/spec/spec.rhino.js
CHANGED
data/spec/spec.server.html
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<script src="/jspec/jspec.js"></script>
|
5
5
|
<script src="/jspec/jspec.jquery.js"></script>
|
6
6
|
<script src="/jspec/jspec.xhr.js"></script>
|
7
|
-
<script src="
|
7
|
+
<script src="helpers.js"></script>
|
8
8
|
<script src="spec.grammar-less.js"></script>
|
9
9
|
<script>
|
10
10
|
function runSuites() {
|
data/spec/spec.utils.js
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visionmedia-jspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TJ Holowaychuk
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-04 00:00:00 -07:00
|
13
13
|
default_executable: jspec
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -59,6 +59,7 @@ executables:
|
|
59
59
|
extensions: []
|
60
60
|
|
61
61
|
extra_rdoc_files:
|
62
|
+
- README.rdoc
|
62
63
|
- bin/jspec
|
63
64
|
- lib/images/bg.png
|
64
65
|
- lib/images/hr.png
|
@@ -69,12 +70,15 @@ extra_rdoc_files:
|
|
69
70
|
- lib/jspec.css
|
70
71
|
- lib/jspec.jquery.js
|
71
72
|
- lib/jspec.js
|
73
|
+
- lib/jspec.shell.js
|
72
74
|
- lib/jspec.timers.js
|
73
75
|
- lib/jspec.xhr.js
|
74
|
-
- README.rdoc
|
75
76
|
files:
|
76
|
-
- bin/jspec
|
77
77
|
- History.rdoc
|
78
|
+
- Manifest
|
79
|
+
- README.rdoc
|
80
|
+
- Rakefile
|
81
|
+
- bin/jspec
|
78
82
|
- jspec.gemspec
|
79
83
|
- lib/images/bg.png
|
80
84
|
- lib/images/hr.png
|
@@ -85,11 +89,9 @@ files:
|
|
85
89
|
- lib/jspec.css
|
86
90
|
- lib/jspec.jquery.js
|
87
91
|
- lib/jspec.js
|
92
|
+
- lib/jspec.shell.js
|
88
93
|
- lib/jspec.timers.js
|
89
94
|
- lib/jspec.xhr.js
|
90
|
-
- Manifest
|
91
|
-
- Rakefile
|
92
|
-
- README.rdoc
|
93
95
|
- server/browsers.rb
|
94
96
|
- server/helpers.rb
|
95
97
|
- server/routes.rb
|
@@ -99,7 +101,7 @@ files:
|
|
99
101
|
- spec/fixtures/test.html
|
100
102
|
- spec/fixtures/test.json
|
101
103
|
- spec/fixtures/test.xml
|
102
|
-
- spec/
|
104
|
+
- spec/helpers.js
|
103
105
|
- spec/server.rb
|
104
106
|
- spec/spec.dom.html
|
105
107
|
- spec/spec.fixtures.js
|
@@ -117,8 +119,8 @@ files:
|
|
117
119
|
- spec/spec.utils.js
|
118
120
|
- spec/spec.xhr.js
|
119
121
|
- templates/default/History.rdoc
|
120
|
-
- templates/default/lib/yourlib.core.js
|
121
122
|
- templates/default/README.rdoc
|
123
|
+
- templates/default/lib/yourlib.core.js
|
122
124
|
- templates/default/spec/server.rb
|
123
125
|
- templates/default/spec/spec.core.js
|
124
126
|
- templates/default/spec/spec.dom.html
|