about summary refs log tree commit diff
path: root/scripts/merge-test-results.sh
blob: 6f49507612c46fc94ffda901ca2faa3537146c54 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/sh
# Merge test results of individual tests or subdirectories.
# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# The GNU C Library 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
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <https://www.gnu.org/licenses/>.

# usage: merge-test-results.sh -s objpfx subdir test-name...
# (subdirectory tests; empty subdir at top level), or
#        merge-test-results.sh -t objpfx subdir-file-name subdir...
# (top-level merge)

set -e

type=$1
objpfx=$2
shift 2

case $type in
  -s)
    subdir=$1
    shift
    subdir=${subdir:+$subdir/}
    for t in "$@"; do
      if [ -s "$objpfx$t.test-result" ]; then
	# This loop is called thousands of times even when there's
	# nothing to do.  Avoid using non-built-in commands (like
	# /bin/head) where possible.  We assume "echo" is typically a
	# built-in.
	IFS= read -r line < "$objpfx$t.test-result"
	echo "$line"
      else
	echo "UNRESOLVED: $subdir$t"
      fi
    done
    ;;

  -t)
    subdir_file_name=$1
    shift
    for d in "$@"; do
      if [ -f "$objpfx$d/$subdir_file_name" ]; then
	cat "$objpfx$d/$subdir_file_name"
      else
	echo "ERROR: test results for $d directory missing"
      fi
    done
    ;;

  *)
    echo "unknown type $type" >&2
    exit 1
    ;;
esac