visionmedia-jspec 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +6 -0
- data/Manifest +4 -0
- data/README.rdoc +25 -1
- data/bin/jspec +81 -22
- data/jspec.gemspec +3 -3
- data/lib/jspec.js +4 -1
- data/spec/spec.matchers.js +7 -0
- data/templates/rails/spec.application.js +8 -0
- data/templates/rails/spec.dom.html +20 -0
- data/templates/rails/spec.rhino.js +7 -0
- data/templates/rails/spec.server.html +15 -0
- metadata +6 -2
data/History.rdoc
CHANGED
data/Manifest
CHANGED
@@ -38,3 +38,7 @@ templates/default/spec/spec.core.js
|
|
38
38
|
templates/default/spec/spec.dom.html
|
39
39
|
templates/default/spec/spec.rhino.js
|
40
40
|
templates/default/spec/spec.server.html
|
41
|
+
templates/rails/spec.application.js
|
42
|
+
templates/rails/spec.dom.html
|
43
|
+
templates/rails/spec.rhino.js
|
44
|
+
templates/rails/spec.server.html
|
data/README.rdoc
CHANGED
@@ -31,7 +31,7 @@ and much more.
|
|
31
31
|
* Method Stubbing
|
32
32
|
* Shared behaviors
|
33
33
|
* Profiling
|
34
|
-
* Rails Integration
|
34
|
+
* Ruby on Rails Integration
|
35
35
|
* Tiny (15 kb compressed, 1300-ish LOC)
|
36
36
|
|
37
37
|
== Installation
|
@@ -143,6 +143,7 @@ JSpec.options.failuresOnly = true, and ?failuresOnly=1 will both work.
|
|
143
143
|
- be_type be type of x
|
144
144
|
- be_greater_than >
|
145
145
|
- be_less_than <
|
146
|
+
- be_undefined check if variable passed is undefined
|
146
147
|
- throw_error should throw an error, optionally supply the error string or regexp for message comparison
|
147
148
|
- have object should have n of property (person.should.have(2, 'pets'))
|
148
149
|
- have_at_least object should have at least n of property
|
@@ -559,6 +560,29 @@ Initialize project with:
|
|
559
560
|
Run with:
|
560
561
|
$ jspec run --server
|
561
562
|
|
563
|
+
|
564
|
+
== Ruby on Rails
|
565
|
+
|
566
|
+
No additional gems are required for JSpec to work with rails, although
|
567
|
+
http://github.com/bhauman/jspec-rails has been created by 'bhauman'. JSpec
|
568
|
+
supports Rails out of the box, simply execute:
|
569
|
+
|
570
|
+
$ jspec init --rails
|
571
|
+
|
572
|
+
Then while still in the root directory of your Rails project, run the following
|
573
|
+
command which will bind to, and refresh your browsers automatically when any changes
|
574
|
+
are made to ./public/javascripts/*.js or ./jspec/*.js
|
575
|
+
|
576
|
+
$ jspec
|
577
|
+
|
578
|
+
Or just like regular JSpec applications, run once:
|
579
|
+
|
580
|
+
$ jspec run
|
581
|
+
|
582
|
+
Or run via the terminal using Rhino:
|
583
|
+
|
584
|
+
$ jspec run --rhino
|
585
|
+
|
562
586
|
== Known Issues
|
563
587
|
|
564
588
|
* Tabs may cause a parse error. To prevent this use 'soft tabs' (setting in your IDE/Editor)
|
data/bin/jspec
CHANGED
@@ -11,7 +11,7 @@ require 'fileutils'
|
|
11
11
|
RHINO = 'java org.mozilla.javascript.tools.shell.Main'
|
12
12
|
|
13
13
|
program :name, 'JSpec'
|
14
|
-
program :version, '2.
|
14
|
+
program :version, '2.6.0'
|
15
15
|
program :description, 'JavaScript BDD Testing Framework'
|
16
16
|
default_command :bind
|
17
17
|
|
@@ -22,18 +22,13 @@ command :init do |c|
|
|
22
22
|
when [dest] is not specified. The template includes several files for
|
23
23
|
running via Rhino, DOM, and the JSpec Rack server.'
|
24
24
|
c.example 'Create a directory foo, initialized with a jspec template', 'jspec init foo'
|
25
|
+
c.option '-R', '--rails', 'Initialize rails template'
|
25
26
|
c.when_called do |args, options|
|
26
27
|
dest = args.shift || '.'
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
FileUtils.mkdir_p dest
|
32
|
-
FileUtils.cp_r template, dest
|
33
|
-
%w( spec/spec.dom.html spec/spec.rhino.js ).each do |path|
|
34
|
-
path = File.join dest, path
|
35
|
-
contents = File.read(path).gsub 'JSPEC_ROOT', JSPEC_ROOT
|
36
|
-
File.open(path, 'w') { |file| file.write contents }
|
28
|
+
if options.rails
|
29
|
+
initialize_rails_to dest
|
30
|
+
else
|
31
|
+
initialize_to dest
|
37
32
|
end
|
38
33
|
say "Template initialized at '#{dest}'"
|
39
34
|
end
|
@@ -46,13 +41,16 @@ command :update do |c|
|
|
46
41
|
the latest JSpec features. Execute from JSpec project root without [paths] to
|
47
42
|
update the default template spec files.'
|
48
43
|
c.when_called do |args, options|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
44
|
+
if args.empty?
|
45
|
+
if rails?
|
46
|
+
paths = 'jspec/spec.dom.html', 'jspec/spec.rhino.js'
|
47
|
+
else
|
48
|
+
paths = 'spec/spec.dom.html', 'spec/spec.rhino.js'
|
49
|
+
end
|
50
|
+
else
|
51
|
+
paths = args
|
55
52
|
end
|
53
|
+
update_version_in *paths
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
@@ -85,17 +83,23 @@ command :run do |c|
|
|
85
83
|
c.option '-S', '--server', 'Run specs using the JSpec server'
|
86
84
|
c.option '-s', '--server-only', 'Start JSpec server without running browsers'
|
87
85
|
c.when_called do |args, options|
|
88
|
-
|
86
|
+
|
87
|
+
# Rails
|
88
|
+
if rails?
|
89
|
+
options.default :browsers => %w( Safari ), :paths => ['public/javascripts/**/*.js', 'jspec/**/*.js']
|
90
|
+
else
|
91
|
+
options.default :browsers => %w( Safari ), :paths => ['lib/**/*.js', 'spec/**/*.js']
|
92
|
+
end
|
89
93
|
|
90
94
|
# Actions
|
91
95
|
if options.rhino
|
92
|
-
spec = args.shift || 'spec
|
96
|
+
spec = args.shift || path_to('spec.rhino.js')
|
93
97
|
action = lambda { rhino spec }
|
94
98
|
elsif options.server
|
95
|
-
spec = args.shift || 'spec
|
99
|
+
spec = args.shift || path_to('spec.server.html')
|
96
100
|
action = lambda { start_server options, spec }
|
97
101
|
else
|
98
|
-
spec = args.shift || 'spec
|
102
|
+
spec = args.shift || path_to('spec.dom.html')
|
99
103
|
action = Bind::Actions::RefreshBrowsers.new spec, *options.browsers
|
100
104
|
end
|
101
105
|
|
@@ -110,6 +114,35 @@ command :run do |c|
|
|
110
114
|
end
|
111
115
|
alias_command :bind, :run, '--bind'
|
112
116
|
|
117
|
+
def initialize_to dest
|
118
|
+
unless Dir[dest + '/*'].empty?
|
119
|
+
abort unless agree "'#{dest}' is not empty; continue? "
|
120
|
+
end
|
121
|
+
copy_template_to 'default', dest
|
122
|
+
replace_root_in dest, 'spec/spec.dom.html', 'spec/spec.rhino.js'
|
123
|
+
end
|
124
|
+
|
125
|
+
def initialize_rails_to dest
|
126
|
+
unless looks_like_rails_root?(dest)
|
127
|
+
abort unless agree "'#{dest}' does not look like root of a rails project; continue? "
|
128
|
+
end
|
129
|
+
copy_template_to 'rails', "#{dest}/jspec"
|
130
|
+
replace_root_in "#{dest}/jspec", 'spec.dom.html', 'spec.rhino.js'
|
131
|
+
end
|
132
|
+
|
133
|
+
def copy_template_to name, dest
|
134
|
+
FileUtils.mkdir_p dest
|
135
|
+
FileUtils.cp_r path_to_template(name), dest
|
136
|
+
end
|
137
|
+
|
138
|
+
def path_to_template name
|
139
|
+
File.join JSPEC_ROOT, 'templates', name, '.'
|
140
|
+
end
|
141
|
+
|
142
|
+
def path_to file
|
143
|
+
rails? ? "jspec/#{file}" : "spec/#{file}"
|
144
|
+
end
|
145
|
+
|
113
146
|
def rhino file
|
114
147
|
abort "#{file} not found" unless File.exists? file
|
115
148
|
system "#{RHINO} #{file}"
|
@@ -118,4 +151,30 @@ end
|
|
118
151
|
def start_server options, spec
|
119
152
|
require 'server/server'
|
120
153
|
JSpec::Server.start options, spec
|
121
|
-
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def rails?
|
157
|
+
File.directory? 'jspec'
|
158
|
+
end
|
159
|
+
|
160
|
+
def replace_root_in dest, *paths
|
161
|
+
paths.each do |path|
|
162
|
+
path = File.join dest, path
|
163
|
+
contents = File.read(path).gsub 'JSPEC_ROOT', JSPEC_ROOT
|
164
|
+
File.open(path, 'w') { |file| file.write contents }
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def update_version_in *paths
|
169
|
+
paths.each do |path|
|
170
|
+
next unless File.exists? path
|
171
|
+
contents = File.read(path).gsub /visionmedia-jspec-(\d+\.\d+\.\d+)/, "visionmedia-jspec-#{program(:version)}"
|
172
|
+
File.open(path, 'r+'){ |file| file.write contents }
|
173
|
+
say "Updated #{path}; #{$1} -> #{program(:version)}"
|
174
|
+
end
|
175
|
+
say "Finished updating JSpec"
|
176
|
+
end
|
177
|
+
|
178
|
+
def looks_like_rails_root? path = '.'
|
179
|
+
File.directory? "#{path}/vendor"
|
180
|
+
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.6.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-07-
|
9
|
+
s.date = %q{2009-07-09}
|
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
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", "README.rdoc"]
|
15
|
-
s.files = ["bin/jspec", "History.rdoc", "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", "Manifest", "Rakefile", "README.rdoc", "server/browsers.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/jquery-1.3.1.js", "spec/modules.js", "spec/spec.dom.html", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.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", "templates/default/History.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/README.rdoc", "templates/default/spec/spec.core.js", "templates/default/spec/spec.dom.html", "templates/default/spec/spec.rhino.js", "templates/default/spec/spec.server.html"]
|
15
|
+
s.files = ["bin/jspec", "History.rdoc", "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", "Manifest", "Rakefile", "README.rdoc", "server/browsers.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/jquery-1.3.1.js", "spec/modules.js", "spec/spec.dom.html", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.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", "templates/default/History.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/README.rdoc", "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/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.6.0',
|
9
9
|
suites : [],
|
10
10
|
modules : [],
|
11
11
|
allSuites : [],
|
@@ -1511,6 +1511,7 @@
|
|
1511
1511
|
be_null : "actual == null",
|
1512
1512
|
be_true : "actual == true",
|
1513
1513
|
be_false : "actual == false",
|
1514
|
+
be_undefined : "typeof actual == 'undefined'",
|
1514
1515
|
be_type : "typeof actual == expected",
|
1515
1516
|
match : "typeof actual == 'string' ? actual.match(expected) : false",
|
1516
1517
|
respond_to : "typeof actual[expected] == 'function'",
|
@@ -1623,5 +1624,7 @@
|
|
1623
1624
|
value === actual[property]
|
1624
1625
|
}
|
1625
1626
|
})
|
1627
|
+
|
1628
|
+
if ('exports' in main) exports.JSpec = JSpec
|
1626
1629
|
|
1627
1630
|
})()
|
data/spec/spec.matchers.js
CHANGED
@@ -82,6 +82,13 @@ describe 'Matchers'
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
describe 'be_undefined'
|
86
|
+
it 'should check if a var is defined'
|
87
|
+
var foo
|
88
|
+
foo.should.be_undefined
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
85
92
|
describe 'have_length'
|
86
93
|
it 'should compare the length of an object'
|
87
94
|
'foo'.should.have_length 3
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<link type="text/css" rel="stylesheet" href="JSPEC_ROOT/lib/jspec.css" />
|
4
|
+
<script src="JSPEC_ROOT/lib/jspec.js"></script>
|
5
|
+
<script src="../public/javascripts/application.js"></script>
|
6
|
+
<script>
|
7
|
+
function runSuites() {
|
8
|
+
JSpec
|
9
|
+
.exec('spec.application.js')
|
10
|
+
.run()
|
11
|
+
.report()
|
12
|
+
}
|
13
|
+
</script>
|
14
|
+
</head>
|
15
|
+
<body class="jspec" onLoad="runSuites();">
|
16
|
+
<div id="jspec-top"><h2 id="jspec-title">JSpec <em><script>document.write(JSpec.version)</script></em></h2></div>
|
17
|
+
<div id="jspec"></div>
|
18
|
+
<div id="jspec-bottom"></div>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<script src="jspec.js"></script>
|
4
|
+
<script>
|
5
|
+
function runSuites() {
|
6
|
+
JSpec
|
7
|
+
.exec('spec.application.js')
|
8
|
+
.run()
|
9
|
+
.reportToServer()
|
10
|
+
}
|
11
|
+
</script>
|
12
|
+
</head>
|
13
|
+
<body class="jspec" onLoad="runSuites();">
|
14
|
+
</body>
|
15
|
+
</html>
|
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.6.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-07-
|
12
|
+
date: 2009-07-09 00:00:00 -07:00
|
13
13
|
default_executable: jspec
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -91,6 +91,10 @@ files:
|
|
91
91
|
- templates/default/spec/spec.dom.html
|
92
92
|
- templates/default/spec/spec.rhino.js
|
93
93
|
- templates/default/spec/spec.server.html
|
94
|
+
- templates/rails/spec.application.js
|
95
|
+
- templates/rails/spec.dom.html
|
96
|
+
- templates/rails/spec.rhino.js
|
97
|
+
- templates/rails/spec.server.html
|
94
98
|
has_rdoc: false
|
95
99
|
homepage: http://visionmedia.github.com/jspec
|
96
100
|
post_install_message:
|