login/node_modules/exit/test/exit_test.js
Amruta Kawade 45b10ffd19
Adding node_modules for dependabot (#67)
* Bump lodash from 4.17.15 to 4.17.19 (#52)

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Amruta Kawade <65217380+AmrutaKawade@users.noreply.github.com>

* Bump @actions/core from 1.1.3 to 1.2.6 (#60)

Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.1.3 to 1.2.6.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Amruta Kawade <65217380+AmrutaKawade@users.noreply.github.com>

* updating node_nodules

* updated package-lock

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-12 14:58:40 +05:30

121 lines
3.8 KiB
JavaScript

'use strict';
/*
======== A Handy Little Nodeunit Reference ========
https://github.com/caolan/nodeunit
Test methods:
test.expect(numAssertions)
test.done()
Test assertions:
test.ok(value, [message])
test.equal(actual, expected, [message])
test.notEqual(actual, expected, [message])
test.deepEqual(actual, expected, [message])
test.notDeepEqual(actual, expected, [message])
test.strictEqual(actual, expected, [message])
test.notStrictEqual(actual, expected, [message])
test.throws(block, [error], [message])
test.doesNotThrow(block, [error], [message])
test.ifError(value)
*/
var fs = require('fs');
var exec = require('child_process').exec;
var _which = require('which').sync;
function which(command) {
try {
_which(command);
return command;
} catch (err) {
return false;
}
}
// Look for grep first (any OS). If not found (but on Windows) look for find,
// which is Windows' horribly crippled grep alternative.
var grep = which('grep') || process.platform === 'win32' && which('find');
exports['exit'] = {
setUp: function(done) {
this.origCwd = process.cwd();
process.chdir('test/fixtures');
done();
},
tearDown: function(done) {
process.chdir(this.origCwd);
done();
},
'grep': function(test) {
test.expect(1);
// Many unit tests depend on this.
test.ok(grep, 'A suitable "grep" or "find" program was not found in the PATH.');
test.done();
},
// The rest of the tests are built dynamically, to keep things sane.
};
// A few helper functions.
function normalizeLineEndings(s) {
return s.replace(/\r?\n/g, '\n');
}
// Capture command output, normalizing captured stdout to unix file endings.
function run(command, callback) {
exec(command, function(error, stdout) {
callback(error ? error.code : 0, normalizeLineEndings(stdout));
});
}
// Read a fixture file, normalizing file contents to unix file endings.
function fixture(filename) {
return normalizeLineEndings(String(fs.readFileSync(filename)));
}
function buildTests() {
// Build individual unit tests for command output.
var counts = [10, 100, 1000];
var outputs = [' stdout stderr', ' stdout', ' stderr'];
var pipes = ['', ' | ' + grep + ' "std"'];
counts.forEach(function(count) {
outputs.forEach(function(output) {
pipes.forEach(function(pipe) {
var command = 'node log.js 0 ' + count + output + ' 2>&1' + pipe;
exports['exit']['output (' + command + ')'] = function(test) {
test.expect(2);
run(command, function(code, actual) {
var expected = fixture(count + output.replace(/ /g, '-') + '.txt');
// Sometimes, the actual file lines are out of order on Windows.
// But since the point of this lib is to drain the buffer and not
// guarantee output order, we only test the length.
test.equal(actual.length, expected.length, 'should be the same length.');
// The "fail" lines in log.js should NOT be output!
test.ok(actual.indexOf('fail') === -1, 'should not output after exit is called.');
test.done();
});
};
});
});
});
// Build individual unit tests for exit codes.
var codes = [0, 1, 123];
codes.forEach(function(code) {
var command = 'node log.js ' + code + ' 10 stdout stderr';
exports['exit']['exit code (' + command + ')'] = function(test) {
test.expect(1);
run(command, function(actual) {
// The specified exit code should be passed through.
test.equal(actual, code, 'should exit with ' + code + ' error code.');
test.done();
});
};
});
}
// Don't bother building tests if grep wasn't found, otherwise everything will
// fail and the error will get lost.
if (grep) {
buildTests();
}