config/testsuite/config-sub.sh
Dmitry V. Levin 948ae97ca5 Update copyright years
* config.guess: Update copyright years.
* config.sub: Likewise.
* testsuite/config-guess.sh: Likewise.
* testsuite/config-sub.sh: Likewise.
* doc/config.guess.1: Regenerate.
* doc/config.sub.1: Likewise.
2024-01-01 20:00:00 +00:00

120 lines
2.5 KiB
Bash

#!/bin/bash
#
# Copyright 2004-2024 Free Software Foundation, Inc.
# Contributed by Ben Elliston <bje@gnu.org>.
#
# This test reads pairs from config-sub.data: an alias and its
# canonical triplet. config.sub is invoked and the test checks that
# the alias expands to the expected canonical triplet.
set -eu
shopt -s lastpipe
verbose=false
maxprocs=16
# Run a single config.sub invocation.
run_one_config_sub()
{
alias=$1
canonical=$2
output=$(sh -eu ../config.sub "$alias")
if test "$output" != "$canonical" ; then
echo "FAIL: $alias -> $output, but expected $canonical"
return 1
else
$verbose && echo "PASS: $alias -> $canonical"
fi
return 0
}
run_config_sub()
{
local -i rc=0 jobs=0
numtests=0
name="checks"
while read -r alias canonical ; do
run_one_config_sub "$alias" "$canonical" &
numtests+=1 jobs+=1
if test $jobs -eq $maxprocs ; then
for pid in $(jobs -p) ; do
wait "$pid"
rc=$((rc || $?))
done
jobs=0
fi
done < config-sub.data
for pid in $(jobs -p) ; do
wait "$pid"
rc=$((rc || $?))
done
return $rc
}
# Run a single config.sub invocation for idempotency checks.
run_one_config_sub_idempotent()
{
canonical=$1
output=$(sh -eu ../config.sub "$canonical")
if test "$output" != "$canonical" ; then
echo "FAIL: $canonical -> $output, but $canonical should map to itself"
return 1
else
$verbose && echo "PASS: $canonical -> $canonical"
fi
return 0
}
run_config_sub_idempotent()
{
local -i rc=0 jobs=0
numtests=0
name="idempotency checks"
sed -r 's/\t+/\t/g' < config-sub.data | cut -f 2 | uniq | while read -r canonical ; do
run_one_config_sub_idempotent "$canonical" &
numtests+=1 jobs+=1
if test $jobs -eq $maxprocs ; then
for pid in $(jobs -p) ; do
wait "$pid"
rc=$((rc || $?))
done
jobs=0
fi
done
for pid in $(jobs -p) ; do
wait "$pid"
rc=$((rc || $?))
done
return $rc
}
run_config_sub_with_guess_triplets()
{
local -i rc=0
numtests=0
name="canonicalise each config.guess testcase"
awk -F '|' '{ print $6 }' < config-guess.data | while read -r triplet ; do
output=$(sh -eu ../config.sub "$triplet")
if test "$triplet" != "$output" ; then
echo "FAIL: $triplet -> $output, but $triplet should map to itself"
rc=1
fi
numtests+=1
done
return $rc
}
declare -i rc=0 numtests
declare name
for testsuite in run_config_sub run_config_sub_idempotent run_config_sub_with_guess_triplets ; do
if $testsuite; then
$verbose || echo "PASS: config.sub $name ($numtests tests)"
else
rc=1
fi
done
exit $rc