| #!/bin/bash | |
| # SPDX-License-Identifier: GPL-2.0 | |
| # Copyright (c) 2017 Red Hat, Inc. All Rights Reserved. | |
| # | |
| # Compare test failures across runs | |
| # | |
| # Takes multiple "results" files as arguments, comprised of the | |
| # stdout from a ./check run, each containing a Failures: line. | |
| # | |
| # Outputs a table of failures for comparison across runs | |
| # | |
| filter_names() { | |
| sed -e s/btrfs/b/ \ | |
| -e s/cifs/c/g \ | |
| -e s/f2fs/f/g \ | |
| -e s/generic/g/g \ | |
| -e s/overlay/o/g \ | |
| -e s/shared/s/g \ | |
| -e s/udf/u/g \ | |
| -e s/xfs/x/g | |
| } | |
| # ALLFAILURES: A B C D E F G | |
| # THESEFAILURES: A C D G | |
| # We want to print the header (ALLFAILURES) and then | |
| # if a run didn't fail a particular test, print spaces instead | |
| # All tests that failed in any run, all on one line, unique | |
| ALLFAILURES=`grep -h ^Failures: $* \ | |
| | tr " " "\n" \ | |
| | sort | uniq \ | |
| | filter_names \ | |
| | tr "\n" " " \ | |
| | sed -e "s/^Failures: //g"` | |
| # Header | |
| echo "Failures:" | |
| echo $ALLFAILURES | |
| echo $ALLFAILURES | sed -e "s/./-/g" | |
| # Per-file failures | |
| for FILE in $*; do | |
| THESEFAILURES=`grep ^Failures: $FILE | filter_names` | |
| for FAILURE in $ALLFAILURES; do | |
| CELL=`echo $THESEFAILURES \ | |
| | grep -wo "$FAILURE" || echo $FAILURE | sed -e "s/./ /g"` | |
| echo -n "$CELL " | |
| done | |
| echo $FILE | |
| done |