1#!/bin/sh 2# Merge test results of individual tests or subdirectories. 3# Copyright (C) 2014-2022 Free Software Foundation, Inc. 4# This file is part of the GNU C Library. 5 6# The GNU C Library is free software; you can redistribute it and/or 7# modify it under the terms of the GNU Lesser General Public 8# License as published by the Free Software Foundation; either 9# version 2.1 of the License, or (at your option) any later version. 10 11# The GNU C Library is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# Lesser General Public License for more details. 15 16# You should have received a copy of the GNU Lesser General Public 17# License along with the GNU C Library; if not, see 18# <https://www.gnu.org/licenses/>. 19 20# usage: merge-test-results.sh -s objpfx subdir test-name... 21# (subdirectory tests; empty subdir at top level), or 22# merge-test-results.sh -t objpfx subdir-file-name subdir... 23# (top-level merge) 24 25set -e 26 27type=$1 28objpfx=$2 29shift 2 30 31case $type in 32 -s) 33 subdir=$1 34 shift 35 subdir=${subdir:+$subdir/} 36 for t in "$@"; do 37 if [ -s "$objpfx$t.test-result" ]; then 38 # This loop is called thousands of times even when there's 39 # nothing to do. Avoid using non-built-in commands (like 40 # /bin/head) where possible. We assume "echo" is typically a 41 # built-in. 42 IFS= read -r line < "$objpfx$t.test-result" 43 echo "$line" 44 else 45 echo "UNRESOLVED: $subdir$t" 46 fi 47 done 48 ;; 49 50 -t) 51 subdir_file_name=$1 52 shift 53 for d in "$@"; do 54 if [ -f "$objpfx$d/$subdir_file_name" ]; then 55 cat "$objpfx$d/$subdir_file_name" 56 else 57 echo "ERROR: test results for $d directory missing" 58 fi 59 done 60 ;; 61 62 *) 63 echo "unknown type $type" >&2 64 exit 1 65 ;; 66esac 67