use directories for structure
This commit is contained in:
4
node_modules/lazystream/.npmignore
generated
vendored
Normal file
4
node_modules/lazystream/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
.DS_Store
|
||||
npm-debug.log
|
||||
node_modules/
|
||||
test/tmp/
|
9
node_modules/lazystream/.travis.yml
generated
vendored
Normal file
9
node_modules/lazystream/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
sudo: false
|
||||
language: node_js
|
||||
node_js:
|
||||
- "5.2"
|
||||
- "4.2"
|
||||
- "0.12"
|
||||
- "0.10"
|
||||
# - "0.8"
|
||||
# - "0.6"
|
23
node_modules/lazystream/LICENSE-MIT
generated
vendored
Normal file
23
node_modules/lazystream/LICENSE-MIT
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
Copyright (c) 2013 J. Pommerening, contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
110
node_modules/lazystream/README.md
generated
vendored
Normal file
110
node_modules/lazystream/README.md
generated
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
# Lazy Streams
|
||||
|
||||
> *Create streams lazily when they are read from or written to.*
|
||||
> `lazystream: 1.0.0` [](https://travis-ci.org/jpommerening/node-lazystream)
|
||||
|
||||
## Why?
|
||||
|
||||
Sometimes you feel the itch to open *all the files* at once. You want to pass a bunch of streams around, so the consumer does not need to worry where the data comes from.
|
||||
From a software design point-of-view this sounds entirely reasonable. Then there is that neat little function `fs.createReadStream()` that opens a file and gives you a nice `fs.ReadStream` to pass around, so you use what the mighty creator deities of node bestowed upon you.
|
||||
|
||||
> `Error: EMFILE, too many open files`
|
||||
> ─ *node*
|
||||
|
||||
This package provides two classes based on the node's Streams3 API (courtesy of `readable-stream` to ensure a stable version).
|
||||
|
||||
## Class: lazystream.Readable
|
||||
|
||||
A wrapper for readable streams. Extends [`stream.PassThrough`](http://nodejs.org/api/stream.html#stream_class_stream_passthrough).
|
||||
|
||||
### new lazystream.Readable(fn [, options])
|
||||
|
||||
* `fn` *{Function}*
|
||||
The function that the lazy stream will call to obtain the stream to actually read from.
|
||||
* `options` *{Object}*
|
||||
Options for the underlying `PassThrough` stream, accessible by `fn`.
|
||||
|
||||
Creates a new readable stream. Once the stream is accessed (for example when you call its `read()` method, or attach a `data`-event listener) the `fn` function is called with the outer `lazystream.Readable` instance bound to `this`.
|
||||
|
||||
If you pass an `options` object to the constuctor, you can access it in your `fn` function.
|
||||
|
||||
```javascript
|
||||
new lazystream.Readable(function (options) {
|
||||
return fs.createReadStream('/dev/urandom');
|
||||
});
|
||||
```
|
||||
|
||||
## Class: lazystream.Writable
|
||||
|
||||
A wrapper for writable streams. Extends [`stream.PassThrough`](http://nodejs.org/api/stream.html#stream_class_stream_passthrough).
|
||||
|
||||
### new lazystream.Writable(fn [, options])
|
||||
|
||||
* `fn` *{Function}*
|
||||
The function that the lazy stream will call to obtain the stream to actually write to.
|
||||
* `options` *{Object}*
|
||||
Options for the underlying `PassThrough` stream, accessible by `fn`.
|
||||
|
||||
Creates a new writable stream. Just like the one above but for writable streams.
|
||||
|
||||
```javascript
|
||||
new lazystream.Writable(function () {
|
||||
return fs.createWriteStream('/dev/null');
|
||||
});
|
||||
```
|
||||
|
||||
## Install
|
||||
|
||||
```console
|
||||
$ npm install lazystream --save
|
||||
lazystream@1.0.0 node_modules/lazystream
|
||||
└── readable-stream@2.0.5
|
||||
```
|
||||
|
||||
## Changelog
|
||||
|
||||
### v1.0.0
|
||||
|
||||
- [#2](https://github.com/jpommerening/node-lazystream/pull/2): [unconditionally](https://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html) use `readable-stream` _2.x_.
|
||||
|
||||
### v0.2.0
|
||||
|
||||
- [#1](https://github.com/jpommerening/node-lazystream/pull/1): error events are now propagated
|
||||
|
||||
### v0.1.0
|
||||
|
||||
- _(this was the first release)_
|
||||
|
||||
## Contributing
|
||||
|
||||
Fork it, branch it, send me a pull request. We'll work out the rest together.
|
||||
|
||||
## Credits
|
||||
|
||||
[Chris Talkington](https://github.com/ctalkington) and his [node-archiver](https://github.com/ctalkington/node-archiver) for providing a use-case.
|
||||
|
||||
## [License](LICENSE-MIT)
|
||||
|
||||
Copyright (c) 2013 J. Pommerening, contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
54
node_modules/lazystream/lib/lazystream.js
generated
vendored
Normal file
54
node_modules/lazystream/lib/lazystream.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
var util = require('util');
|
||||
var PassThrough = require('readable-stream/passthrough');
|
||||
|
||||
module.exports = {
|
||||
Readable: Readable,
|
||||
Writable: Writable
|
||||
};
|
||||
|
||||
util.inherits(Readable, PassThrough);
|
||||
util.inherits(Writable, PassThrough);
|
||||
|
||||
// Patch the given method of instance so that the callback
|
||||
// is executed once, before the actual method is called the
|
||||
// first time.
|
||||
function beforeFirstCall(instance, method, callback) {
|
||||
instance[method] = function() {
|
||||
delete instance[method];
|
||||
callback.apply(this, arguments);
|
||||
return this[method].apply(this, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
function Readable(fn, options) {
|
||||
if (!(this instanceof Readable))
|
||||
return new Readable(fn, options);
|
||||
|
||||
PassThrough.call(this, options);
|
||||
|
||||
beforeFirstCall(this, '_read', function() {
|
||||
var source = fn.call(this, options);
|
||||
var emit = this.emit.bind(this, 'error');
|
||||
source.on('error', emit);
|
||||
source.pipe(this);
|
||||
});
|
||||
|
||||
this.emit('readable');
|
||||
}
|
||||
|
||||
function Writable(fn, options) {
|
||||
if (!(this instanceof Writable))
|
||||
return new Writable(fn, options);
|
||||
|
||||
PassThrough.call(this, options);
|
||||
|
||||
beforeFirstCall(this, '_write', function() {
|
||||
var destination = fn.call(this, options);
|
||||
var emit = this.emit.bind(this, 'error');
|
||||
destination.on('error', emit);
|
||||
this.pipe(destination);
|
||||
});
|
||||
|
||||
this.emit('writable');
|
||||
}
|
||||
|
73
node_modules/lazystream/package.json
generated
vendored
Normal file
73
node_modules/lazystream/package.json
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"lazystream@1.0.0",
|
||||
"D:\\Projects\\siag\\vanillajs-seed"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "lazystream@1.0.0",
|
||||
"_id": "lazystream@1.0.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
|
||||
"_location": "/lazystream",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "lazystream@1.0.0",
|
||||
"name": "lazystream",
|
||||
"escapedName": "lazystream",
|
||||
"rawSpec": "1.0.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "1.0.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/vinyl-fs"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
|
||||
"_spec": "1.0.0",
|
||||
"_where": "D:\\Projects\\siag\\vanillajs-seed",
|
||||
"author": {
|
||||
"name": "Jonas Pommerening",
|
||||
"email": "jonas.pommerening@gmail.com",
|
||||
"url": "https://npmjs.org/~jpommerening"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/jpommerening/node-lazystream/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Mario Casciaro",
|
||||
"email": "mariocasciaro@gmail.com"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"readable-stream": "^2.0.5"
|
||||
},
|
||||
"description": "Open Node Streams on demand.",
|
||||
"devDependencies": {
|
||||
"nodeunit": "^0.9.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6.3"
|
||||
},
|
||||
"homepage": "https://github.com/jpommerening/node-lazystream",
|
||||
"keywords": [
|
||||
"emfile",
|
||||
"lazy",
|
||||
"streams",
|
||||
"stream"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "lib/lazystream.js",
|
||||
"name": "lazystream",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jpommerening/node-lazystream.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "nodeunit test/readable_test.js test/writable_test.js test/pipe_test.js test/fs_test.js"
|
||||
},
|
||||
"version": "1.0.0"
|
||||
}
|
59
node_modules/lazystream/secret
generated
vendored
Normal file
59
node_modules/lazystream/secret
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
=EeYS
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
13
node_modules/lazystream/test/data.md
generated
vendored
Normal file
13
node_modules/lazystream/test/data.md
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
> Never mind, hey, this is really exciting, so much to find out about, so much to
|
||||
> look forward to, I'm quite dizzy with anticipation . . . Or is it the wind?
|
||||
>
|
||||
> There really is a lot of that now, isn't there? And wow! Hey! What's this thing
|
||||
> suddenly coming toward me very fast? Very, very fast. So big and flat and round,
|
||||
> it needs a big wide-sounding name like . . . ow . . . ound . . . round . . .
|
||||
> ground! That's it! That's a good name- ground!
|
||||
>
|
||||
> I wonder if it will be friends with me?
|
||||
>
|
||||
> Hello Ground!
|
||||
|
||||
And the rest, after a sudden wet thud, was silence.
|
69
node_modules/lazystream/test/fs_test.js
generated
vendored
Normal file
69
node_modules/lazystream/test/fs_test.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
var stream = require('../lib/lazystream');
|
||||
var fs = require('fs');
|
||||
var tmpDir = 'test/tmp/';
|
||||
var readFile = 'test/data.md';
|
||||
var writeFile = tmpDir + 'data.md';
|
||||
|
||||
exports.fs = {
|
||||
readwrite: function(test) {
|
||||
var readfd, writefd;
|
||||
|
||||
var readable = new stream.Readable(function() {
|
||||
return fs.createReadStream(readFile)
|
||||
.on('open', function(fd) {
|
||||
readfd = fd;
|
||||
})
|
||||
.on('close', function() {
|
||||
readfd = undefined;
|
||||
step();
|
||||
});
|
||||
});
|
||||
|
||||
var writable = new stream.Writable(function() {
|
||||
return fs.createWriteStream(writeFile)
|
||||
.on('open', function(fd) {
|
||||
writefd = fd;
|
||||
})
|
||||
.on('close', function() {
|
||||
writefd = undefined;
|
||||
step();
|
||||
});
|
||||
});
|
||||
|
||||
test.expect(3);
|
||||
|
||||
test.equal(readfd, undefined, 'Input file should not be opened until read');
|
||||
test.equal(writefd, undefined, 'Output file should not be opened until write');
|
||||
|
||||
if (!fs.existsSync(tmpDir)) {
|
||||
fs.mkdirSync(tmpDir);
|
||||
}
|
||||
if (fs.existsSync(writeFile)) {
|
||||
fs.unlinkSync(writeFile);
|
||||
}
|
||||
|
||||
readable.on('end', function() { step(); });
|
||||
writable.on('end', function() { step(); });
|
||||
|
||||
var steps = 0;
|
||||
function step() {
|
||||
steps += 1;
|
||||
if (steps == 4) {
|
||||
var input = fs.readFileSync(readFile);
|
||||
var output = fs.readFileSync(writeFile);
|
||||
|
||||
test.ok(input >= output && input <= output, 'Should be equal');
|
||||
|
||||
fs.unlinkSync(writeFile);
|
||||
fs.rmdirSync(tmpDir);
|
||||
|
||||
test.done();
|
||||
}
|
||||
};
|
||||
|
||||
readable.pipe(writable);
|
||||
}
|
||||
};
|
||||
|
||||
|
39
node_modules/lazystream/test/helper.js
generated
vendored
Normal file
39
node_modules/lazystream/test/helper.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
var _Readable = require('readable-stream/readable');
|
||||
var _Writable = require('readable-stream/writable');
|
||||
var util = require('util');
|
||||
|
||||
module.exports = {
|
||||
DummyReadable: DummyReadable,
|
||||
DummyWritable: DummyWritable
|
||||
};
|
||||
|
||||
function DummyReadable(strings) {
|
||||
_Readable.call(this);
|
||||
this.strings = strings;
|
||||
this.emit('readable');
|
||||
}
|
||||
|
||||
util.inherits(DummyReadable, _Readable);
|
||||
|
||||
DummyReadable.prototype._read = function _read(n) {
|
||||
if (this.strings.length) {
|
||||
this.push(new Buffer(this.strings.shift()));
|
||||
} else {
|
||||
this.push(null);
|
||||
}
|
||||
};
|
||||
|
||||
function DummyWritable(strings) {
|
||||
_Writable.call(this);
|
||||
this.strings = strings;
|
||||
this.emit('writable');
|
||||
}
|
||||
|
||||
util.inherits(DummyWritable, _Writable);
|
||||
|
||||
DummyWritable.prototype._write = function _write(chunk, encoding, callback) {
|
||||
this.strings.push(chunk.toString());
|
||||
if (callback) callback();
|
||||
};
|
||||
|
36
node_modules/lazystream/test/pipe_test.js
generated
vendored
Normal file
36
node_modules/lazystream/test/pipe_test.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
var stream = require('../lib/lazystream');
|
||||
var helper = require('./helper');
|
||||
|
||||
exports.pipe = {
|
||||
readwrite: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
var readableInstantiated = false;
|
||||
var writableInstantiated = false;
|
||||
|
||||
test.expect(3);
|
||||
|
||||
var readable = new stream.Readable(function() {
|
||||
readableInstantiated = true;
|
||||
return new helper.DummyReadable([].concat(expected));
|
||||
});
|
||||
|
||||
var writable = new stream.Writable(function() {
|
||||
writableInstantiated = true;
|
||||
return new helper.DummyWritable(actual);
|
||||
});
|
||||
|
||||
test.equal(readableInstantiated, false, 'DummyReadable should only be instantiated when it is needed');
|
||||
test.equal(writableInstantiated, false, 'DummyWritable should only be instantiated when it is needed');
|
||||
|
||||
writable.on('end', function() {
|
||||
test.equal(actual.join(''), expected.join(''), 'Piping on demand streams should keep data intact');
|
||||
test.done();
|
||||
});
|
||||
|
||||
readable.pipe(writable);
|
||||
}
|
||||
};
|
||||
|
||||
|
90
node_modules/lazystream/test/readable_test.js
generated
vendored
Normal file
90
node_modules/lazystream/test/readable_test.js
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
|
||||
var Readable = require('../lib/lazystream').Readable;
|
||||
var DummyReadable = require('./helper').DummyReadable;
|
||||
|
||||
exports.readable = {
|
||||
dummy: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
|
||||
test.expect(1);
|
||||
|
||||
new DummyReadable([].concat(expected))
|
||||
.on('data', function(chunk) {
|
||||
actual.push(chunk.toString());
|
||||
})
|
||||
.on('end', function() {
|
||||
test.equal(actual.join(''), expected.join(''), 'DummyReadable should produce the data it was created with');
|
||||
test.done();
|
||||
});
|
||||
},
|
||||
options: function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var readable = new Readable(function(options) {
|
||||
test.ok(this instanceof Readable, "Readable should bind itself to callback's this");
|
||||
test.equal(options.encoding, "utf-8", "Readable should make options accessible to callback");
|
||||
this.ok = true;
|
||||
return new DummyReadable(["test"]);
|
||||
}, {encoding: "utf-8"});
|
||||
|
||||
readable.read(4);
|
||||
|
||||
test.ok(readable.ok);
|
||||
|
||||
test.done();
|
||||
},
|
||||
streams2: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
var instantiated = false;
|
||||
|
||||
test.expect(2);
|
||||
|
||||
var readable = new Readable(function() {
|
||||
instantiated = true;
|
||||
return new DummyReadable([].concat(expected));
|
||||
});
|
||||
|
||||
test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed');
|
||||
|
||||
readable.on('readable', function() {
|
||||
var chunk;
|
||||
while ((chunk = readable.read())) {
|
||||
actual.push(chunk.toString());
|
||||
}
|
||||
});
|
||||
readable.on('end', function() {
|
||||
test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream');
|
||||
test.done();
|
||||
});
|
||||
|
||||
readable.read(0);
|
||||
},
|
||||
resume: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
var instantiated = false;
|
||||
|
||||
test.expect(2);
|
||||
|
||||
var readable = new Readable(function() {
|
||||
instantiated = true;
|
||||
return new DummyReadable([].concat(expected));
|
||||
});
|
||||
|
||||
readable.pause();
|
||||
|
||||
readable.on('data', function(chunk) {
|
||||
actual.push(chunk.toString());
|
||||
});
|
||||
readable.on('end', function() {
|
||||
test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream');
|
||||
test.done();
|
||||
});
|
||||
|
||||
test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed');
|
||||
|
||||
readable.resume();
|
||||
}
|
||||
};
|
59
node_modules/lazystream/test/writable_test.js
generated
vendored
Normal file
59
node_modules/lazystream/test/writable_test.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
var Writable = require('../lib/lazystream').Writable;
|
||||
var DummyWritable = require('./helper').DummyWritable;
|
||||
|
||||
exports.writable = {
|
||||
options: function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var writable = new Writable(function(options) {
|
||||
test.ok(this instanceof Writable, "Writable should bind itself to callback's this");
|
||||
test.equal(options.encoding, "utf-8", "Writable should make options accessible to callback");
|
||||
this.ok = true;
|
||||
return new DummyWritable([]);
|
||||
}, {encoding: "utf-8"});
|
||||
|
||||
writable.write("test");
|
||||
|
||||
test.ok(writable.ok);
|
||||
|
||||
test.done();
|
||||
},
|
||||
dummy: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
|
||||
test.expect(0);
|
||||
|
||||
var dummy = new DummyWritable(actual);
|
||||
|
||||
expected.forEach(function(item) {
|
||||
dummy.write(new Buffer(item));
|
||||
});
|
||||
test.done();
|
||||
},
|
||||
streams2: function(test) {
|
||||
var expected = [ 'line1\n', 'line2\n' ];
|
||||
var actual = [];
|
||||
var instantiated = false;
|
||||
|
||||
test.expect(2);
|
||||
|
||||
var writable = new Writable(function() {
|
||||
instantiated = true;
|
||||
return new DummyWritable(actual);
|
||||
});
|
||||
|
||||
test.equal(instantiated, false, 'DummyWritable should only be instantiated when it is needed');
|
||||
|
||||
writable.on('end', function() {
|
||||
test.equal(actual.join(''), expected.join(''), 'Writable should not change the data of the underlying stream');
|
||||
test.done();
|
||||
});
|
||||
|
||||
expected.forEach(function(item) {
|
||||
writable.write(new Buffer(item));
|
||||
});
|
||||
writable.end();
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user