UNPKG

concurrently

Version:
58 lines (57 loc) 2.93 kB
import { expect, it } from 'vitest'; import { ExpandArguments } from './expand-arguments.js'; const createCommandInfo = (command) => ({ command, name: '', }); it('returns command as is when no placeholders', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo foo'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo foo' }); }); it('single argument placeholder is replaced', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo {1}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo foo' }); }); it('argument placeholder is replaced and quoted properly', () => { const parser = new ExpandArguments(['foo bar']); const commandInfo = createCommandInfo('echo {1}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: "echo 'foo bar'" }); }); it('multiple single argument placeholders are replaced', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo {2} {1}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo bar foo' }); }); it('empty replacement with single placeholder and not enough passthrough arguments', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo {3}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo ' }); }); it('empty replacement with all placeholder and no passthrough arguments', () => { const parser = new ExpandArguments([]); const commandInfo = createCommandInfo('echo {@}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo ' }); }); it('empty replacement with combined placeholder and no passthrough arguments', () => { const parser = new ExpandArguments([]); const commandInfo = createCommandInfo('echo {*}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo ' }); }); it('all arguments placeholder is replaced', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo {@}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo foo bar' }); }); it('combined arguments placeholder is replaced', () => { const parser = new ExpandArguments(['foo', 'bar']); const commandInfo = createCommandInfo('echo {*}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: "echo 'foo bar'" }); }); it('escaped argument placeholders are not replaced', () => { const parser = new ExpandArguments(['foo', 'bar']); // Equals to single backslash on command line const commandInfo = createCommandInfo('echo \\{1} \\{@} \\{*}'); expect(parser.parse(commandInfo)).toEqual({ ...commandInfo, command: 'echo {1} {@} {*}' }); });