UNPKG

@zkochan/pnpm

Version:

A fast implementation of npm install

118 lines (82 loc) 3.16 kB
var test = require('tape'); var flags = require('../lib/flags'); var flag = require('../lib/flag'); test('flags: instance', function (t) { t.ok(flags() instanceof flags.Instance, 'instance of Flags'); t.end(); }); test('flags: instantiates with a list of flags', function (t) { var flg = flag('-t'); var flg2 = flag('-t2'); t.deepEqual(flags(flg).all(), [flg], 'with single flag'); t.deepEqual(flags([flg]).all(), [flg], 'with single flag in array'); t.deepEqual(flags([flg, flg2]).all(), [flg, flg2], 'with multiple flags in array'); t.deepEqual(flags(flg, flg2).all(), [flg, flg2], 'with multiple flags as arguments'); t.end(); }); test('flags: raw array of flags', function (t) { var flg = flag('-t'); var flgs = flags(flg); t.deepEqual(flgs.all(), [flg], 'list of flags'); t.end(); }); test('flags: add flag to collection', function (t) { var flg = flag('-t'); var flg2 = flag('-t2'); t.deepEqual(flags().add(flg).all(), [flg], 'added single flag'); t.deepEqual(flags().add([flg]).all(), [flg], 'added single flag in array'); t.deepEqual(flags().add([flg, flg2]).all(), [flg, flg2], 'added multiple flags in array'); t.deepEqual(flags().add(flg, flg2).all(), [flg, flg2], 'added multiple flags as arguments'); t.end(); }); test('flags: does not overwrite flag when adding to collection', function (t) { var flgs = flags(); var handler = function () {/* handler */}; var flg = flag('--test') .handler(handler); var flg2 = flag('--test', '-t'); flgs.add(flg); flgs.add(flg2); t.equal(flgs.all().length, 1, 'one uqique'); t.equal(flgs.findByName('test').handler().toString(), handler.bind(flg).toString(), 'same flg handler'); t.ok(flgs.findByName('-t'), 'adds missing names when flags match'); t.end(); }); test('flags: find flag by name', function (t) { var flg1 = flag('-t1', '--test1', '--another1'); var flg2 = flag('--test2', '-t2'); var flgs = flags(flg1, flg2); t.deepEqual(flgs.findByName('--test1'), flg1, 'by single name'); t.deepEqual(flgs.findByName(['--test1']), flg1, 'by single name in array'); t.deepEqual(flgs.findByName(['--test1', '-t1']), flg1, 'by multiple names in array'); t.deepEqual(flgs.findByName('--test1', '-t1'), flg1, 'by multiple names as arguments'); t.deepEqual(flgs.findByName('test1'), flg1, 'by single name with no dashes'); t.deepEqual(flgs.findByName(['test1', '-t1']), flg1, 'by multiple names with no dashes'); t.end(); }); test('flags: runs flags', function (t) { t.plan(5); var flg1Ran = false; var flg2Ran = false; var flg1 = flag('-t') .handler(function (value, done) { t.equal(value, 't value', 'passed in value'); flg1Ran = true; done(); }); var flg2 = flag('--test2') .handler(function (value, done) { t.equal(value, 'test2 value', 'passed in value'); t.ok(typeof done === 'function', 'passed in callback'); flg2Ran = true; done(); }); var flgs = flags(flg1, flg2); flgs.run({ t: 't value', test2: 'test2 value' }, function (err) { t.ok(flg1Ran, 'ran flag 1'); t.ok(flg2Ran, 'ran flag 2'); }); });