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