tests: jshn: add more test cases
[project/libubox.git] / tests / cram / test_jshn.t
1 set jshn for convenience:
2
3 $ [ -n "$JSHN" ] && export PATH="$(dirname "$JSHN"):$PATH"
4 $ alias jshn="valgrind --quiet --leak-check=full jshn"
5
6 check usage:
7
8 $ jshn
9 Usage: jshn [-n] [-i] -r <message>|-R <file>|-o <file>|-p <prefix>|-w
10 [2]
11
12 test bad json:
13
14 $ jshn -r '[]'
15 Failed to parse message data
16 [1]
17
18 test good json:
19
20 $ jshn -r '{"foo": "bar", "baz": {"next": "meep"}}'
21 json_init;
22 json_add_string 'foo' 'bar';
23 json_add_object 'baz';
24 json_add_string 'next' 'meep';
25 json_close_object;
26
27 test json from file:
28
29 $ echo '[]' > test.json; jshn -R test.json
30 Failed to parse message data
31 [1]
32
33 $ jshn -R nada.json
34 Error opening nada.json
35 [3]
36
37 $ echo '{"foo": "bar", "baz": {"next": "meep"}}' > test.json; jshn -R test.json
38 json_init;
39 json_add_string 'foo' 'bar';
40 json_add_object 'baz';
41 json_add_string 'next' 'meep';
42 json_close_object;
43
44 test json formatting without prepared environment:
45
46 $ jshn -p procd -w
47 { }
48
49 $ jshn -i -p procd -w
50 {
51 \t (esc)
52 }
53
54 $ jshn -i -n -p procd -w
55 {
56 \t (esc)
57 } (no-eol)
58
59 $ jshn -p procd -o test.json; cat test.json
60 { }
61
62 $ jshn -i -p procd -o test.json; cat test.json
63 {
64 \t (esc)
65 }
66
67 $ jshn -i -n -p procd -o test.json; cat test.json
68 {
69 \t (esc)
70 } (no-eol)
71
72 $ chmod oug= test.json
73 $ jshn -i -n -p procd -o test.json
74 Error opening test.json
75 [3]
76 $ rm -f test.json
77
78 test json formatting with prepared environment:
79
80 $ export procdJSON_CUR=J_V
81 $ export procdJ_A3_1=/sbin/urngd
82 $ export procdJ_T1_instance1=J_T2
83 $ export procdJ_T2_command=J_A3
84 $ export procdJ_V_data=J_T5
85 $ export procdJ_V_instances=J_T1
86 $ export procdJ_V_name=urngd
87 $ export procdJ_V_script=/etc/init.d/urngd
88 $ export procdJ_V_triggers=J_A4
89 $ export procdK_J_A3=1
90 $ export procdK_J_A4=
91 $ export procdK_J_T1=instance1
92 $ export procdK_J_T2=command
93 $ export procdK_J_T5=
94 $ export procdK_J_V="name script instances triggers data"
95 $ export procdT_J_A3_1=string
96 $ export procdT_J_T1_instance1=object
97 $ export procdT_J_T2_command=array
98 $ export procdT_J_V_data=object
99 $ export procdT_J_V_instances=object
100 $ export procdT_J_V_name=string
101 $ export procdT_J_V_script=string
102 $ export procdT_J_V_triggers=array
103
104 $ jshn -p procd -w
105 { "name": "urngd", "script": "\/etc\/init.d\/urngd", "instances": { "instance1": { "command": [ "\/sbin\/urngd" ] } }, "triggers": [ ], "data": { } }
106
107 $ jshn -i -p procd -w
108 {
109 \t"name": "urngd", (esc)
110 \t"script": "/etc/init.d/urngd", (esc)
111 \t"instances": { (esc)
112 \t\t"instance1": { (esc)
113 \t\t\t"command": [ (esc)
114 \t\t\t\t"/sbin/urngd" (esc)
115 \t\t\t] (esc)
116 \t\t} (esc)
117 \t}, (esc)
118 \t"triggers": [ (esc)
119 \t\t (esc)
120 \t], (esc)
121 \t"data": { (esc)
122 \t\t (esc)
123 \t} (esc)
124 }
125
126 $ jshn -n -i -p procd -w
127 {
128 \t"name": "urngd", (esc)
129 \t"script": "/etc/init.d/urngd", (esc)
130 \t"instances": { (esc)
131 \t\t"instance1": { (esc)
132 \t\t\t"command": [ (esc)
133 \t\t\t\t"/sbin/urngd" (esc)
134 \t\t\t] (esc)
135 \t\t} (esc)
136 \t}, (esc)
137 \t"triggers": [ (esc)
138 \t\t (esc)
139 \t], (esc)
140 \t"data": { (esc)
141 \t\t (esc)
142 \t} (esc)
143 } (no-eol)
144
145 $ jshn -p procd -o test.json; cat test.json
146 { "name": "urngd", "script": "\/etc\/init.d\/urngd", "instances": { "instance1": { "command": [ "\/sbin\/urngd" ] } }, "triggers": [ ], "data": { } }
147
148 $ jshn -i -p procd -o test.json; cat test.json
149 {
150 \t"name": "urngd", (esc)
151 \t"script": "/etc/init.d/urngd", (esc)
152 \t"instances": { (esc)
153 \t\t"instance1": { (esc)
154 \t\t\t"command": [ (esc)
155 \t\t\t\t"/sbin/urngd" (esc)
156 \t\t\t] (esc)
157 \t\t} (esc)
158 \t}, (esc)
159 \t"triggers": [ (esc)
160 \t\t (esc)
161 \t], (esc)
162 \t"data": { (esc)
163 \t\t (esc)
164 \t} (esc)
165 }
166
167 $ jshn -n -i -p procd -o test.json; cat test.json
168 {
169 \t"name": "urngd", (esc)
170 \t"script": "/etc/init.d/urngd", (esc)
171 \t"instances": { (esc)
172 \t\t"instance1": { (esc)
173 \t\t\t"command": [ (esc)
174 \t\t\t\t"/sbin/urngd" (esc)
175 \t\t\t] (esc)
176 \t\t} (esc)
177 \t}, (esc)
178 \t"triggers": [ (esc)
179 \t\t (esc)
180 \t], (esc)
181 \t"data": { (esc)
182 \t\t (esc)
183 \t} (esc)
184 } (no-eol)
185
186 $ chmod oug= test.json
187 $ jshn -n -i -p procd -o test.json
188 Error opening test.json
189 [3]