strong-tie/inbound-calls
0
1'use strict'2 3const fs = require('fs')4const path = require('path')5const SonicBoom = require('../')6const { file, runTests } = require('./helper')7 8const isWindows = process.platform === 'win32'9 10runTests(buildTests)11 12function buildTests (test, sync) {13 // Reset the umask for testing14 process.umask(0o000)15 16 test('mode', { skip: isWindows }, (t) => {17 t.plan(6)18 19 const dest = file()20 const mode = 0o66621 const stream = new SonicBoom({ dest, sync, mode })22 23 stream.on('ready', () => {24 t.pass('ready emitted')25 })26 27 t.ok(stream.write('hello world\n'))28 t.ok(stream.write('something else\n'))29 30 stream.end()31 32 stream.on('finish', () => {33 fs.readFile(dest, 'utf8', (err, data) => {34 t.error(err)35 t.equal(data, 'hello world\nsomething else\n')36 t.equal(fs.statSync(dest).mode & 0o777, stream.mode)37 })38 })39 })40 41 test('mode default', { skip: isWindows }, (t) => {42 t.plan(6)43 44 const dest = file()45 const defaultMode = 0o66646 const stream = new SonicBoom({ dest, sync })47 48 stream.on('ready', () => {49 t.pass('ready emitted')50 })51 52 t.ok(stream.write('hello world\n'))53 t.ok(stream.write('something else\n'))54 55 stream.end()56 57 stream.on('finish', () => {58 fs.readFile(dest, 'utf8', (err, data) => {59 t.error(err)60 t.equal(data, 'hello world\nsomething else\n')61 t.equal(fs.statSync(dest).mode & 0o777, defaultMode)62 })63 })64 })65 66 test('mode on mkdir', { skip: isWindows }, (t) => {67 t.plan(5)68 69 const dest = path.join(file(), 'out.log')70 const mode = 0o66671 const stream = new SonicBoom({ dest, mkdir: true, mode, sync })72 73 stream.on('ready', () => {74 t.pass('ready emitted')75 })76 77 t.ok(stream.write('hello world\n'))78 79 stream.flush()80 81 stream.on('drain', () => {82 fs.readFile(dest, 'utf8', (err, data) => {83 t.error(err)84 t.equal(data, 'hello world\n')85 t.equal(fs.statSync(dest).mode & 0o777, stream.mode)86 stream.end()87 })88 })89 })90 91 test('mode on append', { skip: isWindows }, (t) => {92 t.plan(5)93 94 const dest = file()95 fs.writeFileSync(dest, 'hello world\n', 'utf8', 0o422)96 const mode = isWindows ? 0o444 : 0o66697 const stream = new SonicBoom({ dest, append: false, mode, sync })98 99 stream.on('ready', () => {100 t.pass('ready emitted')101 })102 103 t.ok(stream.write('something else\n'))104 105 stream.flush()106 107 stream.on('drain', () => {108 fs.readFile(dest, 'utf8', (err, data) => {109 t.error(err)110 t.equal(data, 'something else\n')111 t.equal(fs.statSync(dest).mode & 0o777, stream.mode)112 stream.end()113 })114 })115 })116}117 