99 lines
2.3 KiB
JavaScript
99 lines
2.3 KiB
JavaScript
'use strict'
|
|
|
|
const { join } = require('path')
|
|
const { fork } = require('child_process')
|
|
const fs = require('fs')
|
|
const SonicBoom = require('../')
|
|
const { file, runTests } = require('./helper')
|
|
|
|
runTests(buildTests)
|
|
|
|
function buildTests (test, sync) {
|
|
// Reset the umask for testing
|
|
process.umask(0o000)
|
|
|
|
test('end after reopen', (t) => {
|
|
t.plan(4)
|
|
|
|
const dest = file()
|
|
const stream = new SonicBoom({ dest, minLength: 4096, sync })
|
|
|
|
stream.once('ready', () => {
|
|
t.pass('ready emitted')
|
|
const after = dest + '-moved'
|
|
stream.reopen(after)
|
|
stream.write('after reopen\n')
|
|
stream.on('finish', () => {
|
|
t.pass('finish emitted')
|
|
fs.readFile(after, 'utf8', (err, data) => {
|
|
t.error(err)
|
|
t.equal(data, 'after reopen\n')
|
|
})
|
|
})
|
|
stream.end()
|
|
})
|
|
})
|
|
|
|
test('end after 2x reopen', (t) => {
|
|
t.plan(4)
|
|
|
|
const dest = file()
|
|
const stream = new SonicBoom({ dest, minLength: 4096, sync })
|
|
|
|
stream.once('ready', () => {
|
|
t.pass('ready emitted')
|
|
stream.reopen(dest + '-moved')
|
|
const after = dest + '-moved-moved'
|
|
stream.reopen(after)
|
|
stream.write('after reopen\n')
|
|
stream.on('finish', () => {
|
|
t.pass('finish emitted')
|
|
fs.readFile(after, 'utf8', (err, data) => {
|
|
t.error(err)
|
|
t.equal(data, 'after reopen\n')
|
|
})
|
|
})
|
|
stream.end()
|
|
})
|
|
})
|
|
|
|
test('end if not ready', (t) => {
|
|
t.plan(3)
|
|
|
|
const dest = file()
|
|
const stream = new SonicBoom({ dest, minLength: 4096, sync })
|
|
const after = dest + '-moved'
|
|
stream.reopen(after)
|
|
stream.write('after reopen\n')
|
|
stream.on('finish', () => {
|
|
t.pass('finish emitted')
|
|
fs.readFile(after, 'utf8', (err, data) => {
|
|
t.error(err)
|
|
t.equal(data, 'after reopen\n')
|
|
})
|
|
})
|
|
stream.end()
|
|
})
|
|
|
|
test('chunk data accordingly', (t) => {
|
|
t.plan(2)
|
|
|
|
const child = fork(join(__dirname, '..', 'fixtures', 'firehose.js'), { silent: true })
|
|
const str = Buffer.alloc(10000).fill('a').toString()
|
|
|
|
let data = ''
|
|
|
|
child.stdout.on('data', function (chunk) {
|
|
data += chunk.toString()
|
|
})
|
|
|
|
child.stdout.on('end', function () {
|
|
t.equal(data, str)
|
|
})
|
|
|
|
child.on('close', function (code) {
|
|
t.equal(code, 0)
|
|
})
|
|
})
|
|
}
|