mirror of https://github.com/lukechilds/node.git
Browse Source
PR-URL: https://github.com/nodejs/node/pull/12306 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>v6
DavidCai
8 years ago
committed by
Anna Henningsen
2 changed files with 76 additions and 0 deletions
@ -0,0 +1,66 @@ |
|||
// Flags: --expose-internals
|
|||
'use strict'; |
|||
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('fs'); |
|||
const path = require('path'); |
|||
const SyncWriteStream = require('internal/fs').SyncWriteStream; |
|||
|
|||
common.refreshTmpDir(); |
|||
|
|||
const filename = path.join(common.tmpDir, 'sync-write-stream.txt'); |
|||
|
|||
// Verify constructing the instance with defualt options.
|
|||
{ |
|||
const stream = new SyncWriteStream(1); |
|||
|
|||
assert.strictEqual(stream.fd, 1); |
|||
assert.strictEqual(stream.readable, false); |
|||
assert.strictEqual(stream.autoClose, true); |
|||
assert.strictEqual(stream.listenerCount('end'), 1); |
|||
} |
|||
|
|||
// Verify constructing the instance with specified options.
|
|||
{ |
|||
const stream = new SyncWriteStream(1, { autoClose: false }); |
|||
|
|||
assert.strictEqual(stream.fd, 1); |
|||
assert.strictEqual(stream.readable, false); |
|||
assert.strictEqual(stream.autoClose, false); |
|||
assert.strictEqual(stream.listenerCount('end'), 1); |
|||
} |
|||
|
|||
// Verfiy that the file will be writen synchronously.
|
|||
{ |
|||
const fd = fs.openSync(filename, 'w'); |
|||
const stream = new SyncWriteStream(fd); |
|||
const chunk = Buffer.from('foo'); |
|||
|
|||
assert.strictEqual(stream._write(chunk, null, common.mustCall(1)), true); |
|||
assert.strictEqual(fs.readFileSync(filename).equals(chunk), true); |
|||
} |
|||
|
|||
// Verify that the stream will unset the fd after destory().
|
|||
{ |
|||
const fd = fs.openSync(filename, 'w'); |
|||
const stream = new SyncWriteStream(fd); |
|||
|
|||
stream.on('close', common.mustCall(3)); |
|||
|
|||
assert.strictEqual(stream.destroy(), true); |
|||
assert.strictEqual(stream.fd, null); |
|||
assert.strictEqual(stream.destroy(), true); |
|||
assert.strictEqual(stream.destroySoon(), true); |
|||
} |
|||
|
|||
// Verfit that the 'end' event listener will also destroy the stream.
|
|||
{ |
|||
const fd = fs.openSync(filename, 'w'); |
|||
const stream = new SyncWriteStream(fd); |
|||
|
|||
assert.strictEqual(stream.fd, fd); |
|||
|
|||
stream.emit('end'); |
|||
assert.strictEqual(stream.fd, null); |
|||
} |
@ -0,0 +1,10 @@ |
|||
// Flags: --expose-internals
|
|||
'use strict'; |
|||
|
|||
require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('internal/fs'); |
|||
|
|||
assert.doesNotThrow(() => fs.assertEncoding()); |
|||
assert.doesNotThrow(() => fs.assertEncoding('utf8')); |
|||
assert.throws(() => fs.assertEncoding('foo'), /^Error: Unknown encoding: foo$/); |
Loading…
Reference in new issue