64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
'use strict'
|
|
|
|
const { test } = require('tap')
|
|
const fs = require('fs')
|
|
const proxyquire = require('proxyquire')
|
|
const { file } = require('./helper')
|
|
|
|
test('fsync with sync', (t) => {
|
|
t.plan(5)
|
|
|
|
const fakeFs = Object.create(fs)
|
|
fakeFs.fsyncSync = function (fd) {
|
|
t.pass('fake fs.fsyncSync called')
|
|
return fs.fsyncSync(fd)
|
|
}
|
|
const SonicBoom = proxyquire('../', {
|
|
fs: fakeFs
|
|
})
|
|
|
|
const dest = file()
|
|
const fd = fs.openSync(dest, 'w')
|
|
const stream = new SonicBoom({ fd, sync: true, fsync: true })
|
|
|
|
t.ok(stream.write('hello world\n'))
|
|
t.ok(stream.write('something else\n'))
|
|
|
|
stream.end()
|
|
|
|
const data = fs.readFileSync(dest, 'utf8')
|
|
t.equal(data, 'hello world\nsomething else\n')
|
|
})
|
|
|
|
test('fsync with async', (t) => {
|
|
t.plan(7)
|
|
|
|
const fakeFs = Object.create(fs)
|
|
fakeFs.fsyncSync = function (fd) {
|
|
t.pass('fake fs.fsyncSync called')
|
|
return fs.fsyncSync(fd)
|
|
}
|
|
const SonicBoom = proxyquire('../', {
|
|
fs: fakeFs
|
|
})
|
|
|
|
const dest = file()
|
|
const fd = fs.openSync(dest, 'w')
|
|
const stream = new SonicBoom({ fd, fsync: true })
|
|
|
|
t.ok(stream.write('hello world\n'))
|
|
t.ok(stream.write('something else\n'))
|
|
|
|
stream.end()
|
|
|
|
stream.on('finish', () => {
|
|
fs.readFile(dest, 'utf8', (err, data) => {
|
|
t.error(err)
|
|
t.equal(data, 'hello world\nsomething else\n')
|
|
})
|
|
})
|
|
stream.on('close', () => {
|
|
t.pass('close emitted')
|
|
})
|
|
})
|