#!/bin/bash # ------------------ # This is a test script that checks that `sqlite_lint` subcommand works as expected. # ------------------ set -e set -x PS4='+(${BASH_SOURCE}:${LINENO}): ' cd "$(dirname "${BASH_SOURCE[0]}")/.." # Compile `gas` gas="/tmp/gas" go build -o $gas ./cmd test_schema_dir="pkg/schema/lint/test_schemas" # Check all failure cases for test_schema in "$test_schema_dir"/failure-*; do output=$($gas sqlite_lint "$test_schema") && { echo "Expected test to fail" exit 9 } # Should print the name of the file being linted if ! echo "$output" | grep -Fxq "Linting $test_schema"; then echo "Expected 'Linting $test_schema' in output" exit 10 fi done # Check success case success_schema="$test_schema_dir/success.sql" output=$($gas sqlite_lint $success_schema) || { echo "Expected test to succeed" exit 9 } # Should print the name of the file being linted if ! echo "$output" | grep -Fxq "Linting $success_schema"; then echo "Expected 'Linting $success_schema' in output" exit 10 fi # Notify success in green echo -e "\033[32mAll tests passed. Finished successfully.\033[0m"