From 33e2d1dacb916bbb332ac7ee9ae8e1a519ee14f6 Mon Sep 17 00:00:00 2001 From: isaacs Date: Fri, 28 Jun 2019 23:18:32 -0700 Subject: [PATCH] fix flaky debug-logs test Total luxury problem. There are too many cores on my laptop, so commands kick off and complete too quickly, resulting in not properly demonstrating the behavior that this test is looking for. --- test/tap/debug-logs.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/test/tap/debug-logs.js b/test/tap/debug-logs.js index 8eb6c78049ea5..0e951c4bb082b 100644 --- a/test/tap/debug-logs.js +++ b/test/tap/debug-logs.js @@ -66,16 +66,28 @@ test('example', function (t) { t.matches(path.relative(cachedir, logfile), /^_logs/, 'debug log is inside the cache in _logs') } - // we run a bunch concurrently, this will actually create > than our limit as the check is done - // when the command starts - var todo = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + // we run a bunch concurrently, this will actually create > than our limit + // as the check is done when the command starts + // + // It has to be > the log count (10) but also significantly higher than + // the number of cores on the machine, or else some might be able to get + // to the log folder pruning logic in parallel, resulting in FEWER files + // than we expect being present at the end. + var procCount = Math.max(require('os').cpus().length * 2, 12) + var todo = new Array(procCount).join(',').split(',').map((v, k) => k) asyncMap(todo, function (num, next) { + // another way would be to just simulate this? + // var f = path.join(cachedir, '_logs', num + '-debug.log') + // require('fs').writeFile(f, 'log ' + num, next) common.npm(['run', '--logs-max=10', 'false'], conf, function (err, code) { if (err) throw err t.is(code, 1, 'run #' + num + ' errored as expected') next() }) }, function () { + var files = glob.sync(path.join(cachedir, '_logs', '*')) + t.ok(files.length > 10, 'there should be more than 10 log files') + // now we do one more and that should clean up the list common.npm(['run', '--logs-max=10', 'false'], conf, function (err, code) { if (err) throw err