summaryrefslogtreecommitdiffstats
path: root/node_modules/fs-write-stream-atomic
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/fs-write-stream-atomic')
-rw-r--r--node_modules/fs-write-stream-atomic/.npmignore3
-rw-r--r--node_modules/fs-write-stream-atomic/.travis.yml11
-rw-r--r--node_modules/fs-write-stream-atomic/LICENSE15
-rw-r--r--node_modules/fs-write-stream-atomic/README.md35
-rw-r--r--node_modules/fs-write-stream-atomic/index.js176
-rw-r--r--node_modules/fs-write-stream-atomic/package.json63
-rw-r--r--node_modules/fs-write-stream-atomic/test/basic.js97
-rw-r--r--node_modules/fs-write-stream-atomic/test/chown.js44
-rw-r--r--node_modules/fs-write-stream-atomic/test/rename-eperm.js154
-rw-r--r--node_modules/fs-write-stream-atomic/test/rename-fail.js30
-rw-r--r--node_modules/fs-write-stream-atomic/test/slow-close.js40
-rw-r--r--node_modules/fs-write-stream-atomic/test/toolong.js29
12 files changed, 0 insertions, 697 deletions
diff --git a/node_modules/fs-write-stream-atomic/.npmignore b/node_modules/fs-write-stream-atomic/.npmignore
deleted file mode 100644
index 2f24c57..0000000
--- a/node_modules/fs-write-stream-atomic/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-coverage/
-.nyc_output/
diff --git a/node_modules/fs-write-stream-atomic/.travis.yml b/node_modules/fs-write-stream-atomic/.travis.yml
deleted file mode 100644
index 6894662..0000000
--- a/node_modules/fs-write-stream-atomic/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: node_js
-sudo: false
-before_install:
- - "npm -g install npm"
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
- - "4"
- - "5"
diff --git a/node_modules/fs-write-stream-atomic/LICENSE b/node_modules/fs-write-stream-atomic/LICENSE
deleted file mode 100644
index 19129e3..0000000
--- a/node_modules/fs-write-stream-atomic/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/fs-write-stream-atomic/README.md b/node_modules/fs-write-stream-atomic/README.md
deleted file mode 100644
index 9a15d05..0000000
--- a/node_modules/fs-write-stream-atomic/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# fs-write-stream-atomic
-
-Like `fs.createWriteStream(...)`, but atomic.
-
-Writes to a tmp file and does an atomic `fs.rename` to move it into
-place when it's done.
-
-First rule of debugging: **It's always a race condition.**
-
-## USAGE
-
-```javascript
-var fsWriteStreamAtomic = require('fs-write-stream-atomic')
-// options are optional.
-var write = fsWriteStreamAtomic('output.txt', options)
-var read = fs.createReadStream('input.txt')
-read.pipe(write)
-
-// When the write stream emits a 'finish' or 'close' event,
-// you can be sure that it is moved into place, and contains
-// all the bytes that were written to it, even if something else
-// was writing to `output.txt` at the same time.
-```
-
-### `fsWriteStreamAtomic(filename, [options])`
-
-* `filename` {String} The file we want to write to
-* `options` {Object}
- * `chown` {Object} User and group to set ownership after write
- * `uid` {Number}
- * `gid` {Number}
- * `encoding` {String} default = 'utf8'
- * `mode` {Number} default = `0666`
- * `flags` {String} default = `'w'`
-
diff --git a/node_modules/fs-write-stream-atomic/index.js b/node_modules/fs-write-stream-atomic/index.js
deleted file mode 100644
index 1690ff5..0000000
--- a/node_modules/fs-write-stream-atomic/index.js
+++ /dev/null
@@ -1,176 +0,0 @@
-var fs = require('graceful-fs')
-var Writable = require('readable-stream').Writable
-var util = require('util')
-var MurmurHash3 = require('imurmurhash')
-var iferr = require('iferr')
-var crypto = require('crypto')
-
-function murmurhex () {
- var hash = MurmurHash3('')
- for (var ii = 0; ii < arguments.length; ++ii) {
- hash.hash('' + arguments[ii])
- }
- return hash.result()
-}
-
-var invocations = 0
-function getTmpname (filename) {
- return filename + '.' + murmurhex(__filename, process.pid, ++invocations)
-}
-
-var setImmediate = global.setImmediate || setTimeout
-
-module.exports = WriteStreamAtomic
-
-// Requirements:
-// 1. Write everything written to the stream to a temp file.
-// 2. If there are no errors:
-// a. moves the temp file into its final destination
-// b. emits `finish` & `closed` ONLY after the file is
-// fully flushed and renamed.
-// 3. If there's an error, removes the temp file.
-
-util.inherits(WriteStreamAtomic, Writable)
-function WriteStreamAtomic (path, options) {
- if (!(this instanceof WriteStreamAtomic)) {
- return new WriteStreamAtomic(path, options)
- }
- Writable.call(this, options)
-
- this.__isWin = options && options.hasOwnProperty('isWin') ? options.isWin : process.platform === 'win32'
-
- this.__atomicTarget = path
- this.__atomicTmp = getTmpname(path)
-
- this.__atomicChown = options && options.chown
-
- this.__atomicClosed = false
-
- this.__atomicStream = fs.WriteStream(this.__atomicTmp, options)
-
- this.__atomicStream.once('open', handleOpen(this))
- this.__atomicStream.once('close', handleClose(this))
- this.__atomicStream.once('error', handleError(this))
-}
-
-// We have to suppress default finish emitting, because ordinarily it
-// would happen as soon as `end` is called on us and all of the
-// data has been written to our target stream. So we suppress
-// finish from being emitted here, and only emit it after our
-// target stream is closed and we've moved everything around.
-WriteStreamAtomic.prototype.emit = function (event) {
- if (event === 'finish') return this.__atomicStream.end()
- return Writable.prototype.emit.apply(this, arguments)
-}
-
-WriteStreamAtomic.prototype._write = function (buffer, encoding, cb) {
- var flushed = this.__atomicStream.write(buffer, encoding)
- if (flushed) return cb()
- this.__atomicStream.once('drain', cb)
-}
-
-function handleOpen (writeStream) {
- return function (fd) {
- writeStream.emit('open', fd)
- }
-}
-
-function handleClose (writeStream) {
- return function () {
- if (writeStream.__atomicClosed) return
- writeStream.__atomicClosed = true
- if (writeStream.__atomicChown) {
- var uid = writeStream.__atomicChown.uid
- var gid = writeStream.__atomicChown.gid
- return fs.chown(writeStream.__atomicTmp, uid, gid, iferr(cleanup, moveIntoPlace))
- } else {
- moveIntoPlace()
- }
- }
-
- function moveIntoPlace () {
- fs.rename(writeStream.__atomicTmp, writeStream.__atomicTarget, iferr(trapWindowsEPERM, end))
- }
-
- function trapWindowsEPERM (err) {
- if (writeStream.__isWin &&
- err.syscall && err.syscall === 'rename' &&
- err.code && err.code === 'EPERM'
- ) {
- checkFileHashes(err)
- } else {
- cleanup(err)
- }
- }
-
- function checkFileHashes (eperm) {
- var inprocess = 2
- var tmpFileHash = crypto.createHash('sha512')
- var targetFileHash = crypto.createHash('sha512')
-
- fs.createReadStream(writeStream.__atomicTmp)
- .on('data', function (data, enc) { tmpFileHash.update(data, enc) })
- .on('error', fileHashError)
- .on('end', fileHashComplete)
- fs.createReadStream(writeStream.__atomicTarget)
- .on('data', function (data, enc) { targetFileHash.update(data, enc) })
- .on('error', fileHashError)
- .on('end', fileHashComplete)
-
- function fileHashError () {
- if (inprocess === 0) return
- inprocess = 0
- cleanup(eperm)
- }
-
- function fileHashComplete () {
- if (inprocess === 0) return
- if (--inprocess) return
- if (tmpFileHash.digest('hex') === targetFileHash.digest('hex')) {
- return cleanup()
- } else {
- return cleanup(eperm)
- }
- }
- }
-
- function cleanup (err) {
- fs.unlink(writeStream.__atomicTmp, function () {
- if (err) {
- writeStream.emit('error', err)
- writeStream.emit('close')
- } else {
- end()
- }
- })
- }
-
- function end () {
- // We have to use our parent class directly because we suppress `finish`
- // events fired via our own emit method.
- Writable.prototype.emit.call(writeStream, 'finish')
-
- // Delay the close to provide the same temporal separation a physical
- // file operation would have– that is, the close event is emitted only
- // after the async close operation completes.
- setImmediate(function () {
- writeStream.emit('close')
- })
- }
-}
-
-function handleError (writeStream) {
- return function (er) {
- cleanupSync()
- writeStream.emit('error', er)
- writeStream.__atomicClosed = true
- writeStream.emit('close')
- }
- function cleanupSync () {
- try {
- fs.unlinkSync(writeStream.__atomicTmp)
- } finally {
- return
- }
- }
-}
diff --git a/node_modules/fs-write-stream-atomic/package.json b/node_modules/fs-write-stream-atomic/package.json
deleted file mode 100644
index b95ae2b..0000000
--- a/node_modules/fs-write-stream-atomic/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "_from": "fs-write-stream-atomic@^1.0.8",
- "_id": "fs-write-stream-atomic@1.0.10",
- "_inBundle": false,
- "_integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
- "_location": "/fs-write-stream-atomic",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "fs-write-stream-atomic@^1.0.8",
- "name": "fs-write-stream-atomic",
- "escapedName": "fs-write-stream-atomic",
- "rawSpec": "^1.0.8",
- "saveSpec": null,
- "fetchSpec": "^1.0.8"
- },
- "_requiredBy": [
- "/copy-concurrently",
- "/move-concurrently"
- ],
- "_resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "_shasum": "b47df53493ef911df75731e70a9ded0189db40c9",
- "_spec": "fs-write-stream-atomic@^1.0.8",
- "_where": "/home/pruss/Dev/3-minute-website/node_modules/move-concurrently",
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "bugs": {
- "url": "https://github.com/npm/fs-write-stream-atomic/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "deprecated": false,
- "description": "Like `fs.createWriteStream(...)`, but atomic.",
- "devDependencies": {
- "rimraf": "^2.4.4",
- "standard": "^5.4.1",
- "tap": "^2.3.1"
- },
- "directories": {
- "test": "test"
- },
- "homepage": "https://github.com/npm/fs-write-stream-atomic",
- "license": "ISC",
- "main": "index.js",
- "name": "fs-write-stream-atomic",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/fs-write-stream-atomic.git"
- },
- "scripts": {
- "test": "standard && tap --coverage test/*.js"
- },
- "version": "1.0.10"
-}
diff --git a/node_modules/fs-write-stream-atomic/test/basic.js b/node_modules/fs-write-stream-atomic/test/basic.js
deleted file mode 100644
index d0205e1..0000000
--- a/node_modules/fs-write-stream-atomic/test/basic.js
+++ /dev/null
@@ -1,97 +0,0 @@
-var fs = require('graceful-fs')
-var test = require('tap').test
-var path = require('path')
-var writeStream = require('../index.js')
-
-var rename = fs.rename
-fs.rename = function (from, to, cb) {
- setTimeout(function () {
- rename(from, to, cb)
- }, 100)
-}
-
-test('basic', function (t) {
- // open 10 write streams to the same file.
- // then write to each of them, and to the target
- // and verify at the end that each of them does their thing
- var target = path.resolve(__dirname, 'test.txt')
- var n = 10
-
- // We run all of our assertions twice:
- // once for finish, once for close
- // There are 6 assertions, two fixed, plus 4 lines in the file.
- t.plan(n * 2 * 6)
-
- var streams = []
- for (var i = 0; i < n; i++) {
- var s = writeStream(target)
- s.on('finish', verifier('finish', i))
- s.on('close', verifier('close', i))
- streams.push(s)
- }
-
- function verifier (ev, num) {
- return function () {
- if (ev === 'close') {
- t.equal(this.__emittedFinish, true, num + '. closed only after finish')
- } else {
- this.__emittedFinish = true
- t.equal(ev, 'finish', num + '. finished')
- }
-
- // make sure that one of the atomic streams won.
- var res = fs.readFileSync(target, 'utf8')
- var lines = res.trim().split(/\n/)
- lines.forEach(function (line, lineno) {
- var first = lines[0].match(/\d+$/)[0]
- var cur = line.match(/\d+$/)[0]
- t.equal(cur, first, num + '. line ' + lineno + ' matches')
- })
-
- var resExpr = /^first write \d+\nsecond write \d+\nthird write \d+\nfinal write \d+\n$/
- t.similar(res, resExpr, num + '. content matches')
- }
- }
-
- // now write something to each stream.
- streams.forEach(function (stream, i) {
- stream.write('first write ' + i + '\n')
- })
-
- // wait a sec for those writes to go out.
- setTimeout(function () {
- // write something else to the target.
- fs.writeFileSync(target, 'brutality!\n')
-
- // write some more stuff.
- streams.forEach(function (stream, i) {
- stream.write('second write ' + i + '\n')
- })
-
- setTimeout(function () {
- // Oops! Deleted the file!
- fs.unlinkSync(target)
-
- // write some more stuff.
- streams.forEach(function (stream, i) {
- stream.write('third write ' + i + '\n')
- })
-
- setTimeout(function () {
- fs.writeFileSync(target, 'brutality TWO!\n')
- streams.forEach(function (stream, i) {
- stream.end('final write ' + i + '\n')
- })
- }, 50)
- }, 50)
- }, 50)
-})
-
-test('cleanup', function (t) {
- fs.readdirSync(__dirname).filter(function (f) {
- return f.match(/^test.txt/)
- }).forEach(function (file) {
- fs.unlinkSync(path.resolve(__dirname, file))
- })
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/chown.js b/node_modules/fs-write-stream-atomic/test/chown.js
deleted file mode 100644
index 1733cf2..0000000
--- a/node_modules/fs-write-stream-atomic/test/chown.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-chown')
-
-test('chown works', function (t) {
- t.plan(1)
- var stream = writeStream(target, {chown: {uid: process.getuid(), gid: process.getgid()}})
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, false, 'no errors before close')
- })
- stream.end()
-})
-
-test('chown fails', function (t) {
- t.plan(1)
- fs.chown = function (file, uid, gid, cb) {
- cb(new Error('TEST BREAK'))
- }
- var stream = writeStream(target, {chown: {uid: process.getuid(), gid: process.getgid()}})
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/rename-eperm.js b/node_modules/fs-write-stream-atomic/test/rename-eperm.js
deleted file mode 100644
index b1be0f3..0000000
--- a/node_modules/fs-write-stream-atomic/test/rename-eperm.js
+++ /dev/null
@@ -1,154 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-rename-eperm1')
-var target2 = path.resolve(__dirname, 'test-rename-eperm2')
-var target3 = path.resolve(__dirname, 'test-rename-eperm3')
-
-test('rename eperm none existing file', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file does not exist
- _rename(src, dest, function (e) {
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- }
-
- var stream = writeStream(target, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error was caught')
- t.is(calledFinish, false, 'finish was called before close')
- })
- stream.end()
-})
-
-// test existing file with diff. content
-test('rename eperm existing file different content', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file that has another content than the
- // destination
- _rename(src, dest, function (e) {
- fs.writeFile(src, 'dest', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- fs.writeFile(target2, 'target', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- })
- })
- }
-
- var stream = writeStream(target2, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error was caught')
- t.is(calledFinish, false, 'finish was called before close')
- })
- stream.end()
-})
-
-// test existing file with the same content
-// test existing file with diff. content
-test('rename eperm existing file different content', function (t) {
- t.plan(2)
-
- var _rename = fs.rename
- fs.existsSync = function (src) {
- return true
- }
- fs.rename = function (src, dest, cb) {
- // simulate a failure during rename where the file
- // is renamed successfully but the process encounters
- // an EPERM error and the target file that has the same content than the
- // destination
- _rename(src, dest, function (e) {
- fs.writeFile(src, 'target2', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- fs.writeFile(target3, 'target2', function (writeErr) {
- if (writeErr) {
- return console.log('WRITEERR: ' + writeErr)
- }
-
- var err = new Error('TEST BREAK')
- err.syscall = 'rename'
- err.code = 'EPERM'
- cb(err)
- })
- })
- })
- }
-
- var stream = writeStream(target3, { isWin: true })
- var hadError = false
- var calledFinish = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('finish', function () {
- calledFinish = true
- })
- stream.on('close', function () {
- t.is(hadError, false, 'error was caught')
- t.is(calledFinish, true, 'finish was called before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- rimraf.sync(target2)
- rimraf.sync(target3)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/rename-fail.js b/node_modules/fs-write-stream-atomic/test/rename-fail.js
deleted file mode 100644
index 7e27f0b..0000000
--- a/node_modules/fs-write-stream-atomic/test/rename-fail.js
+++ /dev/null
@@ -1,30 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-rename')
-
-test('rename fails', function (t) {
- t.plan(1)
- fs.rename = function (src, dest, cb) {
- cb(new Error('TEST BREAK'))
- }
- var stream = writeStream(target)
- var hadError = false
- stream.on('error', function (er) {
- hadError = true
- console.log('#', er)
- })
- stream.on('close', function () {
- t.is(hadError, true, 'error before close')
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/slow-close.js b/node_modules/fs-write-stream-atomic/test/slow-close.js
deleted file mode 100644
index 9840a6e..0000000
--- a/node_modules/fs-write-stream-atomic/test/slow-close.js
+++ /dev/null
@@ -1,40 +0,0 @@
-'use strict'
-var fs = require('graceful-fs')
-var path = require('path')
-var test = require('tap').test
-var rimraf = require('rimraf')
-var writeStream = require('../index.js')
-
-var target = path.resolve(__dirname, 'test-chown')
-
-test('slow close', function (t) {
- t.plan(2)
- // The goal here is to simulate the "file close" step happening so slowly
- // that the whole close/rename process could finish before the file is
- // actually closed (and thus buffers truely flushed to the OS). In
- // previous versions of this module, this would result in the module
- // emitting finish & close before the file was fully written and in
- // turn, could break other layers that tried to read the new file.
- var realEmit = fs.WriteStream.prototype.emit
- var reallyClosed = false
- fs.WriteStream.prototype.emit = function (event) {
- if (event !== 'close') return realEmit.apply(this, arguments)
- setTimeout(function () {
- reallyClosed = true
- realEmit.call(this, 'close')
- }.bind(this), 200)
- }
- var stream = writeStream(target)
- stream.on('finish', function () {
- t.is(reallyClosed, true, "didn't finish before target was closed")
- })
- stream.on('close', function () {
- t.is(reallyClosed, true, "didn't close before target was closed")
- })
- stream.end()
-})
-
-test('cleanup', function (t) {
- rimraf.sync(target)
- t.end()
-})
diff --git a/node_modules/fs-write-stream-atomic/test/toolong.js b/node_modules/fs-write-stream-atomic/test/toolong.js
deleted file mode 100644
index f146cc5..0000000
--- a/node_modules/fs-write-stream-atomic/test/toolong.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var path = require('path')
-var test = require('tap').test
-var writeStream = require('../index.js')
-
-function repeat (times, string) {
- var output = ''
- for (var ii = 0; ii < times; ++ii) {
- output += string
- }
- return output
-}
-
-var target = path.resolve(__dirname, repeat(1000, 'test'))
-
-test('name too long', function (t) {
- t.plan(2)
- var stream = writeStream(target)
- var hadError = false
- stream.on('error', function (er) {
- if (!hadError) {
- t.is(er.code, 'ENAMETOOLONG', target.length + ' character name results in ENAMETOOLONG')
- hadError = true
- }
- })
- stream.on('close', function () {
- t.ok(hadError, 'got error before close')
- })
- stream.end()
-})