'use strict' var path = require('path') var test = require('tap').test var log = require('npmlog') var fs = require('graceful-fs') var configName = path.join(__dirname, path.basename(__filename, '.js')) + '-npmrc' // We use requireInject to get a fresh copy of // the npm singleton each time we require it. // If we didn't, we'd have shared state between // these various tests. var requireInject = require('require-inject') // Make sure existing environment vars don't muck up the test process.env = {} // Pretend that stderr is a tty regardless, so we can get consistent // results. process.stderr.isTTY = true test('setup', function (t) { fs.writeFileSync(configName, '') t.done() }) function getFreshNpm () { return requireInject.withEmptyCache('../../lib/npm.js', {npmlog: log}) } test('disabled', function (t) { t.plan(1) var npm = getFreshNpm() npm.load({userconfig: configName, progress: false}, function () { t.is(log.progressEnabled, false, 'should be disabled') }) }) test('enabled', function (t) { t.plan(1) var npm = getFreshNpm() npm.load({userconfig: configName, progress: true}, function () { t.is(log.progressEnabled, true, 'should be enabled') }) }) test('default', function (t) { t.plan(1) var npm = getFreshNpm() npm.load({userconfig: configName}, function () { t.is(log.progressEnabled, true, 'should be enabled') }) }) test('default-travis', function (t) { t.plan(1) process.env.TRAVIS = 'true' var npm = getFreshNpm() npm.load({userconfig: configName}, function () { t.is(log.progressEnabled, false, 'should be disabled') delete process.env.TRAVIS }) }) test('default-ci', function (t) { t.plan(1) process.env.CI = 'true' var npm = getFreshNpm() npm.load({userconfig: configName}, function () { t.is(log.progressEnabled, false, 'should be disabled') delete process.env.CI }) }) test('unicode-true', function (t) { var npm = getFreshNpm() npm.load({userconfig: configName, unicode: true}, function () { t.is(log.gauge._theme.hasUnicode, true, 'unicode will be selected') t.done() }) }) test('unicode-false', function (t) { var npm = getFreshNpm() npm.load({userconfig: configName, unicode: false}, function () { t.is(log.gauge._theme.hasUnicode, false, 'unicode will NOT be selected') t.done() }) }) test('cleanup', function (t) { fs.unlinkSync(configName) t.done() })