#!/bin/sh
set -e

# Verify that vera++ can run each individual rule without crashing.
# We feed a minimal C++ file to every installed rule and check the
# exit status is 0 (warnings are expected and acceptable).

tmpfile=$(mktemp --suffix=.cpp)
cat > "$tmpfile" <<'EOF'
// sample file for autopkgtest
#include <iostream>

int main()
{
    std::cout << "hello" << std::endl;
    return 0;
}
EOF

failures=0

for rule in /usr/lib/vera++/rules/*.tcl; do
    name=$(basename "$rule" .tcl)
    echo -n "Running rule $name ... "
    if vera++ --rule "$name" "$tmpfile" >/dev/null 2>&1; then
        echo "OK"
    else
        echo "FAIL (exit code $?)"
        failures=$((failures + 1))
    fi
done

rm -f "$tmpfile"

if [ "$failures" -ne 0 ]; then
    echo "$failures rule(s) failed"
    exit 1
fi

echo "All rules executed successfully."
