1 | var test = require('tape');
|
2 | var parse = require('../').parse;
|
3 |
|
4 | test('expand environment variables', function (t) {
|
5 | t.same(parse('a $XYZ c', { XYZ: 'b' }), [ 'a', 'b', 'c' ]);
|
6 | t.same(parse('a${XYZ}c', { XYZ: 'b' }), [ 'abc' ]);
|
7 | t.same(parse('a${XYZ}c $XYZ', { XYZ: 'b' }), [ 'abc', 'b' ]);
|
8 | t.same(parse('"-$X-$Y-"', { X: 'a', Y: 'b' }), [ '-a-b-' ]);
|
9 | t.same(parse("'-$X-$Y-'", { X: 'a', Y: 'b' }), [ '-$X-$Y-' ]);
|
10 | t.same(parse('qrs"$zzz"wxy', { zzz: 'tuv' }), [ 'qrstuvwxy' ]);
|
11 | t.same(parse("qrs'$zzz'wxy", { zzz: 'tuv' }), [ 'qrs$zzzwxy' ]);
|
12 | t.same(parse("qrs${zzz}wxy"), [ 'qrswxy' ]);
|
13 | t.same(parse("qrs$wxy $"), [ 'qrs', '$' ]);
|
14 | t.same(parse('grep "xy$"'), [ 'grep', 'xy$' ]);
|
15 | t.same(parse("ab$x", { x: 'c' }), [ 'abc' ]);
|
16 | t.same(parse("ab\\$x", { x: 'c' }), [ 'ab$x' ]);
|
17 | t.same(parse("ab${x}def", { x: 'c' }), [ 'abcdef' ]);
|
18 | t.same(parse("ab\\${x}def", { x: 'c' }), [ 'ab${x}def' ]);
|
19 | t.same(parse('"ab\\${x}def"', { x: 'c' }), [ 'ab${x}def' ]);
|
20 |
|
21 | t.end();
|
22 | });
|
23 |
|
24 | test('environment variables with metacharacters', function (t) {
|
25 | t.same(parse('a $XYZ c', { XYZ: '"b"' }), [ 'a', '"b"', 'c' ]);
|
26 | t.same(parse('a $XYZ c', { XYZ: '$X', X: 5 }), [ 'a', '$X', 'c' ]);
|
27 | t.same(parse('a"$XYZ"c', { XYZ: "'xyz'" }), [ "a'xyz'c" ]);
|
28 |
|
29 | t.end();
|
30 | });
|
31 |
|
32 | test('special shell parameters', function (t) {
|
33 | var chars = '*@#?-$!0_'.split('');
|
34 | t.plan(chars.length);
|
35 |
|
36 | chars.forEach(function (c) {
|
37 | var env = {};
|
38 | env[c] = 'xxx';
|
39 | t.same(parse('a $' + c + ' c', env), [ 'a', 'xxx', 'c' ]);
|
40 | });
|
41 | });
|