diff options
Diffstat (limited to 'deps/npm/test/lib/utils/cleanup-log-files.js')
-rw-r--r-- | deps/npm/test/lib/utils/cleanup-log-files.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/deps/npm/test/lib/utils/cleanup-log-files.js b/deps/npm/test/lib/utils/cleanup-log-files.js new file mode 100644 index 0000000000..ee2c11e62a --- /dev/null +++ b/deps/npm/test/lib/utils/cleanup-log-files.js @@ -0,0 +1,80 @@ +const t = require('tap') + +const requireInject = require('require-inject') +const glob = require('glob') +const rimraf = require('rimraf') +const mocks = { glob, rimraf } +const cleanup = requireInject('../../../lib/utils/cleanup-log-files.js', { + glob: (...args) => mocks.glob(...args), + rimraf: (...args) => mocks.rimraf(...args) +}) +const { basename } = require('path') + +const fs = require('fs') + +t.test('clean up those files', t => { + const cache = t.testdir({ + _logs: { + '1-debug.log': 'hello', + '2-debug.log': 'hello', + '3-debug.log': 'hello', + '4-debug.log': 'hello', + '5-debug.log': 'hello' + } + }) + const warn = (...warning) => t.fail('failed cleanup', { warning }) + return cleanup(cache, 3, warn).then(() => { + t.strictSame(fs.readdirSync(cache + '/_logs').sort(), [ + '3-debug.log', + '4-debug.log', + '5-debug.log' + ]) + }) +}) + +t.test('nothing to clean up', t => { + const cache = t.testdir({ + _logs: { + '4-debug.log': 'hello', + '5-debug.log': 'hello' + } + }) + const warn = (...warning) => t.fail('failed cleanup', { warning }) + return cleanup(cache, 3, warn).then(() => { + t.strictSame(fs.readdirSync(cache + '/_logs').sort(), [ + '4-debug.log', + '5-debug.log' + ]) + }) +}) + +t.test('glob fail', t => { + mocks.glob = (pattern, cb) => cb(new Error('no globbity')) + t.teardown(() => mocks.glob = glob) + const cache = t.testdir({}) + const warn = (...warning) => t.fail('failed cleanup', { warning }) + return cleanup(cache, 3, warn) +}) + +t.test('rimraf fail', t => { + mocks.rimraf = (file, cb) => cb(new Error('youll never rimraf me!')) + t.teardown(() => mocks.rimraf = rimraf) + + const cache = t.testdir({ + _logs: { + '1-debug.log': 'hello', + '2-debug.log': 'hello', + '3-debug.log': 'hello', + '4-debug.log': 'hello', + '5-debug.log': 'hello' + } + }) + const warnings = [] + const warn = (...warning) => warnings.push(basename(warning[2])) + return cleanup(cache, 3, warn).then(() => { + t.strictSame(warnings.sort((a, b) => a.localeCompare(b)), [ + '1-debug.log', + '2-debug.log' + ]) + }) +}) |