#!/usr/bin/env sh
#
#
# SPDX-License-Identifier: GPL-2.0-only

#set -x # uncomment for debug

usage () {
	printf "Usage: %s <lint|lint-stable|lint-extended> [--junit]\n" "$0"
}

#write to the junit xml file if --junit was specified
junit_write () {
	if [ "$JUNIT" -eq 1 ]; then
		echo "$1" >> "$XMLFILE"
	fi
}

#verify the first command line parameter
if [ -z "$1" ] || [ "$1" != "lint" ] && [ "$1" != "lint-stable" ]  && \
		[ "$1" != "lint-extended" ]; then
	usage
	exit 1
fi

LINTLOG=$(mktemp .tmpconfig.lintXXXXXX);
XMLFILE="$(dirname "$0")/junit.xml"
if [ "$1" = "lint-extended" ]; then
	XMLFILE="$(dirname "$0")/extended-junit.xml"
fi
FAILED=0;

#check optional second command line parameter.
if [ "$2" = "--junit" ]; then
	JUNIT=1
	echo '<?xml version="1.0" encoding="utf-8"?>' > "$XMLFILE"
	junit_write '<testsuite>'
else
	JUNIT=0
fi

#run all scripts of the requested type
for script in "$(dirname "$0")/${1}-"*; do
	printf "%s " "$(grep '^# DESCR:' "$script" | sed 's,.*DESCR: *,,')"
	printf "(%s): " "$(basename "$script")"
	junit_write "	<testcase classname='lint' name='$(basename "$script")'>"
	$script | tee "$LINTLOG"

	#if the lint script gives any output, that's a failure
	if [ "$(wc -l < "$LINTLOG")" -eq 0 ]; then
		echo "success"
		junit_write "		<system-out><![CDATA[success]]></system-out>"
	else
		echo "test failed"
		junit_write "		<failure type='testFailed'><![CDATA["
		junit_write "$(cat "$LINTLOG")"
		junit_write "]]></failure>"
		rm -f "$LINTLOG"
		FAILED=$(( FAILED + 1 ))
	fi
	junit_write '	</testcase>'
done

rm -f "$LINTLOG"
junit_write '</testsuite>'
test $FAILED -eq 0 || { echo "ERROR: $FAILED test(s) failed."; exit 1; };
