kyz/libmspack

Add a ‘make check’ rule

rwmjones opened this issue · 5 comments

I'd like to routinely test libmspack in our Fedora builds. However the testing situation seems to be a bit of a mess. There are some test programs built, but it's not clear which ones we're meant to run, some run successfully, others do nothing, others fail.

You can add a make check rule very simply by listing the test programs which are meant to pass. It's a one line addition to Makefile.am, for example:

TESTS = test/cabd_test test/chmd_test test/kwajd_test

(or whatever the correct list of tests is supposed to be). That won't quite work unless you make test/ into a subdir and put the Makefile.am in there, or adjust the tests so they can run from the top source directory, but hopefully you get the idea.

kyz commented

Yes, I'd like that too, and have tried and failed in the past.

The trouble is with the test programs finding their test files. They don''t have a hardcoded absolute path (and I'm not sure what would be the best way to ensure one - so the tests have to be run from the test directory.

I'll look into this again, and see what can be done.

This worked for me:

From 9bc56f680193458ea7662be96c4341e62779dd39 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 11:05:21 +0000
Subject: [PATCH] Add test.

---
 libmspack/.gitignore       | 4 ++++
 libmspack/Makefile.am      | 2 ++
 libmspack/configure.ac     | 2 +-
 libmspack/test/Makefile.am | 1 +
 4 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 libmspack/test/Makefile.am

diff --git a/libmspack/.gitignore b/libmspack/.gitignore
index 1ca847d..1b44048 100644
--- a/libmspack/.gitignore
+++ b/libmspack/.gitignore
@@ -18,3 +18,7 @@ ltmain.sh
 m4
 missing
 stamp-h1
+test-driver
+test/cabd_test.log
+test/cabd_test.trs
+test/test-suite.log
diff --git a/libmspack/Makefile.am b/libmspack/Makefile.am
index 20b6ab5..80a8577 100644
--- a/libmspack/Makefile.am
+++ b/libmspack/Makefile.am
@@ -1,3 +1,5 @@
+SUBDIRS = test
+
 AUTOMAKE_OPTIONS =	subdir-objects
 EXTRA_DIST =		$(srcdir)/debian/* $(srcdir)/doc/* $(srcdir)/test/test_files/*/*
 pkgconfigdir =		$(libdir)/pkgconfig
diff --git a/libmspack/configure.ac b/libmspack/configure.ac
index 5d6f833..5e6158a 100644
--- a/libmspack/configure.ac
+++ b/libmspack/configure.ac
@@ -50,5 +50,5 @@ AC_SYS_LARGEFILE
 AC_FUNC_FSEEKO
 
 # Checks for library functions.
-AC_CONFIG_FILES([Makefile doc/Makefile doc/Doxyfile libmspack.pc])
+AC_CONFIG_FILES([Makefile doc/Makefile doc/Doxyfile test/Makefile libmspack.pc])
 AC_OUTPUT
diff --git a/libmspack/test/Makefile.am b/libmspack/test/Makefile.am
new file mode 100644
index 0000000..8e47325
--- /dev/null
+++ b/libmspack/test/Makefile.am
@@ -0,0 +1 @@
+TESTS = cabd_test
-- 
2.19.0.rc0

After applying that patch you have to run:

automake --add-missing
autoconf
kyz commented

It needs a bit more than that, because cabd_test and friends need to be built. And they depend on libmspack and friends being built before them. And I don't want to move away from there being only one Makefile.am

I've made changes in commit 43682d7, could you test them out?

kyz commented

Both cabextract and libmspack now have "make check" test suites. Thanks for the suggestion and support.