UNPKG

@interaktiv/dia-scripts

Version:

CLI toolbox with common scripts for most sort of projects at DIA

71 lines (65 loc) 2.32 kB
"use strict"; var _serializers = require("./__tests__/helpers/serializers"); expect.addSnapshotSerializer(_serializers.unquoteSerializer); expect.addSnapshotSerializer(_serializers.winPathSerializer); let crossSpawnSyncMock, originalArgv, originalExit; describe('pre-commit', () => { beforeEach(() => { ({ sync: crossSpawnSyncMock } = require('cross-spawn')); originalArgv = process.argv; originalExit = process.exit; process.exit = jest.fn(); }); afterEach(() => { process.exit = originalExit; process.argv = originalArgv; jest.resetModules(); }); it.each` title | params ${'calls lint-staged CLI with default args'} | ${{}} ${'does not use built-in config with --config'} | ${{ args: ['--config', './custom-config.js'] }} ${'does not use built-in config with .lintstagedrc file'} | ${{ hasFile: filename => filename === '.lintstagedrc' }} ${'does not use built-in config with lint-staged.config.js file'} | ${{ hasFile: filename => filename === 'lint-staged.config.js' }} ${'does not use built-in config with lint-staged pkg prop'} | ${{ hasPkgProp: prop => prop === 'lint-staged' }} ${'forwards args'} | ${{ args: ['--verbose'] }} `('$title', ({ params = {} }) => { const { args = [], utils = require('../utils'), hasPkgProp = () => false, hasFile = () => false } = params; Object.assign(utils, { hasPkgProp, hasFile, resolveBin: (modName, { executable = modName } = {}) => executable }); process.argv = ['node', '../pre-commit', ...args]; utils.isOptedIn = optIn => optIn === 'pre-commit'; utils.isOptedOut = optOut => optOut !== 'pre-commit'; require('./pre-commit'); expect(crossSpawnSyncMock).toHaveBeenCalledTimes(2); const [firstCall, secondCall] = crossSpawnSyncMock.mock.calls; const [scriptOne, calledArgsOne] = firstCall; expect([scriptOne, ...calledArgsOne].join(' ')).toMatchSnapshot(); const [scriptTwo, calledArgsTwo] = secondCall; expect([scriptTwo, ...calledArgsTwo].join(' ')).toMatchSnapshot(); }); });