| #!/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; }; |