strong-tie/inbound-calls
0
1'use strict'2 3const { join } = require('path')4const { fork } = require('child_process')5const fs = require('fs')6const SonicBoom = require('../')7const { file, runTests } = require('./helper')8 9runTests(buildTests)10 11function buildTests (test, sync) {12 // Reset the umask for testing13 process.umask(0o000)14 15 test('end after reopen', (t) => {16 t.plan(4)17 18 const dest = file()19 const stream = new SonicBoom({ dest, minLength: 4096, sync })20 21 stream.once('ready', () => {22 t.pass('ready emitted')23 const after = dest + '-moved'24 stream.reopen(after)25 stream.write('after reopen\n')26 stream.on('finish', () => {27 t.pass('finish emitted')28 fs.readFile(after, 'utf8', (err, data) => {29 t.error(err)30 t.equal(data, 'after reopen\n')31 })32 })33 stream.end()34 })35 })36 37 test('end after 2x reopen', (t) => {38 t.plan(4)39 40 const dest = file()41 const stream = new SonicBoom({ dest, minLength: 4096, sync })42 43 stream.once('ready', () => {44 t.pass('ready emitted')45 stream.reopen(dest + '-moved')46 const after = dest + '-moved-moved'47 stream.reopen(after)48 stream.write('after reopen\n')49 stream.on('finish', () => {50 t.pass('finish emitted')51 fs.readFile(after, 'utf8', (err, data) => {52 t.error(err)53 t.equal(data, 'after reopen\n')54 })55 })56 stream.end()57 })58 })59 60 test('end if not ready', (t) => {61 t.plan(3)62 63 const dest = file()64 const stream = new SonicBoom({ dest, minLength: 4096, sync })65 const after = dest + '-moved'66 stream.reopen(after)67 stream.write('after reopen\n')68 stream.on('finish', () => {69 t.pass('finish emitted')70 fs.readFile(after, 'utf8', (err, data) => {71 t.error(err)72 t.equal(data, 'after reopen\n')73 })74 })75 stream.end()76 })77 78 test('chunk data accordingly', (t) => {79 t.plan(2)80 81 const child = fork(join(__dirname, '..', 'fixtures', 'firehose.js'), { silent: true })82 const str = Buffer.alloc(10000).fill('a').toString()83 84 let data = ''85 86 child.stdout.on('data', function (chunk) {87 data += chunk.toString()88 })89 90 child.stdout.on('end', function () {91 t.equal(data, str)92 })93 94 child.on('close', function (code) {95 t.equal(code, 0)96 })97 })98}99 