@@ -23,13 +23,74 @@ const equal = (input, expected = bash(input), options) => {
23
23
24
24
describe ( 'bash' , ( ) => {
25
25
const fixtures = [
26
- [ '{1\\.2}' , { } , [ '{1.2}' ] ] ,
27
- [ '{1\\.2}' , { keepEscaping : true } , [ '{1\\.2}' ] ] ,
26
+ // Single paired quotes
27
+ [ "''{x,y}" , { } , [ "x" , "y" ] ] ,
28
+ [ "''{x,y}" , { keepQuotes : true } , [ "''x" , "''y" ] ] ,
29
+ [ "a'b'c{x,y}" , { } , [ 'abcx' , 'abcy' ] ] ,
30
+ [ "a'b'c{x,y}" , { keepQuotes : true } , [ "a'b'cx" , "a'b'cy" ] ] ,
31
+ [ "'{x,x}'" , { } , [ '{x,x}' ] ] ,
32
+ [ "'{x,x}'" , { keepQuotes : true } , [ "'{x,x}'" ] ] ,
33
+ [ "{'x,x'}" , { } , [ '{x,x}' ] ] ,
34
+ [ "{'x,x'}" , { keepQuotes : true } , [ "{'x,x'}" ] ] ,
35
+ [ "{x','x}" , { } , [ '{x,x}' ] ] ,
36
+ [ "{x','x}" , { keepQuotes : true } , [ "{x','x}" ] ] ,
37
+ // Single unpaired quotes
38
+ [ "'{x,y}" , { } , [ "'x" , "'y" ] ] ,
39
+ [ "'{x,y}" , { keepQuotes : true } , [ "'x" , "'y" ] ] ,
40
+ [ "a'bc{x,y}" , { } , [ "a'bcx" , "a'bcy" ] ] ,
41
+ [ "a'bc{x,y}" , { keepQuotes : true } , [ "a'bcx" , "a'bcy" ] ] ,
42
+ // Double paired quotes
43
+ [ '""{x,y}' , { } , [ 'x' , 'y' ] ] ,
44
+ [ '""{x,y}' , { keepQuotes : true } , [ '""x' , '""y' ] ] ,
45
+ [ 'a"b"c{x,y}' , { } , [ 'abcx' , 'abcy' ] ] ,
46
+ [ 'a"b"c{x,y}' , { keepQuotes : true } , [ 'a"b"cx' , 'a"b"cy' ] ] ,
47
+ [ '"{x,x}"' , { } , [ '{x,x}' ] ] ,
48
+ [ '"{x,x}"' , { keepQuotes : true } , [ '"{x,x}"' ] ] ,
28
49
[ '{"x,x"}' , { } , [ '{x,x}' ] ] ,
50
+ [ '{"x,x"}' , { keepQuotes : true } , [ '{"x,x"}' ] ] ,
29
51
[ '{x","x}' , { } , [ '{x,x}' ] ] ,
30
- [ '\'{x,x}\'' , { } , [ '{x,x}' ] ] ,
52
+ [ '{x","x}' , { keepQuotes : true } , [ '{x","x}' ] ] ,
53
+ // Double unpaired quotes
54
+ [ '"{x,y}' , { } , [ '"x' , '"y' ] ] ,
55
+ [ '"{x,y}' , { keepQuotes : true } , [ '"x' , '"y' ] ] ,
56
+ [ 'a"bc{x,y}' , { } , [ 'a"bcx' , 'a"bcy' ] ] ,
57
+ [ 'a"bc{x,y}' , { keepQuotes : true } , [ 'a"bcx' , 'a"bcy' ] ] ,
58
+ // Paired backticks
59
+ [ '``{x,y}' , { } , [ 'x' , 'y' ] ] ,
60
+ [ '``{x,y}' , { keepQuotes : true } , [ '``x' , '``y' ] ] ,
61
+ [ 'a`b`c{x,y}' , { } , [ 'abcx' , 'abcy' ] ] ,
62
+ [ 'a`b`c{x,y}' , { keepQuotes : true } , [ 'a`b`cx' , 'a`b`cy' ] ] ,
63
+ [ '`{x,x}`' , { } , [ '{x,x}' ] ] ,
64
+ [ '`{x,x}`' , { keepQuotes : true } , [ '`{x,x}`' ] ] ,
65
+ [ '{`x,x`}' , { } , [ '{x,x}' ] ] ,
66
+ [ '{`x,x`}' , { keepQuotes : true } , [ '{`x,x`}' ] ] ,
31
67
[ '{x`,`x}' , { } , [ '{x,x}' ] ] ,
32
68
[ '{x`,`x}' , { keepQuotes : true } , [ '{x`,`x}' ] ] ,
69
+ // Unpaired backticks
70
+ [ '`{x,y}' , { } , [ '`x' , '`y' ] ] ,
71
+ [ '`{x,y}' , { keepQuotes : true } , [ '`x' , '`y' ] ] ,
72
+ [ 'a`bc{x,y}' , { } , [ 'a`bcx' , 'a`bcy' ] ] ,
73
+ [ 'a`bc{x,y}' , { keepQuotes : true } , [ 'a`bcx' , 'a`bcy' ] ] ,
74
+ // Mixed unpaired quotes
75
+ [ 'a\'b"c`{x,y}' , { } , [ 'a\'b"c`x' , 'a\'b"c`y' ] ] ,
76
+ [ 'a\'b"c`{x,y}' , { keepQuotes : true } , [ 'a\'b"c`x' , 'a\'b"c`y' ] ] ,
77
+ // Mixed quotes
78
+ [ `a\\'"'"b{x,y}` , { } , [ `a''bx` , `a''by` ] ] ,
79
+ [ 'a"\'`b`\'"c{x,y}' , { } , [ 'a\'`b`\'cx' , 'a\'`b`\'cy' ] ] ,
80
+ [ 'a"\'`b`\'"c{x,y}' , { keepQuotes : true } , [ 'a"\'`b`\'"cx' , 'a"\'`b`\'"cy' ] ] ,
81
+ // Escaped quotes
82
+ [ "\\'{x,y}" , { } , [ "'x" , "'y" ] ] ,
83
+ [ "\\'{x,y}" , { keepEscaping : true } , [ "\\'x" , "\\'y" ] ] ,
84
+ [ "a'b{x,y}\\'" , { } , [ "a'bx'" , "a'by'" ] ] ,
85
+ [ "a'b{x,y}\\'" , { keepEscaping : true } , [ "a'bx\\'" , "a'by\\'" ] ] ,
86
+ [ "a'b{x,y}\\'" , { keepQuotes : true } , [ "a'bx'" , "a'by'" ] ] ,
87
+ [ "a'b{x,y}\\'" , { keepEscaping : true , keepQuotes : true } , [ "a'bx\\'" , "a'by\\'" ] ] ,
88
+ [ "a'b{x,y}\\''" , { } , [ "ab{x,y}\\'" ] ] ,
89
+ [ "a'b{x,y}\\''" , { keepQuotes : true } , [ "a'b{x,y}\\''" ] ] ,
90
+ [ "a'\\'b{x,y}" , { keepQuotes : true } , [ "a''bx" , "a''by" ] ] ,
91
+ // Common
92
+ [ '{1\\.2}' , { } , [ '{1.2}' ] ] ,
93
+ [ '{1\\.2}' , { keepEscaping : true } , [ '{1\\.2}' ] ] ,
33
94
[ '\'{a,b}{{a,b},a,b}\'' , { } , [ '{a,b}{{a,b},a,b}' ] ] ,
34
95
[ 'A{b,{d,e},{f,g}}Z' , { } , [ 'AbZ' , 'AdZ' , 'AeZ' , 'AfZ' , 'AgZ' ] ] ,
35
96
[ 'PRE-{a,b}{{a,b},a,b}-POST' , { } , [ 'PRE-aa-POST' , 'PRE-ab-POST' , 'PRE-aa-POST' , 'PRE-ab-POST' , 'PRE-ba-POST' , 'PRE-bb-POST' , 'PRE-ba-POST' , 'PRE-bb-POST' ] ] ,
0 commit comments