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