vulcan 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/vulcan +3 -1
- data/lib/vulcan/cli.rb +22 -3
- data/lib/vulcan/version.rb +1 -1
- data/server/bin/make +1 -3
- data/server/lib/spawner.js +9 -4
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +13 -2
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +19 -7
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +12 -1
- data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +1 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -10
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -9
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
- data/server/node_modules/cradle/lib/cradle.js +0 -1
- data/server/node_modules/cradle/package.json +3 -3
- data/server/node_modules/cradle/test/cache-test.js +6 -7
- data/server/node_modules/cradle/test/cradle-test.js +4 -5
- data/server/node_modules/cradle/test/response-test.js +5 -6
- data/server/node_modules/express/History.md +53 -1
- data/server/node_modules/express/Makefile +3 -9
- data/server/node_modules/express/Readme.md +3 -1
- data/server/node_modules/express/bin/express +65 -66
- data/server/node_modules/express/lib/express.js +1 -1
- data/server/node_modules/express/lib/request.js +23 -9
- data/server/node_modules/express/lib/response.js +3 -2
- data/server/node_modules/express/lib/utils.js +13 -0
- data/server/node_modules/express/lib/view/view.js +2 -1
- data/server/node_modules/express/lib/view.js +19 -16
- data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/http.js +2 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +135 -31
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +5 -1
- data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
- data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +26 -21
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +91 -38
- data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
- data/server/node_modules/express/node_modules/connect/lib/utils.js +11 -4
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +14 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +286 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +43 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +48 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +61 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +377 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +312 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +25 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +6 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +19 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +1 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +26 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +89 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +24 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +2 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
- data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +47 -0
- data/server/node_modules/express/node_modules/connect/package.json +7 -6
- data/server/node_modules/express/node_modules/connect/test.js +44 -31
- data/server/node_modules/express/node_modules/mime/mime.js +3 -3
- data/server/node_modules/express/node_modules/mime/package.json +21 -10
- data/server/node_modules/express/node_modules/mime/test.js +2 -3
- data/server/node_modules/express/node_modules/mime/{mime.types → types/mime.types} +0 -0
- data/server/node_modules/express/node_modules/mime/{node.types → types/node.types} +17 -0
- data/server/node_modules/express/node_modules/mkdirp/LICENSE +21 -0
- data/server/node_modules/express/node_modules/mkdirp/README.markdown +21 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +6 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +6 -0
- data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +19 -0
- data/server/node_modules/express/node_modules/mkdirp/index.js +20 -0
- data/server/node_modules/express/node_modules/mkdirp/package.json +23 -0
- data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +28 -0
- data/server/node_modules/express/node_modules/mkdirp/test/race.js +41 -0
- data/server/node_modules/express/node_modules/mkdirp/test/rel.js +32 -0
- data/server/node_modules/express/node_modules/qs/History.md +11 -0
- data/server/node_modules/express/node_modules/qs/Makefile +1 -3
- data/server/node_modules/express/node_modules/qs/Readme.md +2 -4
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +100 -74
- data/server/node_modules/express/node_modules/qs/package.json +9 -2
- data/server/node_modules/express/node_modules/qs/test/mocha.opts +2 -0
- data/server/node_modules/express/node_modules/qs/test/{parse.test.js → parse.js} +1 -2
- data/server/node_modules/express/node_modules/qs/test/{stringify.test.js → stringify.js} +0 -0
- data/server/node_modules/express/package.json +9 -8
- data/server/node_modules/express/testing/foo/app.js +35 -0
- data/server/node_modules/express/testing/foo/package.json +9 -0
- data/server/node_modules/express/testing/foo/public/stylesheets/style.css +8 -0
- data/server/node_modules/express/testing/foo/routes/index.js +10 -0
- data/server/node_modules/express/testing/foo/views/index.jade +2 -0
- data/server/node_modules/express/testing/foo/views/layout.jade +6 -0
- data/server/node_modules/express/testing/index.js +43 -0
- data/server/node_modules/express/testing/public/test.txt +2971 -0
- data/server/node_modules/express/testing/views/page.html +1 -0
- data/server/node_modules/express/testing/views/page.jade +3 -0
- data/server/node_modules/express/testing/views/test.md +1 -0
- data/server/node_modules/express/testing/views/user/index.jade +1 -0
- data/server/node_modules/express/testing/views/user/list.jade +1 -0
- data/server/node_modules/node-uuid/README.md +166 -67
- data/server/node_modules/node-uuid/benchmark/README.md +53 -0
- data/server/node_modules/node-uuid/benchmark/bench.gnu +174 -0
- data/server/node_modules/node-uuid/benchmark/bench.sh +34 -0
- data/server/node_modules/node-uuid/{test → benchmark}/benchmark-native.c +0 -0
- data/server/node_modules/node-uuid/benchmark/benchmark.js +84 -0
- data/server/node_modules/node-uuid/package.json +5 -3
- data/server/node_modules/node-uuid/test/benchmark-native +0 -0
- data/server/node_modules/node-uuid/test/compare_v1.js +63 -0
- data/server/node_modules/node-uuid/test/test.html +3 -0
- data/server/node_modules/node-uuid/test/test.js +214 -57
- data/server/node_modules/node-uuid/uuid.js +225 -56
- data/server/node_modules/restler/README.md +20 -7
- data/server/node_modules/restler/bin/restler +1 -1
- data/server/node_modules/restler/lib/multipartform.js +9 -8
- data/server/node_modules/restler/lib/restler.js +64 -22
- data/server/node_modules/restler/package.json +2 -2
- data/server/node_modules/restler/test/restler.js +22 -2
- data/server/node_modules/restler/test/test_helper.js +20 -1
- data/server/package.json +1 -2
- data/server/web.js +30 -7
- metadata +90 -86
- data/server/node_modules/cradle/node_modules/vows/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/Makefile +0 -7
- data/server/node_modules/cradle/node_modules/vows/README.md +0 -39
- data/server/node_modules/cradle/node_modules/vows/bin/vows +0 -515
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +0 -27
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +0 -215
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +0 -77
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +0 -131
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +0 -29
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +0 -2
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +0 -61
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +0 -54
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +0 -38
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +0 -28
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +0 -67
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +0 -16
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +0 -8
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +0 -44
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +0 -39
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +0 -90
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +0 -319
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +0 -193
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +0 -20
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +0 -4
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +0 -72
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +0 -233
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +0 -55
- data/server/node_modules/cradle/node_modules/vows/package.json +0 -14
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +0 -135
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +0 -17
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +0 -18
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +0 -140
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +0 -133
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +0 -51
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +0 -374
- data/server/node_modules/express/node_modules/mime/index.js +0 -1
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +0 -128
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +0 -53
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +0 -61
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +0 -856
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +0 -1080
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +0 -377
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +0 -290
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +0 -4
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +0 -16
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +0 -12
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +0 -13
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +0 -14
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +0 -146
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
- data/server/node_modules/express/node_modules/qs/support/should/History.md +0 -22
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +0 -6
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +0 -248
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +0 -53
- data/server/node_modules/express/node_modules/qs/support/should/index.js +0 -2
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +0 -91
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +0 -548
- data/server/node_modules/express/node_modules/qs/support/should/package.json +0 -8
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +0 -358
- data/server/node_modules/node-uuid/test/benchmark.js +0 -27
@@ -1,248 +0,0 @@
|
|
1
|
-
_should_ is an expressive, test framework agnostic, assertion library for [node](http://nodejs.org).
|
2
|
-
|
3
|
-
_should_ literally extends node's _assert_ module, in fact, it is node's assert module, for example `should.equal(str, 'foo')` will work, just as `assert.equal(str, 'foo')` would, and `should.AssertionError` **is** `asset.AssertionError`, meaning any test framework supporting this constructor will function properly with _should_.
|
4
|
-
|
5
|
-
## Example
|
6
|
-
|
7
|
-
var user = {
|
8
|
-
name: 'tj'
|
9
|
-
, pets: ['tobi', 'loki', 'jane', 'bandit']
|
10
|
-
};
|
11
|
-
|
12
|
-
user.should.have.property('name', 'tj');
|
13
|
-
user.should.have.property('pets').with.lengthOf(4)
|
14
|
-
|
15
|
-
## Installation
|
16
|
-
|
17
|
-
$ npm install should
|
18
|
-
|
19
|
-
## modifiers
|
20
|
-
|
21
|
-
_should_'s assertion chaining provides an expressive way to build up an assertion, along with dummy getters such as _an_, _have_, and _be_, provided are what I am simply calling **modifiers**, which have a meaning effect on the assertion. An example of this is the _not_ getter, which negates the meaning, aka `user.should.not.have.property('name')`. In the previous example note the use of _have_, as we could omit it and still construct a valid assertion.
|
22
|
-
|
23
|
-
Some modifiers such as _include_ only have an effect with specific assertion methods, for example when asserting a substring like so: `str.should.include.string('test')`, we could omit _include_, but it helps express the meaning, however _keys_ has a strict effect, unless the _include_ modifier is used.
|
24
|
-
|
25
|
-
## chaining assertions
|
26
|
-
|
27
|
-
Some assertions can be chained, for example if a property is volatile we can first assert property existence:
|
28
|
-
|
29
|
-
user.should.have.property('pets').with.lengthOf(4)
|
30
|
-
|
31
|
-
which is essentially equivalent to below, however the property may not exist:
|
32
|
-
|
33
|
-
user.pets.should.have.lengthOf(4)
|
34
|
-
|
35
|
-
our dummy getters such as _and_ also help express chaining:
|
36
|
-
|
37
|
-
user.should.be.a('object').and.have.property('name', 'tj')
|
38
|
-
|
39
|
-
## ok
|
40
|
-
|
41
|
-
Assert truthfulness:
|
42
|
-
|
43
|
-
true.should.be.ok
|
44
|
-
'yay'.should.be.ok
|
45
|
-
(1).should.be.ok
|
46
|
-
|
47
|
-
or negated:
|
48
|
-
|
49
|
-
false.should.not.be.ok
|
50
|
-
''.should.not.be.ok
|
51
|
-
(0).should.not.be.ok
|
52
|
-
|
53
|
-
## true
|
54
|
-
|
55
|
-
Assert === true:
|
56
|
-
|
57
|
-
true.should.be.true
|
58
|
-
'1'.should.not.be.true
|
59
|
-
|
60
|
-
## false
|
61
|
-
|
62
|
-
Assert === false:
|
63
|
-
|
64
|
-
false.should.be.false
|
65
|
-
(0).should.not.be.false
|
66
|
-
|
67
|
-
## arguments
|
68
|
-
|
69
|
-
Assert `Arguments`:
|
70
|
-
|
71
|
-
var args = (function(){ return arguments; })(1,2,3);
|
72
|
-
args.should.be.arguments;
|
73
|
-
[].should.not.be.arguments;
|
74
|
-
|
75
|
-
## empty
|
76
|
-
|
77
|
-
Asserts that length is 0:
|
78
|
-
|
79
|
-
[].should.be.empty
|
80
|
-
''.should.be.empty
|
81
|
-
({ length: 0 }).should.be.empty
|
82
|
-
|
83
|
-
## eql
|
84
|
-
|
85
|
-
equality:
|
86
|
-
|
87
|
-
({ foo: 'bar' }).should.eql({ foo: 'bar' })
|
88
|
-
[1,2,3].should.eql([1,2,3])
|
89
|
-
|
90
|
-
## equal
|
91
|
-
|
92
|
-
strict equality:
|
93
|
-
|
94
|
-
should.strictEqual(undefined, value)
|
95
|
-
should.strictEqual(false, value)
|
96
|
-
(4).should.equal(4)
|
97
|
-
'test'.should.equal('test')
|
98
|
-
[1,2,3].should.not.equal([1,2,3])
|
99
|
-
|
100
|
-
## within
|
101
|
-
|
102
|
-
Assert inclusive numeric range:
|
103
|
-
|
104
|
-
user.age.should.be.within(5, 50)
|
105
|
-
|
106
|
-
## a
|
107
|
-
|
108
|
-
Assert __typeof__:
|
109
|
-
|
110
|
-
user.should.be.a('object')
|
111
|
-
'test'.should.be.a('string')
|
112
|
-
|
113
|
-
## instanceof
|
114
|
-
|
115
|
-
Assert __instanceof__:
|
116
|
-
|
117
|
-
user.should.be.an.instanceof(User)
|
118
|
-
[].should.be.an.instanceof(Array)
|
119
|
-
|
120
|
-
## above
|
121
|
-
|
122
|
-
Assert numeric value above the given value:
|
123
|
-
|
124
|
-
user.age.should.be.above(5)
|
125
|
-
user.age.should.not.be.above(100)
|
126
|
-
|
127
|
-
## below
|
128
|
-
|
129
|
-
Assert numeric value below the given value:
|
130
|
-
|
131
|
-
user.age.should.be.below(100)
|
132
|
-
user.age.should.not.be.below(5)
|
133
|
-
|
134
|
-
## match
|
135
|
-
|
136
|
-
Assert regexp match:
|
137
|
-
|
138
|
-
username.should.match(/^\w+$/)
|
139
|
-
|
140
|
-
## length
|
141
|
-
|
142
|
-
Assert _length_ property exists and has a value of the given number:
|
143
|
-
|
144
|
-
user.pets.should.have.length(5)
|
145
|
-
user.pets.should.have.a.lengthOf(5)
|
146
|
-
|
147
|
-
Aliases: _lengthOf_
|
148
|
-
|
149
|
-
## string
|
150
|
-
|
151
|
-
Substring assertion:
|
152
|
-
|
153
|
-
'foobar'.should.include.string('foo')
|
154
|
-
'foobar'.should.include.string('bar')
|
155
|
-
'foobar'.should.not.include.string('baz')
|
156
|
-
|
157
|
-
## property
|
158
|
-
|
159
|
-
Assert property exists and has optional value:
|
160
|
-
|
161
|
-
user.should.have.property('name')
|
162
|
-
user.should.have.property('age', 15)
|
163
|
-
user.should.not.have.property('rawr')
|
164
|
-
user.should.not.have.property('age', 0)
|
165
|
-
|
166
|
-
## ownProperty
|
167
|
-
|
168
|
-
Assert own property (on the immediate object):
|
169
|
-
|
170
|
-
({ foo: 'bar' }).should.have.ownProperty('foo')
|
171
|
-
|
172
|
-
## contain
|
173
|
-
|
174
|
-
Assert array value:
|
175
|
-
|
176
|
-
[1,2,3].should.contain(3)
|
177
|
-
[1,2,3].should.contain(2)
|
178
|
-
[1,2,3].should.not.contain(4)
|
179
|
-
|
180
|
-
## keys
|
181
|
-
|
182
|
-
Assert own object keys, which must match _exactly_,
|
183
|
-
and will fail if you omit a key or two:
|
184
|
-
|
185
|
-
var obj = { foo: 'bar', baz: 'raz' };
|
186
|
-
obj.should.have.keys('foo', 'bar');
|
187
|
-
obj.should.have.keys(['foo', 'bar']);
|
188
|
-
|
189
|
-
using the _include_ modifier, we can check inclusion of a key,
|
190
|
-
but not fail when we omit a few:
|
191
|
-
|
192
|
-
obj.should.include.keys('foo')
|
193
|
-
obj.should.include.keys('bar')
|
194
|
-
obj.should.not.include.keys('baz')
|
195
|
-
|
196
|
-
## respondTo
|
197
|
-
|
198
|
-
Assert that the given property is a function:
|
199
|
-
|
200
|
-
user.should.respondTo('email')
|
201
|
-
|
202
|
-
## Express example
|
203
|
-
|
204
|
-
For example you can use should with the [Expresso TDD Framework](http://github.com/visionmedia/expresso) by simply including it:
|
205
|
-
|
206
|
-
var lib = require('mylib')
|
207
|
-
, should = require('should');
|
208
|
-
|
209
|
-
module.exports = {
|
210
|
-
'test .version': function(){
|
211
|
-
lib.version.should.match(/^\d+\.\d+\.\d+$/);
|
212
|
-
}
|
213
|
-
};
|
214
|
-
|
215
|
-
## Running tests
|
216
|
-
|
217
|
-
To run the tests for _should_ simple update your git submodules and run:
|
218
|
-
|
219
|
-
$ make test
|
220
|
-
|
221
|
-
## OMG IT EXTENDS OBJECT???!?!@
|
222
|
-
|
223
|
-
Yes, yes it does, with a single getter _should_, and no it wont break your code, because it does this **properly** with a non-enumerable property.
|
224
|
-
|
225
|
-
## License
|
226
|
-
|
227
|
-
(The MIT License)
|
228
|
-
|
229
|
-
Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>
|
230
|
-
|
231
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
232
|
-
a copy of this software and associated documentation files (the
|
233
|
-
'Software'), to deal in the Software without restriction, including
|
234
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
235
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
236
|
-
permit persons to whom the Software is furnished to do so, subject to
|
237
|
-
the following conditions:
|
238
|
-
|
239
|
-
The above copyright notice and this permission notice shall be
|
240
|
-
included in all copies or substantial portions of the Software.
|
241
|
-
|
242
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
243
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
244
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
245
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
246
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
247
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
248
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,53 +0,0 @@
|
|
1
|
-
|
2
|
-
/**
|
3
|
-
* Module dependencies.
|
4
|
-
*/
|
5
|
-
|
6
|
-
var should = require('../');
|
7
|
-
|
8
|
-
function test(name, fn){
|
9
|
-
try {
|
10
|
-
fn();
|
11
|
-
} catch (err) {
|
12
|
-
console.log(' \x1b[31m%s', name);
|
13
|
-
console.log(' %s\x1b[0m', err.stack);
|
14
|
-
return;
|
15
|
-
}
|
16
|
-
console.log(' √ \x1b[32m%s\x1b[0m', name);
|
17
|
-
}
|
18
|
-
|
19
|
-
function Point(x, y) {
|
20
|
-
this.x = x;
|
21
|
-
this.y = y;
|
22
|
-
this.sub = function(other){
|
23
|
-
return new Point(
|
24
|
-
this.x - other.x
|
25
|
-
, this.y - other.y);
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
console.log();
|
30
|
-
|
31
|
-
test('new Point(x, y)', function(){
|
32
|
-
var point = new Point(50, 100);
|
33
|
-
point.should.be.an.instanceof(Point);
|
34
|
-
point.should.have.property('x', 50);
|
35
|
-
point.should.have.property('y', 100);
|
36
|
-
});
|
37
|
-
|
38
|
-
test('Point#sub()', function(){
|
39
|
-
var a = new Point(50, 100)
|
40
|
-
, b = new Point(20, 50);
|
41
|
-
a.sub(b).should.be.an.instanceof(Point);
|
42
|
-
a.sub(b).should.not.equal(a);
|
43
|
-
a.sub(b).should.not.equal(b);
|
44
|
-
a.sub(b).should.have.property('x', 30);
|
45
|
-
a.sub(b).should.have.property('y', 50);
|
46
|
-
});
|
47
|
-
|
48
|
-
test('Point#add()', function(){
|
49
|
-
var point = new Point(50, 100);
|
50
|
-
point.should.respondTo('add');
|
51
|
-
});
|
52
|
-
|
53
|
-
console.log();
|
@@ -1,91 +0,0 @@
|
|
1
|
-
|
2
|
-
// Taken from node's assert module, because it sucks
|
3
|
-
// and exposes next to nothing useful.
|
4
|
-
|
5
|
-
module.exports = _deepEqual;
|
6
|
-
|
7
|
-
function _deepEqual(actual, expected) {
|
8
|
-
// 7.1. All identical values are equivalent, as determined by ===.
|
9
|
-
if (actual === expected) {
|
10
|
-
return true;
|
11
|
-
|
12
|
-
} else if (Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) {
|
13
|
-
if (actual.length != expected.length) return false;
|
14
|
-
|
15
|
-
for (var i = 0; i < actual.length; i++) {
|
16
|
-
if (actual[i] !== expected[i]) return false;
|
17
|
-
}
|
18
|
-
|
19
|
-
return true;
|
20
|
-
|
21
|
-
// 7.2. If the expected value is a Date object, the actual value is
|
22
|
-
// equivalent if it is also a Date object that refers to the same time.
|
23
|
-
} else if (actual instanceof Date && expected instanceof Date) {
|
24
|
-
return actual.getTime() === expected.getTime();
|
25
|
-
|
26
|
-
// 7.3. Other pairs that do not both pass typeof value == "object",
|
27
|
-
// equivalence is determined by ==.
|
28
|
-
} else if (typeof actual != 'object' && typeof expected != 'object') {
|
29
|
-
return actual == expected;
|
30
|
-
|
31
|
-
// 7.4. For all other Object pairs, including Array objects, equivalence is
|
32
|
-
// determined by having the same number of owned properties (as verified
|
33
|
-
// with Object.prototype.hasOwnProperty.call), the same set of keys
|
34
|
-
// (although not necessarily the same order), equivalent values for every
|
35
|
-
// corresponding key, and an identical "prototype" property. Note: this
|
36
|
-
// accounts for both named and indexed properties on Arrays.
|
37
|
-
} else {
|
38
|
-
return objEquiv(actual, expected);
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
function isUndefinedOrNull (value) {
|
43
|
-
return value === null || value === undefined;
|
44
|
-
}
|
45
|
-
|
46
|
-
function isArguments (object) {
|
47
|
-
return Object.prototype.toString.call(object) == '[object Arguments]';
|
48
|
-
}
|
49
|
-
|
50
|
-
function objEquiv (a, b) {
|
51
|
-
if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
|
52
|
-
return false;
|
53
|
-
// an identical "prototype" property.
|
54
|
-
if (a.prototype !== b.prototype) return false;
|
55
|
-
//~~~I've managed to break Object.keys through screwy arguments passing.
|
56
|
-
// Converting to array solves the problem.
|
57
|
-
if (isArguments(a)) {
|
58
|
-
if (!isArguments(b)) {
|
59
|
-
return false;
|
60
|
-
}
|
61
|
-
a = pSlice.call(a);
|
62
|
-
b = pSlice.call(b);
|
63
|
-
return _deepEqual(a, b);
|
64
|
-
}
|
65
|
-
try{
|
66
|
-
var ka = Object.keys(a),
|
67
|
-
kb = Object.keys(b),
|
68
|
-
key, i;
|
69
|
-
} catch (e) {//happens when one is a string literal and the other isn't
|
70
|
-
return false;
|
71
|
-
}
|
72
|
-
// having the same number of owned properties (keys incorporates hasOwnProperty)
|
73
|
-
if (ka.length != kb.length)
|
74
|
-
return false;
|
75
|
-
//the same set of keys (although not necessarily the same order),
|
76
|
-
ka.sort();
|
77
|
-
kb.sort();
|
78
|
-
//~~~cheap key test
|
79
|
-
for (i = ka.length - 1; i >= 0; i--) {
|
80
|
-
if (ka[i] != kb[i])
|
81
|
-
return false;
|
82
|
-
}
|
83
|
-
//equivalent values for every corresponding key, and
|
84
|
-
//~~~possibly expensive deep test
|
85
|
-
for (i = ka.length - 1; i >= 0; i--) {
|
86
|
-
key = ka[i];
|
87
|
-
if (!_deepEqual(a[key], b[key] ))
|
88
|
-
return false;
|
89
|
-
}
|
90
|
-
return true;
|
91
|
-
}
|