#!/bin/bash usage() { echo "Usage: $0 tests-dir xml-out" } xml_out=$2 if [ -z "$xml_out" ]; then xml_out=/dev/null fi printf '\n' > "$xml_out" printf '\n' >> "$xml_out" printf ' \n' >> "$xml_out" failed= for dir in "$1"/*; do [ -d "$dir" ] || continue echo "Running test in $dir" printf ' \n' "$dir" >> "$xml_out" ret= for f in "$dir"/*; do [ -f "$f" ] || continue [ -x "$f" ] || continue "$f" 2>&1 | tee /tmp/out ret=$? if [ "$ret" -ne 0 ]; then echo "FAILED: $ret" failed+=" $dir" printf ' \n' "$f" "$ret" >> "$xml_out" # TODO: could use xml escaping... but current tests seems to # produce sane output cat /tmp/out >> "$xml_out" printf ' \n' >> "$xml_out" else echo "PASSED" fi done if [ -z "$ret" ]; then printf ' \n' "$dir" >> "$xml_out" fi printf ' \n' >> "$xml_out" done printf ' \n' >> "$xml_out" printf '\n' >> "$xml_out" if [ -n "$failed" ]; then exit 1 fi