-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathunit_tests.sh
More file actions
executable file
·368 lines (306 loc) · 9.34 KB
/
Copy pathunit_tests.sh
File metadata and controls
executable file
·368 lines (306 loc) · 9.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
#!/bin/bash
if [ -z "$SKDB_BIN" ]; then
if [ -z "$SKARGO_PROFILE" ]; then
SKARGO_PROFILE=dev
fi
SKDB_BIN="skargo run -q --profile $SKARGO_PROFILE -- "
fi
SKDB=$SKDB_BIN
pass() { printf "%-76s OK\n" "TEST $1:"; }
fail() { printf "%-76s FAILED\n" "TEST $1:"; }
if cat test/unit/test_unique.sql | $SKDB 2>&1 | grep -q UNIQUE
then
pass "UNIQUE"
else
fail "UNIQUE"
fi
if cat test/test_concat.sql | $SKDB | grep -q hellohello
then
pass "CONCAT"
else
fail "CONCAT"
fi
if cat test/test_notnull.sql | $SKDB 2>&1 | grep -E 'cannot insert NULL in column declared as NOT NULL' &> /dev/null
then
pass "NOT NULL"
else
fail "NOT NULL"
fi
if cat test/test_delete.sql | $SKDB | grep -v -q 22
then
pass "DELETE"
else
fail "DELETE"
fi
cat test/test_like.sql | $SKDB > /tmp/kk1
diff /tmp/kk1 test/unit/test_like.expected > /dev/null
if [ $? -eq 0 ]; then
pass "LIKE"
else
fail "LIKE"
fi
if cat test/join_select_order.sql | $SKDB --always-allow-joins | grep -q '4|6|4|4|1|4'
then
pass "JOIN ORDER"
else
fail "JOIN ORDER"
fi
if cat test/test_update.sql | $SKDB | grep -q '2|3'
then
pass "JOIN ORDER"
else
fail "JOIN ORDER"
fi
if cat test/primary_index.sql | $SKDB --show-used-indexes | grep -q 'USING INDEX: __skdb__t1_id'
then
pass "PRIMARY INDEX"
else
fail "PRIMARY INDEX"
fi
if cat test/insert_values.sql | $SKDB | grep -q '3'
then
pass "MULTIPLE INSERTS"
else
fail "MULTIPLE INSERTS"
fi
if cat test/test_not_like.sql | $SKDB | grep -q 'def'
then
pass "NOT LIKE"
else
fail "NOT LIKE"
fi
if cat test/aggr_union.sql | $SKDB | awk '{x+=$1}; END {print x}' | grep -q '11'
then
pass "AGGR UNION"
else
fail "AGGR UNION"
fi
if cat test/unit/test_joins.sql | $SKDB --always-allow-joins | tr '\n' S | grep -q '1|2|1|3S2|4||S1|2|1|3S1|2|1|3S2|4||S'
then
pass "JOIN"
else
fail "JOIN"
fi
if cat test/unit_parse_float.sql | $SKDB | tr '\n' S | grep -q '1000000000.0S10000000000.0S100000000000000.0S1.0e+15S1.0e-05S1.1e-05S9.0e-05S0.0001S0.0009S58.0S400.0S1.23456e-65S1000.0S-100000000000000.0S-1.0e+15S-0.0001S-1.0e-05S-1.0e-09S-1.0e-10S-58.0S-400.0S-1.23456e-65S-1000.0S1.0e+15S100000000000000.0S1000.0S400.0S58.0S0.0009S0.0001S0.0001S9.0e-05S1.1e-05S1.0e-05S1.0e-05S1.23456e-65S-1.23456e-65S-1.0e-09S-1.0e-08S-1.0e-05S-0.0001S-58.0S-400.0S-1000.0S-100000000000000.0S-1.0e+15'
then
pass "PARSE FLOAT"
else
fail "PARSE FLOAT"
fi
clang test/unit/utf8_string/make_utf8_insert_select.c -o /tmp/make_utf8_insert_select
/tmp/make_utf8_insert_select | $SKDB > /tmp/kk1
diff /tmp/kk1 test/unit/utf8_string/expected_string.txt > /dev/null
if [ $? -eq 0 ]; then
pass "UTF8"
else
fail "UTF8"
fi
./test_notify.sh
cat test/join_outside_of_reactive.sql | $SKDB 2> /tmp/kk1
diff /tmp/kk1 test/unit/join_outside_of_reactive.exp > /dev/null
if [ $? -eq 0 ]; then
pass "REACTIVE JOIN"
else
fail "REACTIVE JOIN"
fi
if cat test/insert_autoid.sql | $SKDB | grep -q "3"
then
pass "INSERT AUTOINCREMENT"
else
fail "INSERT AUTOINCREMENT"
fi
if cat test/unit/test_seqnum.sql | $SKDB | tr '\n' S | grep -q "123S122S"; then
pass "LOCAL SEQUENCE NUMBER"
else
fail "LOCAL SEQUENCE NUMBER"
fi
if cat test/unit/test_seqnum2.sql | $SKDB | tr '\n' S | grep -q "8S13S17S22"; then
pass "LOCAL SEQUENCE NUMBER 2"
else
fail "LOCAL SEQUENCE NUMBER 2"
fi
if cat test/unit/test_id.sql | $SKDB | tr '\n' S | grep -q "123S122S"; then
pass "ID"
else
fail "ID"
fi
if cat test/lower_upper.sql | $SKDB | grep -q "FOO|bar"; then
pass "LOWER/UPPER"
else
fail "LOWER/UPPER"
fi
if cat test/unit/test_insert_seqnum.sql | $SKDB | grep -q "|22"; then
pass "INSERT LOCAL SEQUENCE NUMBER"
else
fail "INSERT LOCAL SEQUENCE NUMBER"
fi
if cat test/unit/test_insert_id.sql | $SKDB | grep -q "|22"; then
pass "INSERT ID"
else
fail "INSERT ID"
fi
if cat test/unit/insert_select_id.sql | $SKDB | sort -u | wc -l | grep -q "12"; then
pass "INSERT SELECT ID"
else
fail "INSERT SELECT ID"
fi
if cat test/unit/insert_select_partial.sql | $SKDB | sort -u | wc -l | grep -q "6"; then
pass "INSERT SELECT PARTIAL"
else
fail "INSERT SELECT PARTIAL"
fi
if cat test/test_string_escaping_json.sql | $SKDB --format=json | grep -q '{"a":"\\"Hello world\\""}'; then
pass "STRING ESCAPING JSON"
else
fail "STRING ESCAPING JSON"
fi
if cat test/test_null_encoding_json.sql | $SKDB --format=json | grep -q '{"a":1,"b":null,"c":2}'; then
pass "NULL ENCODING JSON"
else
fail "NULL ENCODING JSON"
fi
if cat test/test_real.sql | $SKDB | grep -q "1"; then
pass "REAL"
else
fail "REAL"
fi
if cat test/test_missing_semi.sql | $SKDB | grep -q "22"; then
pass "MISSING SEMI"
else
fail "MISSING SEMI"
fi
if cat test/test_ignore_replace.sql | $SKDB | tr '\n' 'S' | grep -q "22|23S24|26S25|27S31|32S33|34S51|42|43S"; then
pass "IGNORE/REPLACE"
else
fail "IGNORE/REPLACE"
fi
if cat test/test_ignore_replace2.sql | $SKDB | tr '\n' 'S' | grep -q "50|1S50|2S"; then
pass "IGNORE/REPLACE2"
else
fail "IGNORE/REPLACE2"
fi
if cat test/test_underscore_alias.sql | $SKDB | grep -q "22"; then
pass "UNDERSCORE ALIAS"
else
fail "UNDERSCORE ALIAS"
fi
if cat test/create_index_if_not_exists.sql | $SKDB | grep -q "22"; then
pass "CREATE INDEX IF NOT EXISTS"
else
fail "CREATE INDEX IF NOT EXISTS"
fi
tmpfile=$(mktemp /tmp/testfile.XXXXXX)
tmpfile_dump=$(mktemp /tmp/testfile.XXXXXX)
rm -f "$tmpfile" "$tmpfile_dump"
$SKDB --init "$tmpfile"
cat test/unit/test_dump_index.sql | $SKDB --data "$tmpfile"
$SKDB dump --data "$tmpfile" > "$tmpfile_dump"
diff "$tmpfile_dump" test/unit/test_dump_index.exp > /dev/null
if [ $? -eq 0 ]; then
rm "$tmpfile" "$tmpfile_dump"
pass "DUMP INDEXES"
else
fail "DUMP INDEXES"
fi
if cat test/test_select_star_plus.sql | $SKDB | grep -q "22|23|45"; then
pass "STAR COMMA"
else
fail "STAR COMMA"
fi
if cat test/unit/test_default_values.sql | $SKDB | tr '\n' ' ' | grep -E -- '-?[0-9]+\|test1\|test2\|[0-9]{2}:[0-9]{2}:[0-9]{2}' | grep -E '[0-9]+\|\|foo' | grep -qE '[0-9]+\|bar\|hello' ; then
pass "DEFAULT VALUES"
else
fail "DEFAULT VALUES"
fi
if cat test/test_count_string.sql | $SKDB | grep -q "0"; then
pass "COUNT STRING"
else
fail "COUNT STRING"
fi
if cat test/test_insert_or_update.sql | $SKDB | grep -q "1|3"; then
pass "INSERT OR UPDATE"
else
fail "INSERT OR UPDATE"
fi
if cat test/test_table_dot_star.sql | $SKDB --always-allow-joins | grep -q "2|3|4|5|2|6"; then
pass "DOT STAR"
else
fail "DOT STAR"
fi
if cat test/unit/test_index_on_star.sql | $SKDB --show-used-indexes | grep -q "USING INDEX: v1_a"; then
pass "INDEX DOT STAR"
else
fail "INDEX DOT STAR"
fi
if cat test/limit_unit.sql | $SKDB | wc | tr ' ' 'S' | tr '\n' 'S' | grep -q "SSSSSS1SSSSSSS1SSSSSSS2S"; then
pass "LIMIT"
else
fail "LIMIT"
fi
if cat test/test_index_transaction.sql | $SKDB --show-used-indexes | tr ' ' 'S' | grep -q "USINGSINDEX:S__skdb__T1_a"; then
pass "TRANSACTION INDEX"
else
fail "TRANSACTION INDEX"
fi
if cat test/test_index_transaction2.sql | $SKDB --show-used-indexes | tr ' ' 'S' | grep -q "USINGSINDEX:S__skdb__T1_a"; then
pass "TRANSACTION INDEX 2"
else
fail "TRANSACTION INDEX 2"
fi
if cat test/unit/test_duplicate_join.sql | $SKDB --always-allow-joins | grep -q '1|1';
then
pass "DUPLICATE JOIN"
else
fail "DUPLICATE JOIN"
fi
if cat test/unit/test_datetime.sql | $SKDB | grep -qE '[0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]+\.[0-9]+\|[0-9]+\|[0-9]{2}/[0-9]{2}/[0-9]{2}\|[0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2}\|[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\|[0-9]+\.[0-9]+\|[0-9]+\|[0-9]{2}/[0-9]{2}/[0-9]{2}';
then
pass "DATETIME"
else
fail "DATETIME"
fi
if cat test/unit/test_create_table_as_select.sql | $SKDB | grep -q '1|1|2|2|read-only' ; then
pass "CREATE TABLE AS SELECT"
else
fail "CREATE TABLE AS SELECT"
fi
if cat test/unit/test_length.sql | $SKDB | grep -q '|0|||test|4|literal|7' ; then
pass "LENGTH"
else
fail "LENGTH"
fi
if cat test/unit/test_select_multiple_id.sql | $SKDB | sort | uniq | wc -l | xargs test 4 -eq; then
pass "MULTIPLE ID"
else
fail "MULTIPLE ID"
fi
for f in test/unit/checks/*.sql;
do
base=$(basename "$f" .sql)
if diff -q <(cat "test/unit/checks/$base.sql" | $SKDB --always-allow-joins 2>&1) "test/unit/checks/$base.exp" > /dev/null 2>&1; then
pass "SELECT CHECK - $base"
else
fail "SELECT CHECK - $base"
echo "Ran:"
cat "test/unit/checks/$base.sql"
echo "Got:"
cat "test/unit/checks/$base.sql" | $SKDB --always-allow-joins
echo "Wanted:"
cat "test/unit/checks/$base.exp"
fi
done
if cat test/unit/test_alter_table_add_col.sql | $SKDB | tr '\n' 'S' | grep -q '1|1S3|3S3S1|1S3|3S3|5S5S1|1S3|3S3|5S3|9S9S' ; then
pass "ALTER TABLE ADD COLUMN"
else
fail "ALTER TABLE ADD COLUMN"
fi
if cat test/unit/test_qualified_select_star.sql| $SKDB --always-allow-joins | tr '\n' 'S' | grep -q '100|1S100|1S' ; then
pass "QUALIFIED SELECT-STAR"
else
fail "QUALIFIED SELECT-STAR"
fi
if cat test/unit/test_alter_table_extract_col.sql | $SKDB --always-allow-joins | tr '\n' 'S' | grep -q '5|1|10|15S20|1|30|40S1|11S1|15S3|40S'; then
pass "EXTRACT COLUMN"
else
fail "EXTRACT COLUMN"
fi