Oh OK. Here is another version of the 3rd patch.

Firstly, I realized my own other mistake: I had improperly limited the *-* patterns in a few case when fixing shellcheck errors. Existing globs shouldn't be restricted. [I had been narrowly extending the "special case" rules below to just additionally match normalized things and nothing more, and then "solved" some shellcheck errors the wrong way.]

The intent with the 3rd patch is: if "food" is accepted then "foo-*" should also be. If we allow skipping the vendor we should also allow it to be provided, even if this isn't excised by the new canonicalization tests.

Secondly, fixed the testsuite to match that. That seems simpler, actually.

John

On 07/30/18 01:57, Ben Elliston wrote:
There are now two separate tests for config.sub. I would like the test results tracked separately.

Perhaps it is time to switch to a Dejagnu test harness. 😆

Ben
From 548e5b3d8e44f7d92bc89ab89c160bd84a94b2bc Mon Sep 17 00:00:00 2001
Message-Id: 
<548e5b3d8e44f7d92bc89ab89c160bd84a94b2bc.1532930564.git.John.Ericson@Obsidian.Systems>
In-Reply-To: 
<9051a145bff67a2a8da7b666a95106c78fb4bc5c.1532930564.git.John.Ericson@Obsidian.Systems>
References: 
<5a1abdc6448184ae853dec84bb22f97237588e21.1532930564.git.John.Ericson@Obsidian.Systems>
        
<9051a145bff67a2a8da7b666a95106c78fb4bc5c.1532930564.git.John.Ericson@Obsidian.Systems>
From: John Ericson <John.Ericson@Obsidian.Systems>
Date: Sun, 29 Jul 2018 22:18:29 -0400
Subject: [PATCH 3/3]     * config.sub: Make idemopotent     *
 testsuite/config-sub.sh: Add ideompotency tests
To: config-patches@gnu.org

---
 ChangeLog               |  5 ++++
 config.sub              | 57 +++++++++++++++++++++++++++--------------
 testsuite/config-sub.sh | 41 ++++++++++++++++++++++++-----
 3 files changed, 77 insertions(+), 26 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1db8ff9..c239b50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-30  John Ericson  <john.ericson@obsidian.systems>
+
+       * config.sub: Make idemopotent
+       * testsuite/config-sub.sh: Add ideompotency tests
+
 2018-07-30  John Ericson  <john.ericson@obsidian.systems>
 
        * testsuite/config-*.sh: Use `local rc` for better scoping
diff --git a/config.sub b/config.sub
index 52eb02e..893b60b 100755
--- a/config.sub
+++ b/config.sub
@@ -569,12 +569,14 @@ case $basic_machine in
        1750a | 580 \
        | a29k \
        | aarch64 | aarch64_be \
+       | abacus \
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | 
alpha64pca5[67] \
        | am33_2.0 \
        | arc | arceb \
        | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | 
armv[78][arm] \
        | avr | avr32 \
+       | asmjs \
        | ba \
        | be32 | be64 \
        | bfin \
@@ -654,6 +656,9 @@ case $basic_machine in
        leon|leon[3-9])
                basic_machine=sparc-$basic_machine
                ;;
+       m6811-* | m68hc11-* | m6812-* | m68hc12-* | m68hcs12x-* | nvptx-* | 
picochip-*)
+               os=${os:-none}
+               ;;
        m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=${os:-none}
@@ -664,6 +669,10 @@ case $basic_machine in
                basic_machine=s12z-unknown
                os=${os:-none}
                ;;
+       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+               basic_machine=s12z-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               os=${os:-none}
+               ;;
        ms1)
                basic_machine=mt-unknown
                ;;
@@ -674,6 +683,9 @@ case $basic_machine in
                basic_machine=$basic_machine-unknown
                os=${os:-none}
                ;;
+       xgate-*)
+               os=${os:-none}
+               ;;
        xscaleeb)
                basic_machine=armeb-unknown
                ;;
@@ -689,22 +701,26 @@ case $basic_machine in
          basic_machine=$basic_machine-pc
          ;;
        # Recognize the basic CPU types with company name.
-       580-* \
+       1750a-* | 580-* \
        | a29k-* \
        | aarch64-* | aarch64_be-* \
+       | abacus-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* \
+       | am33_2.0-* \
+       | arc-* | arceb-* \
+       | arm-*  | arm[lb]e-* | arme[lb]-* | armv*-* \
        | avr-* | avr32-* \
+       | asmjs-* \
        | ba-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | e2k-* | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | d10v-* | d30v-* | dlx-* | dsp16xx-* \
+       | e2k-* | elxsi-* | epiphany-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | ft32-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | hexagon-* \
@@ -714,8 +730,8 @@ case $basic_machine in
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | m5200-* | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* | 
v70-* | w65-* \
+       | m88110-* | m88k-* | maxq-* | mb-* | mcore-* | mep-* | metag-* \
        | microblaze-* | microblazeel-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
@@ -739,6 +755,7 @@ case $basic_machine in
        | mipsr5900-* | mipsr5900el-* \
        | mipstx39-* | mipstx39el-* \
        | mmix-* \
+       | mn10200-* | mn10300-* \
        | moxie-* \
        | mt-* \
        | msp430-* \
@@ -748,6 +765,7 @@ case $basic_machine in
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
        | or1k*-* \
+       | or32-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -755,14 +773,15 @@ case $basic_machine in
        | pyramid-* \
        | riscv-* | riscv32-* | riscv64-* \
        | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* 
| sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | score-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]ae[lb]-* | sh[23]e-* | 
she[lb]-* | sh[lb]e-* \
+       | sh[1234]e[lb]-* |  sh[12345][lb]e-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | 
sparclet-* \
        | sparclite-* \
        | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+       | spu-* \
        | tahoe-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
        | tron-* \
        | ubicom32-* \
        | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
@@ -787,9 +806,6 @@ case $basic_machine in
        3b*)
                basic_machine=we32k-att
                ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
        alliant | fx80)
                basic_machine=fx80-alliant
                ;;
@@ -805,9 +821,6 @@ case $basic_machine in
        amiga | amiga-*)
                basic_machine=m68k-unknown
                ;;
-       asmjs)
-               basic_machine=asmjs-unknown
-               ;;
        blackfin-*)
                basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                os=linux
@@ -1154,6 +1167,9 @@ case $basic_machine in
        sh5el)
                basic_machine=sh5le-unknown
                ;;
+       sh5el-*)
+               basic_machine=sh5le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
        simso-wrs)
                basic_machine=sparclite-wrs
                os=vxworks
@@ -1179,9 +1195,12 @@ case $basic_machine in
        sun386 | sun386i | roadrunner)
                basic_machine=i386-sun
                ;;
+       tile*-*)
+               os=${os:-linux-gnu}
+               ;;
        tile*)
                basic_machine=$basic_machine-unknown
-               os=linux-gnu
+               os=${os:-linux-gnu}
                ;;
        tx39)
                basic_machine=mipstx39-unknown
@@ -1354,7 +1373,7 @@ case $os in
             | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
             | aos* | aros* | cloudabi* | sortix* \
             | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | rtu* | xenix* \
+            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
             | knetbsd* | mirbsd* | netbsd* \
             | bitrig* | openbsd* | solidbsd* | libertybsd* \
             | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
diff --git a/testsuite/config-sub.sh b/testsuite/config-sub.sh
index 4d01ee0..bc8aa58 100644
--- a/testsuite/config-sub.sh
+++ b/testsuite/config-sub.sh
@@ -9,28 +9,55 @@
 # the alias expands to the expected canonical triplet.
 
 set -eu
+shopt -s lastpipe
 verbose=false
 
 run_config_sub()
 {
        local -i rc=0
+       numtests=0
+       name="checks"
        while read -r alias canonical ; do
                output=$(sh -eu ../config.sub "$alias")
                if test "$output" != "$canonical" ; then
                        echo "FAIL: $alias -> $output, but expected $canonical"
                        rc=1
                else
-                       $verbose && echo "PASS: $alias"
+                       $verbose && echo "PASS: $alias -> $canonical"
                fi
+               numtests+=1
        done < config-sub.data
        return $rc
 }
 
-if run_config_sub ; then
-       numtests=$(wc -l config-sub.data | cut -d' ' -f1)
-       $verbose || echo "PASS: config.sub checks ($numtests tests)"
-else
-       exit 1
+run_config_sub_idempotent()
+{
+       local -i rc=0
+       numtests=0
+       name="idempotency checks"
+       sed -r 's/\t+/\t/g' < config-sub.data | cut -f 2 | uniq | while read -r 
canonical ; do
+               output=$(sh -eu ../config.sub "$canonical")
+               if test "$output" != "$canonical" ; then
+                       echo "FAIL: $canonical -> $output, but $canonical 
should map to itself"
+                       rc=1
+               else
+                       $verbose && echo "PASS: $canonical -> $canonical"
+               fi
+               numtests+=1
+       done
+       return $rc
+}
+
+declare -i rc=0 numtests=0
+declare -a msgs=()
+
+for testsuite in run_config_sub run_config_sub_idempotent ; do
+       $testsuite || rc=1
+       echo "PASS: config.sub $name ($numtests tests)"
+done
+
+if (( rc == 0 )); then
+       $verbose || printf '%s\n' "${msgs[@]}"
 fi
 
-exit 0
+exit $rc
-- 
2.17.1

_______________________________________________
config-patches mailing list
config-patches@gnu.org
https://lists.gnu.org/mailman/listinfo/config-patches

Reply via email to