@interaktiv/dia-scripts
Version:
CLI toolbox with common scripts for most sort of projects at DIA
91 lines (79 loc) • 2.65 kB
JavaScript
;
var _serializers = require("./__tests__/helpers/serializers");
expect.addSnapshotSerializer(_serializers.unquoteSerializer);
let crossSpawnSyncMock, originalEnvs, originalLog, originalExit;
describe('travis-after-success', () => {
beforeEach(() => {
({
sync: crossSpawnSyncMock
} = require('cross-spawn'));
originalLog = console.log;
console.log = jest.fn();
originalExit = process.exit;
process.exit = jest.fn();
});
afterEach(() => {
console.log = originalLog;
process.exit = originalExit;
jest.resetModules();
});
test.each`
title | args
${'does not do the codecov script by default'} | ${{}}
${'does not do the codecov script when there is no coverage directory'} | ${{
hasCoverageDir: false
}}
${'does do the codecov script when opted in (via CI)'} | ${{
skipCodeCov: false
}}
${'does do the codecov script when opted in (via .opt-in)'} | ${{
isOptedInForCoverage: true
}}
${'does not do autorelease script when running on travis but in a pull request'} | ${{
env: {
TRAVIS: 'true',
TRAVIS_BRANCH: 'master',
TRAVIS_PULL_REQUEST: 'true'
},
runsNothing: true
}}
`('$title', ({
args = {}
}) => {
const {
hasCoverageDir = true,
isOptedInForCoverage = false,
skipCodeCov = true,
env = {
TRAVIS: 'true',
TRAVIS_BRANCH: 'master',
TRAVIS_PULL_REQUEST: 'false'
},
runsNothing = false
} = args; // Before each
originalEnvs = Object.keys(env).map(envKey => {
const orig = process.env[envKey];
process.env[envKey] = env[envKey];
return orig;
});
const utils = require('../utils');
utils.resolveBin = (modName, {
executable = modName
} = {}) => executable;
utils.hasFile = () => hasCoverageDir;
utils.isOptedIn = optIn => optIn === 'reportcoverage' && isOptedInForCoverage;
process.env.SKIP_CODECOV = skipCodeCov;
require('./travis-after-success');
if (runsNothing) {
expect(console.log.mock.calls).toMatchSnapshot();
return;
}
expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1);
const [firstCall] = crossSpawnSyncMock.mock.calls;
const [scriptOne, calledArgsOne] = firstCall;
expect([scriptOne, ...calledArgsOne].join(' ')).toMatchSnapshot(); // After each
Object.keys(originalEnvs).forEach(envKey => {
process.env[envKey] = env[envKey];
});
});
});