78 lines
1.6 KiB
JavaScript
78 lines
1.6 KiB
JavaScript
|
var test = require('tape')
|
||
|
var parse = require('../parser')
|
||
|
|
||
|
test('command sequencing', function (t) {
|
||
|
var expect = [
|
||
|
{
|
||
|
type: 'command',
|
||
|
command: { type: 'literal', value: 'echo' },
|
||
|
args: [
|
||
|
{ type: 'literal', value: 'ok' }
|
||
|
],
|
||
|
redirects: [],
|
||
|
env: {},
|
||
|
control: ';',
|
||
|
next: null
|
||
|
},
|
||
|
{
|
||
|
type: 'command',
|
||
|
command: { type: 'literal', value: 'echo' },
|
||
|
args: [
|
||
|
{ type: 'literal', value: 'ok2' }
|
||
|
],
|
||
|
redirects: [],
|
||
|
env: {},
|
||
|
control: ';',
|
||
|
next: null
|
||
|
},
|
||
|
];
|
||
|
|
||
|
debugger
|
||
|
t.deepEqual(parse('echo ok;echo ok2;'), expect,
|
||
|
'can separate commands with ";"')
|
||
|
|
||
|
t.deepEqual(parse('echo ok\necho ok2\n'), expect,
|
||
|
'can separate commands with "\\n"')
|
||
|
|
||
|
expect[0].control = '&'
|
||
|
t.deepEqual(parse('echo ok & echo ok2;'), expect,
|
||
|
'can separate commands with "&"')
|
||
|
|
||
|
t.end()
|
||
|
})
|
||
|
|
||
|
test('command chaining', function (t) {
|
||
|
var expect = [
|
||
|
{
|
||
|
type: 'command',
|
||
|
command: { type: 'literal', value: 'echo' },
|
||
|
args: [
|
||
|
{ type: 'literal', value: 'ok' }
|
||
|
],
|
||
|
redirects: [],
|
||
|
env: {},
|
||
|
control: '&&',
|
||
|
next: {
|
||
|
type: 'command',
|
||
|
command: { type: 'literal', value: 'echo' },
|
||
|
args: [
|
||
|
{ type: 'literal', value: 'ok2' }
|
||
|
],
|
||
|
redirects: [],
|
||
|
env: {},
|
||
|
control: ';',
|
||
|
next: null
|
||
|
}
|
||
|
}
|
||
|
];
|
||
|
|
||
|
['&&', '||'].forEach(function (operator) {
|
||
|
expect[0].control = operator
|
||
|
var ast = parse('echo ok ' + operator + ' echo ok2\n')
|
||
|
t.deepEqual(ast, expect, 'can chain commands with ' + operator)
|
||
|
})
|
||
|
|
||
|
t.end()
|
||
|
})
|
||
|
|