From 72fa126446460347a504f3d9b90f24aed1365595 Mon Sep 17 00:00:00 2001
From: Cosmin Truta <ctruta@gmail.com>
Date: Sun, 21 Apr 2019 00:30:14 -0400
Subject: [PATCH] Avoid random test failures by running pngtest sequentially
 only

It is unreliable to run pngtest in parallel, due to competing writes
to the same intermediate/output file ("pngout.png").

Customization of this output file name should be possible, but it is
currently broken.
---
 Makefile.am                            |  3 +--
 Makefile.in                            | 16 ++++------------
 tests/pngtest                          |  2 --
 tests/{pngtest-badpngs => pngtest-all} |  6 +++++-
 4 files changed, 10 insertions(+), 17 deletions(-)
 rename tests/{pngtest-badpngs => pngtest-all} (80%)

diff --git a/Makefile.am b/Makefile.am
index 4f621aa..f21107e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -59,8 +59,7 @@ pngcp_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la
 # Generally these are single line shell scripts to run a test with a particular
 # set of parameters:
 TESTS =\
-   tests/pngtest\
-   tests/pngtest-badpngs\
+   tests/pngtest-all\
    tests/pngvalid-gamma-16-to-8 tests/pngvalid-gamma-alpha-mode\
    tests/pngvalid-gamma-background tests/pngvalid-gamma-expand16-alpha-mode\
    tests/pngvalid-gamma-expand16-background\
diff --git a/Makefile.in b/Makefile.in
index 81ac1c8..31a82d2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -736,8 +736,7 @@ pngcp_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la
 # Generally these are single line shell scripts to run a test with a particular
 # set of parameters:
 TESTS = \
-   tests/pngtest\
-   tests/pngtest-badpngs\
+   tests/pngtest-all\
    tests/pngvalid-gamma-16-to-8 tests/pngvalid-gamma-alpha-mode\
    tests/pngvalid-gamma-background tests/pngvalid-gamma-expand16-alpha-mode\
    tests/pngvalid-gamma-expand16-background\
@@ -1578,16 +1577,9 @@ recheck: all $(check_PROGRAMS)
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
-tests/pngtest.log: tests/pngtest
-	@p='tests/pngtest'; \
-	b='tests/pngtest'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-tests/pngtest-badpngs.log: tests/pngtest-badpngs
-	@p='tests/pngtest-badpngs'; \
-	b='tests/pngtest-badpngs'; \
+tests/pngtest-all.log: tests/pngtest-all
+	@p='tests/pngtest-all'; \
+	b='tests/pngtest-all'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
diff --git a/tests/pngtest b/tests/pngtest
index 813973b..e69de29 100755
--- a/tests/pngtest
+++ b/tests/pngtest
@@ -1,2 +0,0 @@
-#!/bin/sh
-exec ./pngtest --strict ${srcdir}/pngtest.png
diff --git a/tests/pngtest-badpngs b/tests/pngtest-all
similarity index 80%
rename from tests/pngtest-badpngs
rename to tests/pngtest-all
index 7777523..a491ba5 100755
--- a/tests/pngtest-badpngs
+++ b/tests/pngtest-all
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+# normal execution
+
+./pngtest --strict ${srcdir}/pngtest.png
+
 # various crashers
 # using --relaxed because some come from fuzzers that don't maintain CRC's
 
@@ -10,4 +14,4 @@
 ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/huge_*_chunk.png \
     ${srcdir}/contrib/testpngs/crashers/huge_*safe_to_copy.png
 
-exec ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/huge_IDAT.png
+./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/huge_IDAT.png
-- 
2.27.0

