source: frontend/node_modules/shell-quote/test/op.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.0 KB
Line 
1'use strict';
2
3var test = require('tape');
4var parse = require('../').parse;
5
6test('single operators', function (t) {
7 t.same(parse('beep | boop'), ['beep', { op: '|' }, 'boop']);
8 t.same(parse('beep|boop'), ['beep', { op: '|' }, 'boop']);
9 t.same(parse('beep \\| boop'), ['beep', '|', 'boop']);
10 t.same(parse('beep "|boop"'), ['beep', '|boop']);
11
12 t.same(parse('echo zing &'), ['echo', 'zing', { op: '&' }]);
13 t.same(parse('echo zing&'), ['echo', 'zing', { op: '&' }]);
14 t.same(parse('echo zing\\&'), ['echo', 'zing&']);
15 t.same(parse('echo "zing\\&"'), ['echo', 'zing\\&']);
16
17 t.same(parse('beep;boop'), ['beep', { op: ';' }, 'boop']);
18 t.same(parse('(beep;boop)'), [
19 { op: '(' }, 'beep', { op: ';' }, 'boop', { op: ')' }
20 ]);
21
22 t.same(parse('beep>boop'), ['beep', { op: '>' }, 'boop']);
23 t.same(parse('beep 2>boop'), ['beep', '2', { op: '>' }, 'boop']);
24 t.same(parse('beep<boop'), ['beep', { op: '<' }, 'boop']);
25
26 t.end();
27});
28
29test('double operators', function (t) {
30 t.same(parse('beep || boop'), ['beep', { op: '||' }, 'boop']);
31 t.same(parse('beep||boop'), ['beep', { op: '||' }, 'boop']);
32 t.same(parse('beep ||boop'), ['beep', { op: '||' }, 'boop']);
33 t.same(parse('beep|| boop'), ['beep', { op: '||' }, 'boop']);
34 t.same(parse('beep || boop'), ['beep', { op: '||' }, 'boop']);
35
36 t.same(parse('beep && boop'), ['beep', { op: '&&' }, 'boop']);
37 t.same(
38 parse('beep && boop || byte'),
39 ['beep', { op: '&&' }, 'boop', { op: '||' }, 'byte']
40 );
41 t.same(
42 parse('beep&&boop||byte'),
43 ['beep', { op: '&&' }, 'boop', { op: '||' }, 'byte']
44 );
45 t.same(
46 parse('beep\\&\\&boop||byte'),
47 ['beep&&boop', { op: '||' }, 'byte']
48 );
49 t.same(
50 parse('beep\\&&boop||byte'),
51 ['beep&', { op: '&' }, 'boop', { op: '||' }, 'byte']
52 );
53 t.same(
54 parse('beep;;boop|&byte>>blip'),
55 ['beep', { op: ';;' }, 'boop', { op: '|&' }, 'byte', { op: '>>' }, 'blip']
56 );
57
58 t.same(parse('beep 2>&1'), ['beep', '2', { op: '>&' }, '1']);
59
60 t.same(
61 parse('beep<(boop)'),
62 ['beep', { op: '<(' }, 'boop', { op: ')' }]
63 );
64 t.same(
65 parse('beep<<(boop)'),
66 ['beep', { op: '<' }, { op: '<(' }, 'boop', { op: ')' }]
67 );
68
69 t.end();
70});
71
72test('duplicating input file descriptors', function (t) {
73 // duplicating stdout to file descriptor 3
74 t.same(parse('beep 3<&1'), ['beep', '3', { op: '<&' }, '1']);
75
76 // duplicating stdout to file descriptor 0, i.e. stdin
77 t.same(parse('beep <&1'), ['beep', { op: '<&' }, '1']);
78
79 // closes stdin
80 t.same(parse('beep <&-'), ['beep', { op: '<&' }, '-']);
81
82 t.end();
83});
84
85test('here strings', function (t) {
86 t.same(parse('cat <<< "hello world"'), ['cat', { op: '<<<' }, 'hello world']);
87 t.same(parse('cat <<< hello'), ['cat', { op: '<<<' }, 'hello']);
88 t.same(parse('cat<<<hello'), ['cat', { op: '<<<' }, 'hello']);
89 t.same(parse('cat<<<"hello world"'), ['cat', { op: '<<<' }, 'hello world']);
90
91 t.end();
92});
93
94test('glob patterns', function (t) {
95 t.same(
96 parse('tap test/*.test.js'),
97 ['tap', { op: 'glob', pattern: 'test/*.test.js' }]
98 );
99
100 t.same(parse('tap "test/*.test.js"'), ['tap', 'test/*.test.js']);
101 t.end();
102});
Note: See TracBrowser for help on using the repository browser.