coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: factor tests: ugly long file names


From: Bernhard Voelker
Subject: Re: factor tests: ugly long file names
Date: Sat, 27 Oct 2012 13:38:47 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1


On 10/27/2012 12:02 PM, Jim Meyering wrote:
> Berny,

Thanks for looking into this.

> Here are some changes I'd appreciate:
>   - shorten a regexp
>   - remove two mentions of tests/factor/run.sh in create-test.sh
>   - change create-test.sh to take 2 arguments
>   - change $testname to $test_name; more readable
>   - remove useless curly braces around ${t1} ${t2}.
>       The other uses are required, but not those.
>   - avoid the need for backslash-escaped slashes in TEMPLATE
>   - simply exec "sed"

Good points. Done.

I had to exempt the new test also for the backticks check:

  exclude_file_name_regexp--sc_prohibit_test_backticks = \
  -  ^tests/(init\.sh|local.mk|misc/stdbuf\.sh)$$
  +  ^tests/(init\.sh|local.mk|misc/stdbuf\.sh|factor/create-test.sh)$$

Additionally, I added this to the commit message:

  +    Besides what the subject says, this commit moves the test data
  +    for the factor tests from tests/local.mk into the directory
  +    tests/factor/ where it belongs.

and

  -    * tests/factor/run.sh: Turn this script into a template.
  +    * tests/factor/run.sh: Turn this script into a template, and
  +    therefore remove it's executable permission bit.

and listed Stefano's and your name:

+    Improved-by: Stefano Lattarini
+    Improved by: Jim Meyering

Here comes the full new patch.

Have a nice day,
Berny

>From b6a09d05d2794cc1df64a468e573729c92e37ad1 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <address@hidden>
Date: Sat, 27 Oct 2012 13:24:18 +0200
Subject: [PATCH] tests: shorten factor's inordinately-long test file names

Besides what the subject says, this commit moves the test data
for the factor tests from tests/local.mk into the directory
tests/factor/ where it belongs.

* tests/local.mk (EXTRA_DIST): Add new tests/factor/create-test.sh.
(p,q,t1,t2) Factor out the factor-related magic numbers.
(factor_tests): Rename the test names to t{00..36}.sh. Factor out
the triples of test data.
($(factor_tests)): Add dependency to new
tests/factor/create-factor.sh.
Call that script to generate the test scripts.
* tests/factor/run.sh: Turn this script into a template, and
therefore remove it's executable permission bit.
Add template variables START, END and CKSUM, replacing the code
to split the test data from the test script's file name.
Use the new template variables in the call to seq and for
creating the exp file.
* tests/factor/create-test.sh: Add new script to create the
test scripts from the template tests/factor/run.sh.
Use test data and magic numbers factored out from the above
files. Let the script also change the __TEMPLATE__ line in
run.sh to make clear that the test scripts are generated.
* cfg.mk (sc_tests_list_consistency): Exempt the new test.
(exclude_file_name_regexp--sc_prohibit_test_backticks):
Likewise.

Improved-by: Stefano Lattarini
Improved by: Jim Meyering
---
 cfg.mk                      |    4 +-
 tests/factor/create-test.sh |   83 +++++++++++++++++++++++++++++++++++++++++++
 tests/factor/run.sh         |   22 ++++++-----
 tests/local.mk              |   70 ++++++++----------------------------
 4 files changed, 112 insertions(+), 67 deletions(-)
 create mode 100755 tests/factor/create-test.sh
 mode change 100755 => 100644 tests/factor/run.sh

diff --git a/cfg.mk b/cfg.mk
index 08f6c3d..ab0f0c6 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -111,7 +111,7 @@ sc_tests_list_consistency:
          for t in $(all_tests); do echo $$t; done;                     \
          cd $(top_srcdir);                                             \
          $(SHELL) build-aux/vc-list-files tests                        \
-           | grep -Ev '^tests/(factor/run|init)\.sh$$'                 \
+           | grep -Ev '^tests/(factor/(run|create-test)|init)\.sh$$'   \
            | $(EGREP) "$$test_extensions_rx\$$";                       \
        } | sort | uniq -u | grep . && exit 1; :

@@ -572,7 +572,7 @@ 
exclude_file_name_regexp--sc_prohibit_continued_string_alpha_in_column_1 = \
   ^src/(system\.h|od\.c|printf\.c)$$

 exclude_file_name_regexp--sc_prohibit_test_backticks = \
-  ^tests/(init\.sh|local.mk|misc/stdbuf\.sh)$$
+  ^tests/(init\.sh|local.mk|misc/stdbuf\.sh|factor/create-test.sh)$$

 # Exempt test.c, since it's nominally shared, and relatively static.
 exclude_file_name_regexp--sc_prohibit_operator_at_end_of_line = \
diff --git a/tests/factor/create-test.sh b/tests/factor/create-test.sh
new file mode 100755
index 0000000..180e89a
--- /dev/null
+++ b/tests/factor/create-test.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Create the factor test scripts.
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+test_name=$1
+template=$2
+
+# Extract the test name: remove .sh suffix from the basename.
+t=`echo "$test_name"|sed 's,.*/,,;s,\.sh$,,'`
+
+# prefix of 2^64
+p=184467440737
+
+# prefix of 2^96
+q=79228162514264337593543
+
+# Each of these numbers has a Pollard rho factor larger than 2^64,
+# and thus exercises some hard-to-reach code in factor.c.
+t1=170141183460469225450570946617781744489
+t2=170141183460469229545748130981302223887
+
+# Factors of the above:
+# t1: 9223372036854775421 18446744073709551709
+# t2: 9223372036854775643 18446744073709551709
+
+# Each test is a triple: lo, hi, sha1 of result.
+# The test script, run.sh, runs seq lo hi|factor|sha1sum
+# and verifies that the actual and expected checksums are the same.
+# New tests must be added to tests/local.mk (factor_tests), too.
+case $t in
+  t00) set            0     10000000 a451244522b1b662c86cb3cbb55aee3e085a61a0 
;;
+  t01) set     10000000     20000000 c792a2e02f1c8536b5121f624b04039d20187016 
;;
+  t02) set     20000000     30000000 8115e8dff97d1674134ec054598d939a2a5f6113 
;;
+  t03) set     30000000     40000000 fe7b832c8e0ed55035152c0f9ebd59de73224a60 
;;
+  t04) set     40000000     50000000 b8786d66c432e48bc5b342ee3c6752b7f096f206 
;;
+  t05) set     50000000     60000000 a74fe518c5f79873c2b9016745b88b42c8fd3ede 
;;
+  t06) set     60000000     70000000 689bc70d681791e5d1b8ac1316a05d0c4473d6db 
;;
+  t07) set     70000000     80000000 d370808f2ab8c865f64c2ff909c5722db5b7d58d 
;;
+  t08) set     80000000     90000000 7978aa66bf2bdb446398336ea6f02605e9a77581 
;;
+  t09) set          $t1          $t1 4622287c5f040cdb7b3bbe4d19d29a71ab277827 
;;
+  t10) set          $t2          $t2 dea308253708b57afad357e8c0d2a111460ef50e 
;;
+  t11) set ${p}08551616 ${p}08651615 66c57cd58f4fb572df7f088d17e4f4c1d4f01bb1 
;;
+  t12) set ${p}08651616 ${p}08751615 729228e693b1a568ecc85b199927424c7d16d410 
;;
+  t13) set ${p}08751616 ${p}08851615 5a0c985017c2d285e4698f836f5a059e0b684563 
;;
+  t14) set ${p}08851616 ${p}08951615 0482295c514e371c98ce9fd335deed0c9c44a4f4 
;;
+  t15) set ${p}08951616 ${p}09051615 9c0e1105ac7c45e27e7bbeb5e213f530d2ad1a71 
;;
+  t16) set ${p}09051616 ${p}09151615 604366d2b1d75371d0679e6a68962d66336cd383 
;;
+  t17) set ${p}09151616 ${p}09251615 9192d2bdee930135b28d7160e6d395a7027871da 
;;
+  t18) set ${p}09251616 ${p}09351615 bcf56ae55d20d700690cff4d3327b78f83fc01bf 
;;
+  t19) set ${p}09351616 ${p}09451615 16b106398749e5f24d278ba7c58229ae43f650ac 
;;
+  t20) set ${p}09451616 ${p}09551615 ad2c6ed63525f8e7c83c4c416e7715fa1bebc54c 
;;
+  t21) set ${p}09551616 ${p}09651615 2b6f9c11742d9de045515a6627c27a042c49f8ba 
;;
+  t22) set ${p}09651616 ${p}09751615 54851acd51c4819beb666e26bc0100dc9adbc310 
;;
+  t23) set ${p}09751616 ${p}09851615 6939c2a7afd2d81f45f818a159b7c5226f83a50b 
;;
+  t24) set ${p}09851616 ${p}09951615 0f2c8bc011d2a45e2afa01459391e68873363c6c 
;;
+  t25) set ${p}09951616 ${p}10051615 630dc2ad72f4c222bad1405e6c5bea590f92a98c 
;;
+  t26) set   ${q}940336   ${q}942335 63cbd6313d78247b04d63bbbac50cb8f8d33ff71 
;;
+  t27) set   ${q}942336   ${q}944335 0d03d63653767173182491b86fa18f8f680bb036 
;;
+  t28) set   ${q}944336   ${q}946335 ca43bd38cd9f97cc5bb63613cb19643578640f0b 
;;
+  t29) set   ${q}946336   ${q}948335 86d59545a0c13567fa96811821ea5cde950611b1 
;;
+  t30) set   ${q}948336   ${q}950335 c3740e702fa9c97e6cf00150860e0b936a141a6b 
;;
+  t31) set   ${q}950336   ${q}952335 551c3c4c4640d86fda311b5c3006dac45505c0ce 
;;
+  t32) set   ${q}952336   ${q}954335 b1b0b00463c2f853d70ef9c4f7a96de5cb614156 
;;
+  t33) set   ${q}954336   ${q}956335 8938a484a9ef6bb16478091d294fcde9f8ecea69 
;;
+  t34) set   ${q}956336   ${q}958335 d1ae6bc712d994f35edf55c785d71ddf31f16535 
;;
+  t35) set   ${q}958336   ${q}960335 2374919a89196e1fce93adfe779cb4664556d4b6 
;;
+  t36) set   ${q}960336   ${q}962335 569e4363e8d9e8830a187d9ab27365eef08abde1 
;;
+  *)
+    echo "$0: error: unknown test: '$test_name' -> '$t'" >&2
+    exit 1
+    ;;
+esac
+
+TEMPLATE="TEST SCRIPT DERIVED FROM THE TEMPLATE $template"
+
+# Create the test script from the template for this test
+# by substituting the START, the END and the CKSUM.
+exec sed \
+  -e "s/__START__/$1/" \
+  -e "s/__END__/$2/" \
+  -e "s/__CKSUM__/$3/" \
+  -e "s!__TEMPLATE__!$TEMPLATE!" "$template"
diff --git a/tests/factor/run.sh b/tests/factor/run.sh
old mode 100755
new mode 100644
index 6ff24c3..33ec8cd
--- a/tests/factor/run.sh
+++ b/tests/factor/run.sh
@@ -1,11 +1,14 @@
 #!/bin/sh
+
+# === THIS IS A __TEMPLATE__ ===
+
 # Test the factor rewrite.
-# Expect to be invoked via a file whose basename matches
-# /^(\d+)\-(\d+)\-([\da-f]{40})\.sh$/
 # The test is to run this command
-# seq $1 $2 | factor | shasum -c --status <(echo $3  -)
+# seq $START $END | factor | shasum -c --status <(echo $CKSUM  -)
 # I.e., to ensure that the factorizations of integers $1..$2
 # match what we expect.
+#
+# See: tests/factor/create-test.sh

 # Copyright (C) 2012 Free Software Foundation, Inc.

@@ -16,15 +19,14 @@ very_expensive_

 print_ver_ factor seq

-# Remove the ".sh" suffix:
-t=${ME_%.sh}
+# Template variables.
+START=__START__
+  END=__END__
+CKSUM=__CKSUM__

-# Make IFS include "-", so that a simple "set" will separate the args:
-IFS=-$IFS
-set $t
-echo "$3  -" > exp
+echo "$CKSUM  -" > exp

 f=1
-seq $1 $2 | factor | shasum -c --status exp && f=0
+seq $START $END | factor | shasum -c --status exp && f=0

 Exit $f
diff --git a/tests/local.mk b/tests/local.mk
index f31c8b0..8fc4030 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -96,6 +96,7 @@ EXTRA_DIST +=                 \
   tests/d_type-check           \
   tests/envvar-check           \
   tests/factor/run.sh          \
+  tests/factor/create-test.sh  \
   tests/filefrag-extent-compare \
   tests/fiemap-capable         \
   tests/init.sh                        \
@@ -625,65 +626,24 @@ all_tests =                                       \
   tests/touch/trailing-slash.sh                        \
   $(all_root_tests)

-# prefix of 2^64
-p = 184467440737
-# prefix of 2^96
-q = 79228162514264337593543
-
-# Each of these numbers has a Pollard rho factor larger than 2^64,
-# and thus exercises some hard-to-reach code in factor.c.
-t1 = 170141183460469225450570946617781744489
-t2 = 170141183460469229545748130981302223887
-# Factors of the above:
-# t1: 9223372036854775421 18446744073709551709
-# t2: 9223372036854775643 18446744073709551709
-
-# Each tests is a triple: lo, hi, sha1 of result.
-# The test script, run.sh, runs seq lo hi|factor|sha1sum
-# and verifies that the actual and expected checksums are the same.
+# See tests/factor/create-test.sh.
 tf = tests/factor
 factor_tests = \
-  $(tf)/0-10000000-a451244522b1b662c86cb3cbb55aee3e085a61a0.sh \
-  $(tf)/10000000-20000000-c792a2e02f1c8536b5121f624b04039d20187016.sh \
-  $(tf)/20000000-30000000-8115e8dff97d1674134ec054598d939a2a5f6113.sh \
-  $(tf)/30000000-40000000-fe7b832c8e0ed55035152c0f9ebd59de73224a60.sh \
-  $(tf)/40000000-50000000-b8786d66c432e48bc5b342ee3c6752b7f096f206.sh \
-  $(tf)/50000000-60000000-a74fe518c5f79873c2b9016745b88b42c8fd3ede.sh \
-  $(tf)/60000000-70000000-689bc70d681791e5d1b8ac1316a05d0c4473d6db.sh \
-  $(tf)/70000000-80000000-d370808f2ab8c865f64c2ff909c5722db5b7d58d.sh \
-  $(tf)/80000000-90000000-7978aa66bf2bdb446398336ea6f02605e9a77581.sh \
-  $(tf)/$(t1)-$(t1)-4622287c5f040cdb7b3bbe4d19d29a71ab277827.sh \
-  $(tf)/$(t2)-$(t2)-dea308253708b57afad357e8c0d2a111460ef50e.sh \
-  $(tf)/$(p)08551616-$(p)08651615-66c57cd58f4fb572df7f088d17e4f4c1d4f01bb1.sh \
-  $(tf)/$(p)08651616-$(p)08751615-729228e693b1a568ecc85b199927424c7d16d410.sh \
-  $(tf)/$(p)08751616-$(p)08851615-5a0c985017c2d285e4698f836f5a059e0b684563.sh \
-  $(tf)/$(p)08851616-$(p)08951615-0482295c514e371c98ce9fd335deed0c9c44a4f4.sh \
-  $(tf)/$(p)08951616-$(p)09051615-9c0e1105ac7c45e27e7bbeb5e213f530d2ad1a71.sh \
-  $(tf)/$(p)09051616-$(p)09151615-604366d2b1d75371d0679e6a68962d66336cd383.sh \
-  $(tf)/$(p)09151616-$(p)09251615-9192d2bdee930135b28d7160e6d395a7027871da.sh \
-  $(tf)/$(p)09251616-$(p)09351615-bcf56ae55d20d700690cff4d3327b78f83fc01bf.sh \
-  $(tf)/$(p)09351616-$(p)09451615-16b106398749e5f24d278ba7c58229ae43f650ac.sh \
-  $(tf)/$(p)09451616-$(p)09551615-ad2c6ed63525f8e7c83c4c416e7715fa1bebc54c.sh \
-  $(tf)/$(p)09551616-$(p)09651615-2b6f9c11742d9de045515a6627c27a042c49f8ba.sh \
-  $(tf)/$(p)09651616-$(p)09751615-54851acd51c4819beb666e26bc0100dc9adbc310.sh \
-  $(tf)/$(p)09751616-$(p)09851615-6939c2a7afd2d81f45f818a159b7c5226f83a50b.sh \
-  $(tf)/$(p)09851616-$(p)09951615-0f2c8bc011d2a45e2afa01459391e68873363c6c.sh \
-  $(tf)/$(p)09951616-$(p)10051615-630dc2ad72f4c222bad1405e6c5bea590f92a98c.sh \
-  $(tf)/$(q)940336-$(q)942335-63cbd6313d78247b04d63bbbac50cb8f8d33ff71.sh \
-  $(tf)/$(q)942336-$(q)944335-0d03d63653767173182491b86fa18f8f680bb036.sh \
-  $(tf)/$(q)944336-$(q)946335-ca43bd38cd9f97cc5bb63613cb19643578640f0b.sh \
-  $(tf)/$(q)946336-$(q)948335-86d59545a0c13567fa96811821ea5cde950611b1.sh \
-  $(tf)/$(q)948336-$(q)950335-c3740e702fa9c97e6cf00150860e0b936a141a6b.sh \
-  $(tf)/$(q)950336-$(q)952335-551c3c4c4640d86fda311b5c3006dac45505c0ce.sh \
-  $(tf)/$(q)952336-$(q)954335-b1b0b00463c2f853d70ef9c4f7a96de5cb614156.sh \
-  $(tf)/$(q)954336-$(q)956335-8938a484a9ef6bb16478091d294fcde9f8ecea69.sh \
-  $(tf)/$(q)956336-$(q)958335-d1ae6bc712d994f35edf55c785d71ddf31f16535.sh \
-  $(tf)/$(q)958336-$(q)960335-2374919a89196e1fce93adfe779cb4664556d4b6.sh \
-  $(tf)/$(q)960336-$(q)962335-569e4363e8d9e8830a187d9ab27365eef08abde1.sh
+  $(tf)/t00.sh $(tf)/t01.sh $(tf)/t02.sh $(tf)/t03.sh $(tf)/t04.sh \
+  $(tf)/t05.sh $(tf)/t06.sh $(tf)/t07.sh $(tf)/t08.sh $(tf)/t09.sh \
+  $(tf)/t10.sh $(tf)/t11.sh $(tf)/t12.sh $(tf)/t13.sh $(tf)/t14.sh \
+  $(tf)/t15.sh $(tf)/t16.sh $(tf)/t17.sh $(tf)/t18.sh $(tf)/t19.sh \
+  $(tf)/t20.sh $(tf)/t21.sh $(tf)/t22.sh $(tf)/t23.sh $(tf)/t24.sh \
+  $(tf)/t25.sh $(tf)/t26.sh $(tf)/t27.sh $(tf)/t28.sh $(tf)/t29.sh \
+  $(tf)/t30.sh $(tf)/t31.sh $(tf)/t32.sh $(tf)/t33.sh $(tf)/t34.sh \
+  $(tf)/t35.sh $(tf)/t36.sh

-$(factor_tests): tests/factor/run.sh
+$(factor_tests): $(tf)/run.sh $(tf)/create-test.sh
        $(AM_V_GEN)$(MKDIR_P) $(tf)
-       $(AM_V_at)ln -f $(srcdir)/tests/factor/run.sh $@
+       $(AM_V_at)$(SHELL) $(srcdir)/$(tf)/create-test.sh $@ \
+         $(srcdir)/$(tf)/run.sh > $@-t
+       $(AM_V_at)chmod a+x $@-t
+       $(AM_V_at)mv $@-t $@

 CLEANFILES += $(factor_tests)

-- 
1.7.7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]