sqlite-parquet-vtable/tests/test-queries

42 lines
1.2 KiB
Plaintext
Raw Normal View History

2018-03-05 02:05:26 +00:00
#!/bin/bash
set -euo pipefail
# For each files in tests/queries/*, mount that parquet file, run the query, and compare
# its output.
run_query() {
file=${1:?must provide testcase file}
2018-03-08 01:20:34 +00:00
query=${2:?must provide query to run}
2018-03-05 02:05:26 +00:00
basename=$(basename "$file")
cat <<EOF
.load parquet/libparquet
.testcase $basename
.bail on
2018-03-08 01:20:34 +00:00
CREATE VIRTUAL TABLE nulls USING parquet('$root/parquet-generator/100-rows-nulls.parquet');
CREATE VIRTUAL TABLE no_nulls1 USING parquet('$root/parquet-generator/100-rows-1.parquet');
CREATE VIRTUAL TABLE no_nulls2 USING parquet('$root/parquet-generator/100-rows-10.parquet');
2018-03-05 02:05:26 +00:00
$query
EOF
}
main() {
root=$(dirname "${BASH_SOURCE[0]}")/..
root=$(readlink -f "$root")
cd "$root"
queries=$(find tests/queries -type f -name '*.sql' | sort)
2018-03-05 02:05:26 +00:00
while read -r file; do
echo "Testing: $file"
2018-03-08 01:20:34 +00:00
query=$(head -n1 "$file" | tail -n1)
results=$(tail -n+2 "$file")
if ! "$root"/sqlite/sqlite3 -init <(run_query "$file" "$query") < /dev/null > testcase-stdout.txt 2> testcase-stderr.txt; then
2018-03-05 02:05:26 +00:00
echo "...FAILED; check testcase-{out,err}.txt" >&2
exit 1
fi
diff testcase-out.txt <(echo "$results")
done < <(echo "$queries")
}
main "$@"