tests: jshn: add more test cases
[oweals/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]