| #!/bin/sh |
| # |
| # This file is part of the coreboot project. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; version 2 of the License. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| #set -x # uncomment for debug |
| |
| usage () { |
| printf "Usage: %s <lint|lint-stable> [--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" ]; then |
| usage |
| exit 1 |
| fi |
| |
| LINTLOG=$(mktemp .tmpconfig.lintXXXXX); |
| XMLFILE="$(dirname "$0")/junit.xml" |
| FAILED=0; |
| |
| #check optional second command line parameter. |
| #TODO: Add real command line handling if anything more is added |
| 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 "\n%s\n" "$(basename "$script")" |
| grep "^# DESCR:" "$script" | sed "s,.*DESCR: *,," |
| echo "========" |
| junit_write " <testcase classname='lint' name='$(basename "$script")'>" |
| $script > "$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:" |
| cat "$LINTLOG" |
| junit_write " <failure type='testFailed'><![CDATA[" |
| junit_write "$(cat "$LINTLOG")" |
| junit_write "]]></failure>" |
| rm -f "$LINTLOG" |
| FAILED=$(( FAILED + 1 )) |
| fi |
| echo "========" |
| junit_write ' </testcase>' |
| done |
| |
| rm -f "$LINTLOG" |
| junit_write '</testsuite>' |
| test $FAILED -eq 0 || { echo "ERROR: $FAILED test(s) failed."; exit 1; }; |