visionmedia-jspec 2.5.0 → 2.5.1
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 +5 -0
- data/Manifest +1 -0
- data/README.rdoc +13 -0
- data/bin/jspec +1 -1
- data/jspec.gemspec +3 -3
- data/lib/jspec.js +16 -9
- data/spec/spec.jquery.js +1 -1
- data/spec/spec.node.js +44 -0
- data/spec/spec.utils.js +18 -0
- metadata +3 -2
data/History.rdoc
CHANGED
data/Manifest
CHANGED
data/README.rdoc
CHANGED
@@ -12,6 +12,7 @@ and much more.
|
|
12
12
|
* Framework / DOM independent
|
13
13
|
* Modular via JSpec Module's and hooks
|
14
14
|
* Rhino support
|
15
|
+
* Node.js support
|
15
16
|
* Async support
|
16
17
|
* Ruby JavaScript testing server
|
17
18
|
* Nested describes
|
@@ -563,6 +564,18 @@ Run with:
|
|
563
564
|
* Tabs may cause a parse error. To prevent this use 'soft tabs' (setting in your IDE/Editor)
|
564
565
|
or use JSpec's grammar-less alternative (mentioned above).
|
565
566
|
|
567
|
+
* The preprocessor is not (yet) capable of multiline conversions. For example the following is invalid
|
568
|
+
|
569
|
+
object.stub('getContentsOfURL').and_return(function(url){
|
570
|
+
return 'html'
|
571
|
+
})
|
572
|
+
|
573
|
+
In cases such as this, you may always revert to utilizing JSpec in a grammar-less form as follows:
|
574
|
+
|
575
|
+
stub(object, 'getContentsOfURL').and_return(function(url){
|
576
|
+
return 'html'
|
577
|
+
})
|
578
|
+
|
566
579
|
== More Information
|
567
580
|
|
568
581
|
* Featured article in JSMag: http://www.jsmag.com/main.issues.description/id=21/
|
data/bin/jspec
CHANGED
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.
|
5
|
+
s.version = "2.5.1"
|
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-07}
|
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.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"]
|
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.5.
|
8
|
+
version : '2.5.1',
|
9
9
|
suites : [],
|
10
10
|
modules : [],
|
11
11
|
allSuites : [],
|
@@ -1072,8 +1072,9 @@
|
|
1072
1072
|
object[type + method] = object[method]
|
1073
1073
|
object[method] = function(){}
|
1074
1074
|
return {
|
1075
|
-
and_return : function(
|
1076
|
-
object[method] =
|
1075
|
+
and_return : function(value) {
|
1076
|
+
if (typeof value == 'function') object[method] = value
|
1077
|
+
else object[method] = function(){ return value }
|
1077
1078
|
}
|
1078
1079
|
}
|
1079
1080
|
},
|
@@ -1217,7 +1218,7 @@
|
|
1217
1218
|
preprocess : function(input) {
|
1218
1219
|
input = hookImmutable('preprocessing', input)
|
1219
1220
|
return input.
|
1220
|
-
replace(/(\w+)\.(stub|destub)\((.*?)\)$/gm, '$2($1, $3)').
|
1221
|
+
replace(/([\w\.]+)\.(stub|destub)\((.*?)\)$/gm, '$2($1, $3)').
|
1221
1222
|
replace(/describe\s+(.*?)$/gm, 'describe($1, function(){').
|
1222
1223
|
replace(/\sit\s+(.*?)$/gm, ' it($1, function(){').
|
1223
1224
|
replace(/^(?: *)(before_each|after_each|before|after)(?= |\n|$)/gm, 'JSpec.currentSuite.addHook("$1", function(){').
|
@@ -1444,14 +1445,15 @@
|
|
1444
1445
|
},
|
1445
1446
|
|
1446
1447
|
/**
|
1447
|
-
* Load a
|
1448
|
+
* Load a _file_'s contents.
|
1448
1449
|
*
|
1449
1450
|
* @param {string} file
|
1451
|
+
* @param {function} callback
|
1450
1452
|
* @return {string}
|
1451
1453
|
* @api public
|
1452
1454
|
*/
|
1453
1455
|
|
1454
|
-
load : function(file) {
|
1456
|
+
load : function(file, callback) {
|
1455
1457
|
if (any(hook('loading', file), haveStopped)) return
|
1456
1458
|
if (this.hasXhr()) {
|
1457
1459
|
var request = this.xhr()
|
@@ -1460,9 +1462,9 @@
|
|
1460
1462
|
if (request.readyState == 4) return request.responseText
|
1461
1463
|
}
|
1462
1464
|
else if ('readFile' in main)
|
1463
|
-
return readFile(file)
|
1465
|
+
return callback ? readFile(file, callback) : readFile(file)
|
1464
1466
|
else
|
1465
|
-
error(
|
1467
|
+
error("failed to load `" + file + "'")
|
1466
1468
|
},
|
1467
1469
|
|
1468
1470
|
/**
|
@@ -1475,7 +1477,12 @@
|
|
1475
1477
|
|
1476
1478
|
exec : function(file) {
|
1477
1479
|
if (any(hook('executing', file), haveStopped)) return this
|
1478
|
-
|
1480
|
+
if ('node' in main)
|
1481
|
+
this.load(file, function(contents){
|
1482
|
+
eval('with (JSpec){ ' + JSpec.preprocess(contents) + ' }')
|
1483
|
+
})
|
1484
|
+
else
|
1485
|
+
eval('with (JSpec){' + this.preprocess(this.load(file)) + '}')
|
1479
1486
|
return this
|
1480
1487
|
}
|
1481
1488
|
}
|
data/spec/spec.jquery.js
CHANGED
data/spec/spec.node.js
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
|
2
|
+
__loading__ = []
|
3
|
+
__loadDelay__ = 1000
|
4
|
+
|
5
|
+
readFile = function(path, callback) {
|
6
|
+
__loading__.push(path)
|
7
|
+
var promise = node.fs.cat(path, "utf8")
|
8
|
+
promise.addErrback(function(){ throw "failed to read file `" + path + "'" })
|
9
|
+
promise.addCallback(function(contents){
|
10
|
+
setTimeout(function(){
|
11
|
+
if (__loading__[0] == path)
|
12
|
+
__loading__.shift(), callback(contents)
|
13
|
+
else
|
14
|
+
setTimeout(arguments.callee, 50)
|
15
|
+
}, 50)
|
16
|
+
})
|
17
|
+
}
|
18
|
+
|
19
|
+
load = function(path) {
|
20
|
+
readFile(path, function(contents){
|
21
|
+
eval(contents)
|
22
|
+
})
|
23
|
+
}
|
24
|
+
|
25
|
+
load('lib/jspec.js')
|
26
|
+
load('spec/modules.js')
|
27
|
+
load('spec/spec.grammar-less.js')
|
28
|
+
|
29
|
+
setTimeout(function(){
|
30
|
+
JSpec
|
31
|
+
.exec('spec/spec.grammar.js')
|
32
|
+
.exec('spec/spec.js')
|
33
|
+
.exec('spec/spec.matchers.js')
|
34
|
+
.exec('spec/spec.utils.js')
|
35
|
+
.exec('spec/spec.shared-behaviors.js')
|
36
|
+
.exec('spec/spec.modules.js')
|
37
|
+
setTimeout(function(){
|
38
|
+
JSpec.run({ formatter : JSpec.formatters.Terminal, failuresOnly : true })
|
39
|
+
setTimeout(function() {
|
40
|
+
JSpec.report()
|
41
|
+
}, __loadDelay__ / 3)
|
42
|
+
}, __loadDelay__ / 3)
|
43
|
+
}, __loadDelay__ / 3)
|
44
|
+
|
data/spec/spec.utils.js
CHANGED
@@ -61,6 +61,24 @@ describe 'Utility'
|
|
61
61
|
destub(object)
|
62
62
|
object[' super cool '].should.be_null
|
63
63
|
end
|
64
|
+
|
65
|
+
it 'should stub sub properties using the JSpec grammar'
|
66
|
+
object = { foo : { bar : {}}}
|
67
|
+
object.foo.bar.stub('kitten').and_return('meow')
|
68
|
+
object.foo.bar.kitten().should.eql 'meow'
|
69
|
+
object.foo.bar.destub()
|
70
|
+
object.foo.bar.should.not.respond_to('kitten')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should allow functions to be passed as a method'
|
74
|
+
stub(object, 'post').and_return(function(url, callback){
|
75
|
+
if (url == 'http://jspec.info')
|
76
|
+
callback('is awesome')
|
77
|
+
})
|
78
|
+
object.post('http://jspec.info', function(text){
|
79
|
+
text.should_eql 'is awesome'
|
80
|
+
})
|
81
|
+
end
|
64
82
|
end
|
65
83
|
|
66
84
|
describe 'destub()'
|
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.5.
|
4
|
+
version: 2.5.1
|
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-07 00:00:00 -07:00
|
13
13
|
default_executable: jspec
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- spec/spec.js
|
80
80
|
- spec/spec.matchers.js
|
81
81
|
- spec/spec.modules.js
|
82
|
+
- spec/spec.node.js
|
82
83
|
- spec/spec.rhino.js
|
83
84
|
- spec/spec.server.html
|
84
85
|
- spec/spec.shared-behaviors.js
|