I'm currently working on a project that uses autotools to generate a makefile. As usual, this makefile supports make check
, to run the entire test suite. However, I'm working on a small part of the program, where only a few unit tests apply. Is it possible, using make check
, to run a single unit test or a selection of unit tests, instead of the entire suite?
Edit:
Evan VanderZee suggests that it depends on the directory structure, so let me explain a bit more about the directory structure. The directory structure for this project is pretty flat. Most source files are in the src/
directory, with some grouped in a subdirectory under src/
. The unit tests are in src/tests
. None of the source directories contain a Makefile. There is only a makefile (generated by configure) at the top level.
If you are using Automake's TESTS
variable to list the tests that make check
runs, then there is an easy shortcut: make check TESTS='name-of-test1 name-of-test2'
The TESTS
variable passed on the command line overrides the one in the Makefile.
Alternatively, export TESTS='names-of-tests'; make -e check
to take the value of TESTS
from the environment.
If you are not using TESTS
but instead check-local
or some other target, then this won't work.
The answer to that depends on the specific makefiles you are using. If the tests have a directory structure, you can often navigate to a subdirectory and run make check
in the subdirectory.
Since you explained later that your directory structure is flat, it is hard to say without actually seeing some of the makefile. If you know the name of the executable that is created for the specific test you want to run, you might be able to run make name_of_test
to build the test that you want to run. This will not run the test, it will only build it. The test may reside in the test directory after it is built. After this you can go into the test directory and run the test in the typical way you would run an executable, but if the test depends on libraries, you may need to tell the test where to find those libraries, perhaps by adding some libraries to the LD_LIBRARY_PATH
.
If this is something you would want to do often, the makefile can probably be modified to support running the specific tests that you want to run. Typically this would involve editing a Makefile.am
or Makefile.in
and then reconfiguring, but I don't have enough information yet to advise what edits you would need to make.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With