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