1 # Oil builtins
2
3 #### repr
4 x=42
5 repr x
6 echo status=$?
7 repr nonexistent
8 echo status=$?
9 ## STDOUT:
10 x = (cell val:(value.Str s:42) exported:F readonly:F)
11 status=0
12 status=1
13 ## END
14
15 #### repr on indexed array with hole
16 declare -a array
17 array[3]=42
18 repr array
19 ## STDOUT:
20 array = (cell val:(value.MaybeStrArray strs:[_ _ _ 42]) exported:F readonly:F)
21 ## END
22
23
24 #### push onto a=(1 2)
25 shopt -s parse_at
26 a=(1 2)
27 push :a '3 4' '5'
28 argv.py @a
29 ## STDOUT:
30 ['1', '2', '3 4', '5']
31 ## END
32
33 #### push onto var a = @(1 2)
34 shopt -s parse_at
35 var a = @(1 2)
36 push a '3 4' '5' # : is optional
37 argv.py @a
38 ## STDOUT:
39 ['1', '2', '3 4', '5']
40 ## END
41
42 #### push with invalid type
43 s=''
44 push :s a b
45 echo status=$?
46 ## stdout: status=1
47
48 #### push with invalid var name
49 push - a b
50 echo status=$?
51 ## stdout: status=2
52
53 #### echo -sep, -end, -n, varying flag syntax
54 shopt -s oil:all
55 var a = @('a b' 'c d')
56 echo @a
57 echo .
58 echo -- @a
59 echo .
60
61 echo -sep '' -end '' @a; echo
62 echo .
63
64 echo -sep '_' -- @a
65 echo -sep '_' -end $' END\n' -- @a
66
67 # with =
68 echo -sep='_' -end=$' END\n' -- @a
69 # long flags
70 echo --sep '_' --end $' END\n' -- @a
71 # long flags with =
72 echo --sep='_' --end=$' END\n' -- @a
73
74 echo -n x
75 echo -n y
76 echo
77
78 ## STDOUT:
79 a b
80 c d
81 .
82 a b
83 c d
84 .
85 a bc d
86 .
87 a b_c d
88 a b_c d END
89 a b_c d END
90 a b_c d END
91 a b_c d END
92 xy
93 ## END
94
95 #### echo -e not supported
96 shopt -s oil:all
97 echo -e foo
98 echo status=$?
99 ## stdout-json: ""
100 ## status: 2
101
102 #### echo syntax error
103 shopt -s oil:all
104 echo ---end foo
105 echo status=$?
106 ## stdout-json: ""
107 ## status: 2
108
109 #### echo --
110 shopt -s oil:all
111 echo --
112 # This is annoying
113 echo -- --
114 echo done
115
116 # this is a syntax error! Doh.
117 echo ---
118 ## status: 2
119 ## STDOUT:
120
121 --
122 done
123 ## END