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
@@ -0,0 +1,22 @@
|
|
1
|
+
{
|
2
|
+
"name": "formidable",
|
3
|
+
"version": "1.0.8",
|
4
|
+
"dependencies": {},
|
5
|
+
"devDependencies": {
|
6
|
+
"gently": "0.8.0",
|
7
|
+
"findit": "0.1.1",
|
8
|
+
"hashish": "0.0.4",
|
9
|
+
"urun": "0.0.4",
|
10
|
+
"utest": "0.0.3"
|
11
|
+
},
|
12
|
+
"directories": {
|
13
|
+
"lib": "./lib"
|
14
|
+
},
|
15
|
+
"main": "./lib/index",
|
16
|
+
"scripts": {
|
17
|
+
"test": "make test"
|
18
|
+
},
|
19
|
+
"engines": {
|
20
|
+
"node": "*"
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
var mysql = require('..');
|
2
|
+
var path = require('path');
|
3
|
+
|
4
|
+
var root = path.join(__dirname, '../');
|
5
|
+
exports.dir = {
|
6
|
+
root : root,
|
7
|
+
lib : root + '/lib',
|
8
|
+
fixture : root + '/test/fixture',
|
9
|
+
tmp : root + '/test/tmp',
|
10
|
+
};
|
11
|
+
|
12
|
+
exports.port = 13532;
|
13
|
+
|
14
|
+
exports.formidable = require('..');
|
15
|
+
exports.assert = require('assert');
|
16
|
+
|
17
|
+
exports.require = function(lib) {
|
18
|
+
return require(exports.dir.lib + '/' + lib);
|
19
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
I am a text file with a funky name!
|
@@ -0,0 +1 @@
|
|
1
|
+
I am a plain text file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: localhost:8080
|
3
|
+
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG
|
4
|
+
Content-Length: 1000
|
5
|
+
|
6
|
+
------WebKitFormBoundarytyE4wkKlZ5CQJVTG
|
7
|
+
Content-Disposition: form-data; name="upload"; filename=""
|
8
|
+
Content-Type: text/plain
|
9
|
+
|
10
|
+
I am a plain text file
|
11
|
+
|
12
|
+
------WebKitFormBoundarytyE4wkKlZ5CQJVTG--
|
13
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: localhost:8080
|
3
|
+
Connection: keep-alive
|
4
|
+
Referer: http://localhost:8080/
|
5
|
+
Content-Length: 383
|
6
|
+
Cache-Control: max-age=0
|
7
|
+
Origin: http://localhost:8080
|
8
|
+
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1
|
9
|
+
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG
|
10
|
+
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
11
|
+
Accept-Encoding: gzip,deflate,sdch
|
12
|
+
Accept-Language: en-US,en;q=0.8
|
13
|
+
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
|
14
|
+
Cookie: jqCookieJar_tablesorter=%7B%22showListTable%22%3A%5B%5B5%2C1%5D%2C%5B1%2C0%5D%5D%7D
|
15
|
+
|
16
|
+
------WebKitFormBoundarytyE4wkKlZ5CQJVTG
|
17
|
+
Content-Disposition: form-data; name="title"
|
18
|
+
|
19
|
+
Weird filename
|
20
|
+
------WebKitFormBoundarytyE4wkKlZ5CQJVTG
|
21
|
+
Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
22
|
+
Content-Type: text/plain
|
23
|
+
|
24
|
+
I am a text file with a funky name!
|
25
|
+
|
26
|
+
------WebKitFormBoundarytyE4wkKlZ5CQJVTG--
|
@@ -0,0 +1,24 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: localhost:8080
|
3
|
+
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22
|
4
|
+
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
5
|
+
Accept-Language: en-us,en;q=0.5
|
6
|
+
Accept-Encoding: gzip,deflate
|
7
|
+
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
8
|
+
Keep-Alive: 115
|
9
|
+
Connection: keep-alive
|
10
|
+
Referer: http://localhost:8080/
|
11
|
+
Content-Type: multipart/form-data; boundary=---------------------------9849436581144108930470211272
|
12
|
+
Content-Length: 438
|
13
|
+
|
14
|
+
-----------------------------9849436581144108930470211272
|
15
|
+
Content-Disposition: form-data; name="title"
|
16
|
+
|
17
|
+
Weird filename
|
18
|
+
-----------------------------9849436581144108930470211272
|
19
|
+
Content-Disposition: form-data; name="upload"; filename=": \ ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
20
|
+
Content-Type: text/plain
|
21
|
+
|
22
|
+
I am a text file with a funky name!
|
23
|
+
|
24
|
+
-----------------------------9849436581144108930470211272--
|
@@ -0,0 +1,23 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: localhost:8080
|
3
|
+
Origin: http://localhost:8080
|
4
|
+
Content-Length: 383
|
5
|
+
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
|
6
|
+
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQJZ1gvhvdgfisJPJ
|
7
|
+
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
|
8
|
+
Referer: http://localhost:8080/
|
9
|
+
Accept-Language: en-us
|
10
|
+
Accept-Encoding: gzip, deflate
|
11
|
+
Connection: keep-alive
|
12
|
+
|
13
|
+
------WebKitFormBoundaryQJZ1gvhvdgfisJPJ
|
14
|
+
Content-Disposition: form-data; name="title"
|
15
|
+
|
16
|
+
Weird filename
|
17
|
+
------WebKitFormBoundaryQJZ1gvhvdgfisJPJ
|
18
|
+
Content-Disposition: form-data; name="upload"; filename=": \ ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
19
|
+
Content-Type: text/plain
|
20
|
+
|
21
|
+
I am a text file with a funky name!
|
22
|
+
|
23
|
+
------WebKitFormBoundaryQJZ1gvhvdgfisJPJ--
|
@@ -0,0 +1,24 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: 192.168.56.1:8080
|
3
|
+
Connection: keep-alive
|
4
|
+
Referer: http://192.168.56.1:8080/
|
5
|
+
Content-Length: 344
|
6
|
+
Cache-Control: max-age=0
|
7
|
+
Origin: http://192.168.56.1:8080
|
8
|
+
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30
|
9
|
+
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEvqBNplR3ByrwQPa
|
10
|
+
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
11
|
+
Accept-Encoding: gzip,deflate,sdch
|
12
|
+
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
|
13
|
+
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
|
14
|
+
|
15
|
+
------WebKitFormBoundaryEvqBNplR3ByrwQPa
|
16
|
+
Content-Disposition: form-data; name="title"
|
17
|
+
|
18
|
+
Weird filename
|
19
|
+
------WebKitFormBoundaryEvqBNplR3ByrwQPa
|
20
|
+
Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
21
|
+
Content-Type: text/plain
|
22
|
+
|
23
|
+
|
24
|
+
------WebKitFormBoundaryEvqBNplR3ByrwQPa--
|
@@ -0,0 +1,22 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*
|
3
|
+
Referer: http://192.168.56.1:8080/
|
4
|
+
Accept-Language: de
|
5
|
+
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
|
6
|
+
Content-Type: multipart/form-data; boundary=---------------------------7db1fe232017c
|
7
|
+
Accept-Encoding: gzip, deflate
|
8
|
+
Host: 192.168.56.1:8080
|
9
|
+
Content-Length: 368
|
10
|
+
Connection: Keep-Alive
|
11
|
+
Cache-Control: no-cache
|
12
|
+
|
13
|
+
-----------------------------7db1fe232017c
|
14
|
+
Content-Disposition: form-data; name="title"
|
15
|
+
|
16
|
+
Weird filename
|
17
|
+
-----------------------------7db1fe232017c
|
18
|
+
Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
19
|
+
Content-Type: application/octet-stream
|
20
|
+
|
21
|
+
|
22
|
+
-----------------------------7db1fe232017c--
|
@@ -0,0 +1,22 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*
|
3
|
+
Referer: http://192.168.56.1:8080/
|
4
|
+
Accept-Language: de
|
5
|
+
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
|
6
|
+
Content-Type: multipart/form-data; boundary=---------------------------7db3a8372017c
|
7
|
+
Accept-Encoding: gzip, deflate
|
8
|
+
Host: 192.168.56.1:8080
|
9
|
+
Content-Length: 368
|
10
|
+
Connection: Keep-Alive
|
11
|
+
Cache-Control: no-cache
|
12
|
+
|
13
|
+
-----------------------------7db3a8372017c
|
14
|
+
Content-Disposition: form-data; name="title"
|
15
|
+
|
16
|
+
Weird filename
|
17
|
+
-----------------------------7db3a8372017c
|
18
|
+
Content-Disposition: form-data; name="upload"; filename=" ? % * | " < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
19
|
+
Content-Type: application/octet-stream
|
20
|
+
|
21
|
+
|
22
|
+
-----------------------------7db3a8372017c--
|
@@ -0,0 +1,22 @@
|
|
1
|
+
POST /upload HTTP/1.1
|
2
|
+
Host: 192.168.56.1:8080
|
3
|
+
Referer: http://192.168.56.1:8080/
|
4
|
+
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
|
5
|
+
Accept-Language: en-US
|
6
|
+
Origin: http://192.168.56.1:8080
|
7
|
+
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
|
8
|
+
Accept-Encoding: gzip, deflate
|
9
|
+
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykmaWSUbu697WN9TM
|
10
|
+
Content-Length: 344
|
11
|
+
Connection: keep-alive
|
12
|
+
|
13
|
+
------WebKitFormBoundarykmaWSUbu697WN9TM
|
14
|
+
Content-Disposition: form-data; name="title"
|
15
|
+
|
16
|
+
Weird filename
|
17
|
+
------WebKitFormBoundarykmaWSUbu697WN9TM
|
18
|
+
Content-Disposition: form-data; name="upload"; filename=" ? % * | %22 < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"
|
19
|
+
Content-Type: text/plain
|
20
|
+
|
21
|
+
|
22
|
+
------WebKitFormBoundarykmaWSUbu697WN9TM--
|
@@ -0,0 +1,21 @@
|
|
1
|
+
var properFilename = 'funkyfilename.txt';
|
2
|
+
|
3
|
+
function expect(filename) {
|
4
|
+
return [
|
5
|
+
{type: 'field', name: 'title', value: 'Weird filename'},
|
6
|
+
{type: 'file', name: 'upload', filename: filename, fixture: properFilename},
|
7
|
+
];
|
8
|
+
};
|
9
|
+
|
10
|
+
var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt";
|
11
|
+
var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt";
|
12
|
+
|
13
|
+
module.exports = {
|
14
|
+
'osx-chrome-13.http' : expect(webkit),
|
15
|
+
'osx-firefox-3.6.http' : expect(ffOrIe),
|
16
|
+
'osx-safari-5.http' : expect(webkit),
|
17
|
+
'xp-chrome-12.http' : expect(webkit),
|
18
|
+
'xp-ie-7.http' : expect(ffOrIe),
|
19
|
+
'xp-ie-8.http' : expect(ffOrIe),
|
20
|
+
'xp-safari-5.http' : expect(webkit),
|
21
|
+
};
|
Binary file
|
@@ -0,0 +1,72 @@
|
|
1
|
+
exports['rfc1867'] =
|
2
|
+
{ boundary: 'AaB03x',
|
3
|
+
raw:
|
4
|
+
'--AaB03x\r\n'+
|
5
|
+
'content-disposition: form-data; name="field1"\r\n'+
|
6
|
+
'\r\n'+
|
7
|
+
'Joe Blow\r\nalmost tricked you!\r\n'+
|
8
|
+
'--AaB03x\r\n'+
|
9
|
+
'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
|
10
|
+
'Content-Type: text/plain\r\n'+
|
11
|
+
'\r\n'+
|
12
|
+
'... contents of file1.txt ...\r\r\n'+
|
13
|
+
'--AaB03x--\r\n',
|
14
|
+
parts:
|
15
|
+
[ { headers: {
|
16
|
+
'content-disposition': 'form-data; name="field1"',
|
17
|
+
},
|
18
|
+
data: 'Joe Blow\r\nalmost tricked you!',
|
19
|
+
},
|
20
|
+
{ headers: {
|
21
|
+
'content-disposition': 'form-data; name="pics"; filename="file1.txt"',
|
22
|
+
'Content-Type': 'text/plain',
|
23
|
+
},
|
24
|
+
data: '... contents of file1.txt ...\r',
|
25
|
+
}
|
26
|
+
]
|
27
|
+
};
|
28
|
+
|
29
|
+
exports['noTrailing\r\n'] =
|
30
|
+
{ boundary: 'AaB03x',
|
31
|
+
raw:
|
32
|
+
'--AaB03x\r\n'+
|
33
|
+
'content-disposition: form-data; name="field1"\r\n'+
|
34
|
+
'\r\n'+
|
35
|
+
'Joe Blow\r\nalmost tricked you!\r\n'+
|
36
|
+
'--AaB03x\r\n'+
|
37
|
+
'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
|
38
|
+
'Content-Type: text/plain\r\n'+
|
39
|
+
'\r\n'+
|
40
|
+
'... contents of file1.txt ...\r\r\n'+
|
41
|
+
'--AaB03x--',
|
42
|
+
parts:
|
43
|
+
[ { headers: {
|
44
|
+
'content-disposition': 'form-data; name="field1"',
|
45
|
+
},
|
46
|
+
data: 'Joe Blow\r\nalmost tricked you!',
|
47
|
+
},
|
48
|
+
{ headers: {
|
49
|
+
'content-disposition': 'form-data; name="pics"; filename="file1.txt"',
|
50
|
+
'Content-Type': 'text/plain',
|
51
|
+
},
|
52
|
+
data: '... contents of file1.txt ...\r',
|
53
|
+
}
|
54
|
+
]
|
55
|
+
};
|
56
|
+
|
57
|
+
exports['emptyHeader'] =
|
58
|
+
{ boundary: 'AaB03x',
|
59
|
+
raw:
|
60
|
+
'--AaB03x\r\n'+
|
61
|
+
'content-disposition: form-data; name="field1"\r\n'+
|
62
|
+
': foo\r\n'+
|
63
|
+
'\r\n'+
|
64
|
+
'Joe Blow\r\nalmost tricked you!\r\n'+
|
65
|
+
'--AaB03x\r\n'+
|
66
|
+
'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+
|
67
|
+
'Content-Type: text/plain\r\n'+
|
68
|
+
'\r\n'+
|
69
|
+
'... contents of file1.txt ...\r\r\n'+
|
70
|
+
'--AaB03x--\r\n',
|
71
|
+
expectError: true,
|
72
|
+
};
|
@@ -0,0 +1,89 @@
|
|
1
|
+
var hashish = require('hashish');
|
2
|
+
var fs = require('fs');
|
3
|
+
var findit = require('findit');
|
4
|
+
var path = require('path');
|
5
|
+
var http = require('http');
|
6
|
+
var net = require('net');
|
7
|
+
var assert = require('assert');
|
8
|
+
|
9
|
+
var common = require('../common');
|
10
|
+
var formidable = common.formidable;
|
11
|
+
|
12
|
+
var server = http.createServer();
|
13
|
+
server.listen(common.port, findFixtures);
|
14
|
+
|
15
|
+
function findFixtures() {
|
16
|
+
var fixtures = [];
|
17
|
+
findit
|
18
|
+
.sync(common.dir.fixture + '/js')
|
19
|
+
.forEach(function(jsPath) {
|
20
|
+
if (!/\.js$/.test(jsPath)) return;
|
21
|
+
|
22
|
+
var group = path.basename(jsPath, '.js');
|
23
|
+
hashish.forEach(require(jsPath), function(fixture, name) {
|
24
|
+
fixtures.push({
|
25
|
+
name : group + '/' + name,
|
26
|
+
fixture : fixture,
|
27
|
+
});
|
28
|
+
});
|
29
|
+
});
|
30
|
+
|
31
|
+
testNext(fixtures);
|
32
|
+
}
|
33
|
+
|
34
|
+
function testNext(fixtures) {
|
35
|
+
var fixture = fixtures.shift();
|
36
|
+
if (!fixture) return server.close();
|
37
|
+
|
38
|
+
var name = fixture.name;
|
39
|
+
var fixture = fixture.fixture;
|
40
|
+
|
41
|
+
uploadFixture(name, function(err, parts) {
|
42
|
+
if (err) throw err;
|
43
|
+
|
44
|
+
fixture.forEach(function(expectedPart, i) {
|
45
|
+
var parsedPart = parts[i];
|
46
|
+
assert.equal(parsedPart.type, expectedPart.type);
|
47
|
+
assert.equal(parsedPart.name, expectedPart.name);
|
48
|
+
|
49
|
+
if (parsedPart.type === 'file') {
|
50
|
+
var filename = parsedPart.value.name;
|
51
|
+
assert.equal(filename, expectedPart.filename);
|
52
|
+
}
|
53
|
+
});
|
54
|
+
|
55
|
+
testNext(fixtures);
|
56
|
+
});
|
57
|
+
};
|
58
|
+
|
59
|
+
function uploadFixture(name, cb) {
|
60
|
+
server.once('request', function(req, res) {
|
61
|
+
var form = new formidable.IncomingForm();
|
62
|
+
form.uploadDir = common.dir.tmp;
|
63
|
+
form.parse(req);
|
64
|
+
|
65
|
+
function callback() {
|
66
|
+
var realCallback = cb;
|
67
|
+
cb = function() {};
|
68
|
+
realCallback.apply(null, arguments);
|
69
|
+
}
|
70
|
+
|
71
|
+
var parts = [];
|
72
|
+
form
|
73
|
+
.on('error', callback)
|
74
|
+
.on('fileBegin', function(name, value) {
|
75
|
+
parts.push({type: 'file', name: name, value: value});
|
76
|
+
})
|
77
|
+
.on('field', function(name, value) {
|
78
|
+
parts.push({type: 'field', name: name, value: value});
|
79
|
+
})
|
80
|
+
.on('end', function() {
|
81
|
+
callback(null, parts);
|
82
|
+
});
|
83
|
+
});
|
84
|
+
|
85
|
+
var socket = net.createConnection(common.port);
|
86
|
+
var file = fs.createReadStream(common.dir.fixture + '/http/' + name);
|
87
|
+
|
88
|
+
file.pipe(socket);
|
89
|
+
}
|
data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
var path = require('path'),
|
2
|
+
fs = require('fs');
|
3
|
+
|
4
|
+
try {
|
5
|
+
global.Gently = require('gently');
|
6
|
+
} catch (e) {
|
7
|
+
throw new Error('this test suite requires node-gently');
|
8
|
+
}
|
9
|
+
|
10
|
+
exports.lib = path.join(__dirname, '../../lib');
|
11
|
+
|
12
|
+
global.GENTLY = new Gently();
|
13
|
+
|
14
|
+
global.assert = require('assert');
|
15
|
+
global.TEST_PORT = 13532;
|
16
|
+
global.TEST_FIXTURES = path.join(__dirname, '../fixture');
|
17
|
+
global.TEST_TMP = path.join(__dirname, '../tmp');
|
18
|
+
|
19
|
+
// Stupid new feature in node that complains about gently attaching too many
|
20
|
+
// listeners to process 'exit'. This is a workaround until I can think of a
|
21
|
+
// better way to deal with this.
|
22
|
+
if (process.setMaxListeners) {
|
23
|
+
process.setMaxListeners(10000);
|
24
|
+
}
|
@@ -0,0 +1,80 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var CHUNK_LENGTH = 10,
|
3
|
+
multipartParser = require(common.lib + '/multipart_parser'),
|
4
|
+
MultipartParser = multipartParser.MultipartParser,
|
5
|
+
parser = new MultipartParser(),
|
6
|
+
fixtures = require(TEST_FIXTURES + '/multipart'),
|
7
|
+
Buffer = require('buffer').Buffer;
|
8
|
+
|
9
|
+
Object.keys(fixtures).forEach(function(name) {
|
10
|
+
var fixture = fixtures[name],
|
11
|
+
buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')),
|
12
|
+
offset = 0,
|
13
|
+
chunk,
|
14
|
+
nparsed,
|
15
|
+
|
16
|
+
parts = [],
|
17
|
+
part = null,
|
18
|
+
headerField,
|
19
|
+
headerValue,
|
20
|
+
endCalled = '';
|
21
|
+
|
22
|
+
parser.initWithBoundary(fixture.boundary);
|
23
|
+
parser.onPartBegin = function() {
|
24
|
+
part = {headers: {}, data: ''};
|
25
|
+
parts.push(part);
|
26
|
+
headerField = '';
|
27
|
+
headerValue = '';
|
28
|
+
};
|
29
|
+
|
30
|
+
parser.onHeaderField = function(b, start, end) {
|
31
|
+
headerField += b.toString('ascii', start, end);
|
32
|
+
};
|
33
|
+
|
34
|
+
parser.onHeaderValue = function(b, start, end) {
|
35
|
+
headerValue += b.toString('ascii', start, end);
|
36
|
+
}
|
37
|
+
|
38
|
+
parser.onHeaderEnd = function() {
|
39
|
+
part.headers[headerField] = headerValue;
|
40
|
+
headerField = '';
|
41
|
+
headerValue = '';
|
42
|
+
};
|
43
|
+
|
44
|
+
parser.onPartData = function(b, start, end) {
|
45
|
+
var str = b.toString('ascii', start, end);
|
46
|
+
part.data += b.slice(start, end);
|
47
|
+
}
|
48
|
+
|
49
|
+
parser.onEnd = function() {
|
50
|
+
endCalled = true;
|
51
|
+
}
|
52
|
+
|
53
|
+
buffer.write(fixture.raw, 'binary', 0);
|
54
|
+
|
55
|
+
while (offset < buffer.length) {
|
56
|
+
if (offset + CHUNK_LENGTH < buffer.length) {
|
57
|
+
chunk = buffer.slice(offset, offset+CHUNK_LENGTH);
|
58
|
+
} else {
|
59
|
+
chunk = buffer.slice(offset, buffer.length);
|
60
|
+
}
|
61
|
+
offset = offset + CHUNK_LENGTH;
|
62
|
+
|
63
|
+
nparsed = parser.write(chunk);
|
64
|
+
if (nparsed != chunk.length) {
|
65
|
+
if (fixture.expectError) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
puts('-- ERROR --');
|
69
|
+
p(chunk.toString('ascii'));
|
70
|
+
throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!');
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
if (fixture.expectError) {
|
75
|
+
throw new Error('expected parse error did not happen');
|
76
|
+
}
|
77
|
+
|
78
|
+
assert.ok(endCalled);
|
79
|
+
assert.deepEqual(parts, fixture.parts);
|
80
|
+
});
|
@@ -0,0 +1,104 @@
|
|
1
|
+
var common = require('../common');
|
2
|
+
var WriteStreamStub = GENTLY.stub('fs', 'WriteStream');
|
3
|
+
|
4
|
+
var File = require(common.lib + '/file'),
|
5
|
+
EventEmitter = require('events').EventEmitter,
|
6
|
+
file,
|
7
|
+
gently;
|
8
|
+
|
9
|
+
function test(test) {
|
10
|
+
gently = new Gently();
|
11
|
+
file = new File();
|
12
|
+
test();
|
13
|
+
gently.verify(test.name);
|
14
|
+
}
|
15
|
+
|
16
|
+
test(function constructor() {
|
17
|
+
assert.ok(file instanceof EventEmitter);
|
18
|
+
assert.strictEqual(file.size, 0);
|
19
|
+
assert.strictEqual(file.path, null);
|
20
|
+
assert.strictEqual(file.name, null);
|
21
|
+
assert.strictEqual(file.type, null);
|
22
|
+
assert.strictEqual(file.lastModifiedDate, null);
|
23
|
+
|
24
|
+
assert.strictEqual(file._writeStream, null);
|
25
|
+
|
26
|
+
(function testSetProperties() {
|
27
|
+
var file2 = new File({foo: 'bar'});
|
28
|
+
assert.equal(file2.foo, 'bar');
|
29
|
+
})();
|
30
|
+
});
|
31
|
+
|
32
|
+
test(function open() {
|
33
|
+
var WRITE_STREAM;
|
34
|
+
file.path = '/foo';
|
35
|
+
|
36
|
+
gently.expect(WriteStreamStub, 'new', function (path) {
|
37
|
+
WRITE_STREAM = this;
|
38
|
+
assert.strictEqual(path, file.path);
|
39
|
+
});
|
40
|
+
|
41
|
+
file.open();
|
42
|
+
assert.strictEqual(file._writeStream, WRITE_STREAM);
|
43
|
+
});
|
44
|
+
|
45
|
+
test(function write() {
|
46
|
+
var BUFFER = {length: 10},
|
47
|
+
CB_STUB,
|
48
|
+
CB = function() {
|
49
|
+
CB_STUB.apply(this, arguments);
|
50
|
+
};
|
51
|
+
|
52
|
+
file._writeStream = {};
|
53
|
+
|
54
|
+
gently.expect(file._writeStream, 'write', function (buffer, cb) {
|
55
|
+
assert.strictEqual(buffer, BUFFER);
|
56
|
+
|
57
|
+
gently.expect(file, 'emit', function (event, bytesWritten) {
|
58
|
+
assert.ok(file.lastModifiedDate instanceof Date);
|
59
|
+
assert.equal(event, 'progress');
|
60
|
+
assert.equal(bytesWritten, file.size);
|
61
|
+
});
|
62
|
+
|
63
|
+
CB_STUB = gently.expect(function writeCb() {
|
64
|
+
assert.equal(file.size, 10);
|
65
|
+
});
|
66
|
+
|
67
|
+
cb();
|
68
|
+
|
69
|
+
gently.expect(file, 'emit', function (event, bytesWritten) {
|
70
|
+
assert.equal(event, 'progress');
|
71
|
+
assert.equal(bytesWritten, file.size);
|
72
|
+
});
|
73
|
+
|
74
|
+
CB_STUB = gently.expect(function writeCb() {
|
75
|
+
assert.equal(file.size, 20);
|
76
|
+
});
|
77
|
+
|
78
|
+
cb();
|
79
|
+
});
|
80
|
+
|
81
|
+
file.write(BUFFER, CB);
|
82
|
+
});
|
83
|
+
|
84
|
+
test(function end() {
|
85
|
+
var CB_STUB,
|
86
|
+
CB = function() {
|
87
|
+
CB_STUB.apply(this, arguments);
|
88
|
+
};
|
89
|
+
|
90
|
+
file._writeStream = {};
|
91
|
+
|
92
|
+
gently.expect(file._writeStream, 'end', function (cb) {
|
93
|
+
gently.expect(file, 'emit', function (event) {
|
94
|
+
assert.equal(event, 'end');
|
95
|
+
});
|
96
|
+
|
97
|
+
CB_STUB = gently.expect(function endCb() {
|
98
|
+
});
|
99
|
+
|
100
|
+
cb();
|
101
|
+
});
|
102
|
+
|
103
|
+
file.end(CB);
|
104
|
+
});
|