diff --git a/.gitignore b/.gitignore
index 2b6cd5326c8216b80530f9de2b67750bd899177b..103220b2ad1ce83ddf963c2ddcc62c14facda2a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@ Makefile.in
 /src/stamp-h1
 /tables/gen_tableheaderfile
 /tests/*.run
+/tests/test_cksum_base
 Makefile
 
 # Build stage files:
diff --git a/configure.ac b/configure.ac
index 561511c7cb5dbde6fc8f91d5394246d17bdb95c3..9f9ac264cba740666349912c966071efcf49ddf4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -667,6 +667,7 @@ AC_CONFIG_FILES([
   src/pkgconfig/cdi_f2003.pc
   src/pkgconfig/cdipio.pc
   tests/Makefile
+  tests/test_cksum_base
 ])
 AC_CONFIG_FILES([
   tables/gen_tableheaderfile
@@ -689,15 +690,15 @@ AC_CONFIG_FILES([
   tests/test_byteswap.run
   tests/test_cdf_const.run
   tests/test_cdf_transformation.run
-  tests/test_cksum_extra.run
-  tests/test_cksum_grib.run
-  tests/test_cksum_grib2.run
+  tests/test_cksum_ext.run
+  tests/test_cksum_grb.run
+  tests/test_cksum_grb2.run
   tests/test_cksum_ieg.run
   tests/test_cksum_nc.run
   tests/test_cksum_nc2.run
   tests/test_cksum_nc4.run
   tests/test_cksum_nc_chunk.run
-  tests/test_cksum_service.run
+  tests/test_cksum_srv.run
   tests/test_f2003.run
   tests/test_grib.run
   tests/test_resource_copy.parallel.run
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 71d45b320083151cf5567f7e0324c0c57ac8fd8a..90e8e40f9ea2b9b9cbf9ad0f01533c0327ee2568 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -9,21 +9,33 @@ TESTS = \
   test_byteswap.run \
   test_cdf_const.run \
   test_cdf_transformation.run \
-  test_cksum_extra.run \
-  test_cksum_grib.run \
-  test_cksum_grib2.run \
+  test_cksum_ext.run \
+  test_cksum_grb.run \
+  test_cksum_grb2.run \
   test_cksum_ieg.run \
   test_cksum_nc.run \
   test_cksum_nc2.run \
   test_cksum_nc4.run \
   test_cksum_nc_chunk.run \
-  test_cksum_service.run \
+  test_cksum_srv.run \
   test_f2003.run \
   test_grib.run \
   test_month_adjust \
   test_resource_copy.run \
   test_table.run
 
+# Update test_cksum_base before running tests that source it:
+test_cksum_TEST_LOGS_ = \
+  test_cksum_ext.log \
+  test_cksum_grb.log \
+  test_cksum_grb2.log \
+  test_cksum_ieg.log \
+  test_cksum_nc.log \
+  test_cksum_nc2.log \
+  test_cksum_nc4.log \
+  test_cksum_srv.log
+$(test_cksum_TEST_LOGS_): test_cksum_base
+
 # Parallel tests:
 TESTS += \
   pio_cksum_asynch.run \
@@ -182,8 +194,6 @@ clean-local:
 
 AUTOMAKE_OPTIONS = color-tests
 
-EXTRA_DIST = test_cksum_base
-
 # Compile programs using Libtool:
 COMPILE = $(LTCOMPILE)
 FCCOMPILE = $(LTFCCOMPILE)
diff --git a/tests/test_cksum_base b/tests/test_cksum_base
deleted file mode 100644
index 66cc59b00aae7e6db1b19a9122785c17ab51c816..0000000000000000000000000000000000000000
--- a/tests/test_cksum_base
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-# this file is meant to be included for the supported file formats
-
-exec >test_cksum_$format.log 2>&1
-../libtool --mode=execute ${tool_wrap} ./cksum_write -b ${prefix} -f ${format} || exit 1
-../libtool --mode=execute ${tool_wrap} ./cksum_read ${prefix}.${format} ${prefix}.cksum || exit 1
-
-#
-# Local Variables:
-# mode: sh
-# End:
-#
diff --git a/tests/test_cksum_base.in b/tests/test_cksum_base.in
new file mode 100644
index 0000000000000000000000000000000000000000..325f17cd3473a3b6b729dca4096ecd7d3cdc6986
--- /dev/null
+++ b/tests/test_cksum_base.in
@@ -0,0 +1,45 @@
+# This file is meant to be included for the supported file formats.
+
+prefix=${0##*/}
+suffix=${suffix-grb}
+
+case ${suffix} in
+  grb)
+    test 'x@ENABLE_GRIB@' = xyes || exit 77
+    ;;
+  grb2)
+    @HAVE_LIBGRIB_API_FALSE@exit 77
+    test 'x@ENABLE_GRIB@' = xyes || exit 77
+    ;;
+  nc)
+    @ENABLE_NETCDF_FALSE@exit 77
+    ;;
+  nc2)
+    test 'x@ENABLE_NC2@' = xyes || exit 77
+    ;;
+  nc4)
+    test 'x@ENABLE_NC4@' = xyes || exit 77
+    ;;
+  srv)
+    test 'x@ENABLE_SERVICE@' = xyes || exit 77
+    ;;
+  ext)
+    test 'x@ENABLE_EXTRA@' = xyes || exit 77
+    ;;
+  ieg)
+    test 'x@ENABLE_IEG@' = xyes || exit 77
+    ;;
+  *)
+    echo "Unsupported suffix '${suffix}'" >&2
+    exit 1
+    ;;
+esac
+
+../libtool --mode=execute ${tool_wrap} ./cksum_write -b "${prefix}" -f ${suffix} || exit 1
+../libtool --mode=execute ${tool_wrap} ./cksum_read "${prefix}.${suffix}" "${prefix}.cksum" || exit 1
+
+#
+# Local Variables:
+# mode: sh
+# End:
+#
diff --git a/tests/test_cksum_ext.run.in b/tests/test_cksum_ext.run.in
new file mode 100644
index 0000000000000000000000000000000000000000..48e66b555af7ce9edd372cbd809d1635a09f39d7
--- /dev/null
+++ b/tests/test_cksum_ext.run.in
@@ -0,0 +1,3 @@
+#!@SHELL@
+suffix=ext
+. ./test_cksum_base
diff --git a/tests/test_cksum_extra.run.in b/tests/test_cksum_extra.run.in
deleted file mode 100644
index 76d71079f39d0872955ac8f13a466a06dcfd0377..0000000000000000000000000000000000000000
--- a/tests/test_cksum_extra.run.in
+++ /dev/null
@@ -1,6 +0,0 @@
-#!@SHELL@
-test 'x@ENABLE_EXTRA@' = xyes || exit 77
-
-prefix=${0##*/}
-format=ext
-. @srcdir@/test_cksum_base
diff --git a/tests/test_cksum_grb.run.in b/tests/test_cksum_grb.run.in
new file mode 100644
index 0000000000000000000000000000000000000000..c376ec294889504b094d1d93d9eece0f09b3fa70
--- /dev/null
+++ b/tests/test_cksum_grb.run.in
@@ -0,0 +1,9 @@
+#!@SHELL@
+suffix=grb
+. ./test_cksum_base
+
+#
+# Local Variables:
+# mode: sh
+# End:
+#
diff --git a/tests/test_cksum_grb2.run.in b/tests/test_cksum_grb2.run.in
new file mode 100644
index 0000000000000000000000000000000000000000..f13ab4492a4d948a03fea66c5b163adf64ca6f5b
--- /dev/null
+++ b/tests/test_cksum_grb2.run.in
@@ -0,0 +1,3 @@
+#!@SHELL@
+suffix=grb2
+. ./test_cksum_base
diff --git a/tests/test_cksum_grib.run.in b/tests/test_cksum_grib.run.in
deleted file mode 100644
index 7eab54e038e5d62efeb9124320b4ed828a53a2e7..0000000000000000000000000000000000000000
--- a/tests/test_cksum_grib.run.in
+++ /dev/null
@@ -1,12 +0,0 @@
-#!@SHELL@
-test 'x@ENABLE_GRIB@' = xyes || exit 77
-
-prefix=${0##*/}
-format=grb
-. @srcdir@/test_cksum_base
-
-#
-# Local Variables:
-# mode: sh
-# End:
-#
diff --git a/tests/test_cksum_grib2.run.in b/tests/test_cksum_grib2.run.in
deleted file mode 100644
index 412b1784862120b0d129a70c3423cef40bcf1f49..0000000000000000000000000000000000000000
--- a/tests/test_cksum_grib2.run.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!@SHELL@
-@HAVE_LIBGRIB_API_FALSE@exit 77
-test 'x@ENABLE_GRIB@' = xyes || exit 77
-
-prefix=${0##*/}
-format=grb2
-./cksum_write -b ${prefix} -f ${format} || exit 1
-./cksum_read ${prefix}.${format} ${prefix}.cksum || exit 1
diff --git a/tests/test_cksum_ieg.run.in b/tests/test_cksum_ieg.run.in
index 3d569796534f6bf3801f78e68af778023947389b..30971f94b7135b94b74a8a2e61a6457cd4bb5064 100644
--- a/tests/test_cksum_ieg.run.in
+++ b/tests/test_cksum_ieg.run.in
@@ -1,6 +1,3 @@
 #!@SHELL@
-test 'x@ENABLE_IEG@' = xyes || exit 77
-
-prefix=${0##*/}
-format=ieg
-. @srcdir@/test_cksum_base
+suffix=ieg
+. ./test_cksum_base
diff --git a/tests/test_cksum_nc.run.in b/tests/test_cksum_nc.run.in
index 64fbb82e57d0cc46c92a2322c0d9ab748c4d0783..eec7948c6fdff5dd94a15d6573b7c527cca7bae6 100644
--- a/tests/test_cksum_nc.run.in
+++ b/tests/test_cksum_nc.run.in
@@ -1,6 +1,3 @@
 #!@SHELL@
-@ENABLE_NETCDF_FALSE@exit 77
-
-prefix=${0##*/}
-format=nc
-. @srcdir@/test_cksum_base
+suffix=nc
+. ./test_cksum_base
diff --git a/tests/test_cksum_nc2.run.in b/tests/test_cksum_nc2.run.in
index 82c953f2a543a54092b0518a6fd74a5752bc9449..1ef8e1ffd43b276504a11a736f9378ef9a663f51 100644
--- a/tests/test_cksum_nc2.run.in
+++ b/tests/test_cksum_nc2.run.in
@@ -1,6 +1,3 @@
 #!@SHELL@
-test 'x@ENABLE_NC2@' = xyes || exit 77
-
-prefix=${0##*/}
-format=nc2
-. @srcdir@/test_cksum_base
+suffix=nc2
+. ./test_cksum_base
diff --git a/tests/test_cksum_nc4.run.in b/tests/test_cksum_nc4.run.in
index ee1faaaa2b53492606a70941fbc557e02b98afda..3c7d4e1c75ecdc2255a10892b3b3e0b5097820a9 100644
--- a/tests/test_cksum_nc4.run.in
+++ b/tests/test_cksum_nc4.run.in
@@ -1,6 +1,3 @@
 #!@SHELL@
-test 'x@ENABLE_NC4@' = xyes || exit 77
-
-prefix=${0##*/}
-format=nc4
-. @srcdir@/test_cksum_base
+suffix=nc4
+. ./test_cksum_base
diff --git a/tests/test_cksum_service.run.in b/tests/test_cksum_service.run.in
deleted file mode 100644
index c1b0054534c76b62eee73dafd7690f980c11fc55..0000000000000000000000000000000000000000
--- a/tests/test_cksum_service.run.in
+++ /dev/null
@@ -1,6 +0,0 @@
-#!@SHELL@
-test 'x@ENABLE_SERVICE@' = xyes || exit 77
-
-prefix=${0##*/}
-format=srv
-. @srcdir@/test_cksum_base
diff --git a/tests/test_cksum_srv.run.in b/tests/test_cksum_srv.run.in
new file mode 100644
index 0000000000000000000000000000000000000000..2d7ce74638c1945ab8ac711052d85235e5bff401
--- /dev/null
+++ b/tests/test_cksum_srv.run.in
@@ -0,0 +1,3 @@
+#!@SHELL@
+suffix=srv
+. ./test_cksum_base