Updating documentation to respect ctest.

main
Robin Mills 4 years ago
parent 29cc981180
commit 122fb95eb3

@ -118,9 +118,9 @@ if( EXIV2_BUILD_SAMPLES )
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests
COMMAND cmake -E env EXIV2_BINDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${Python3_EXECUTABLE} runner.py --verbose tiff_test
)
add_test(NAME lensTests
add_test(NAME versionTest
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests
COMMAND cmake -E env EXIV2_BINDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${Python3_EXECUTABLE} runner.py --verbose lens_tests
COMMAND cmake -E env EXIV2_BINDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${Python3_EXECUTABLE} runner.py --verbose bash_tests/version_test.py
)
endif()
endif()

@ -110,7 +110,7 @@ _Profiles for Visual Studio are discussed in detail here: [Visual Studio Notes](
| _**1**_ | Get conan to fetch dependencies<br><br>The output can be quite<br>long as conan downloads and/or builds<br>zlib, expat, curl and other dependencies.| $ conan install ..<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--build missing | c:\\..\\build> conan install .. --build missing<br>&nbsp;&nbsp;&nbsp;&nbsp;--profile msvc2019Release64 |
| _**2**_ | Get cmake to generate<br>makefiles or sln/vcxproj | $ cmake .. | c:\\..\\build> cmake&nbsp;..&nbsp;-G&nbsp;"Visual Studio 16 2019"
| _**3**_ | Build | $ cmake --build . | c:\\..\\build>&nbsp;cmake&nbsp;--build&nbsp;.&nbsp;--config&nbsp;Release<br>You may prefer to open exiv2.sln and build using the IDE. |
| _**4**_ | Optionally Run Test Suite | $ make tests | c:\\..\\build>&nbsp;cmake&nbsp;--build&nbsp;.&nbsp;--config&nbsp;Release --target tests<br/>[README.md](README.md) |
| _**4**_ | Optionally Run Test Suite | $ make test | c:\\..\\build>&nbsp;cmake&nbsp;--build&nbsp;.&nbsp;--config&nbsp;Release --target test<br/>[README.md](README.md) |
@ -587,4 +587,4 @@ $ cmake -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON ..
[TOC](#TOC)
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2021-03-18
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2021-12-17

@ -62,7 +62,7 @@ The file ReadMe.txt in a build bundle describes how to install the library on th
1. [Running tests on a UNIX-like system](#4-1)
2. [Running tests on Visual Studio builds](#4-2)
3. [Unit tests](#4-3)
4. [Python tests](#4-4)
4. [Bugfix tests](#4-4)
5. [Test Summary](#4-5)
6. [Fuzzing](#4-6)
1. [OSS-Fuzz](#4-6-1)
@ -90,8 +90,8 @@ $ cd ~/gnu/github/exiv2 # location of the project code
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ cmake --build .
$ make tests
$ sudo make install
$ ctest
$ sudo cmake --build . --target install
```
This will install the library into the "standard locations". The library will be installed in `/usr/local/lib`, executables (including the exiv2 command-line program) in `/usr/local/bin/` and header files in `/usr/local/include/exiv2`
@ -120,7 +120,7 @@ I don't know why anybody would uninstall Exiv2.
```bash
$ cd ~/gnu/github/exiv2 # location of the project code
$ cd build
$ sudo make uninstall
$ sudo cmake --build . --target uninstall
```
These commands will remove the exiv2 executables, library, header files and man page from the standard locations.
@ -395,7 +395,7 @@ Additionally, you will require an additional build step to actually build the do
```bash
$ cmake ..options.. -DEXIV2_BUILD_DOC=On
$ make doc
$ cmake --build . --target doc
```
To build the documentation, you must install the following products:
@ -429,7 +429,7 @@ $ cmake .. -G "Unix Makefiles" -DEXIV2_TEAM_PACKAGING=On
$ cmake --build . --config Release
...
[100%] Built target addmoddel
$ make package
$ cmake --build . --target package
...
CPack: - package: /path/to/exiv2/build/exiv2-0.27.1-Linux.tar.gz generated.
```
@ -437,14 +437,12 @@ CPack: - package: /path/to/exiv2/build/exiv2-0.27.1-Linux.tar.gz generated.
2) Source Package
```bash
$ make package_source
$ cmake --build . --target package_source
Run CPack packaging tool for source...
...
CPack: - package: /path/to/exiv2/build/exiv2-0.27.1-Source.tar.gz generated.
```
You may prefer to run `$ cmake --build . --config Release --target package_source`
[TOC](#TOC)
<div id="2-11">
@ -460,8 +458,7 @@ $ cd <exiv2dir>
$ mkdir build
$ cd build
$ cmake .. -G "Unix Makefiles" "-DCMAKE_BUILD_TYPE=Debug"
$ make
$ cmake --build .
```
You must install the library to ensure that your code is linked to the debug library.
@ -532,7 +529,7 @@ Visual Studio and Xcode can build debug or release builds without using the opti
With the Unix Makefile generator, the targets can be listed:
```bash
$ make help
$ cmake --build . --target help
The following are some of the valid targets for this Makefile:
... all (the default if no target is provided)
... clean
@ -593,10 +590,10 @@ To build with ccache, use the cmake option **-DBUILD\_WITH\_CCACHE=On**
$ cd <exiv2dir>
$ mkdir build ; cd build ; cd build
$ cmake .. -G "Unix Makefiles" -DBUILD_WITH_CCACHE=On
$ make
$ cmake --build .
# Build again to appreciate the performance gain
$ make clean
$ make
$ cmake --build . --target clean
$ cmake --build .
```
Due to the way in which ccache is installed in Fedora (and other Linux distros), ccache effectively replaces the compiler. A default build or **-DBUILD\_WITH\_CCACHE=Off** is not effective and the environment variable CCACHE_DISABLE is required to disable ccache. [https://github.com/Exiv2/exiv2/issues/361](https://github.com/Exiv2/exiv2/issues/361)
@ -767,7 +764,7 @@ To build Exiv2 v0.27.X with C++11:
cd <exiv2dir>
mkdir build ; cd build
cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_FLAGS=-Wno-deprecated
make
cmake --build .
```
The option -DCMAKE\_CXX\_STANDARD=11 specifies the C++ Language Standard. Possible values are 98, 11, 14, 17 or 20.
@ -864,18 +861,27 @@ For new bug reports, feature requests and support: Please open an issue in Gith
[TOC](#TOC)
<div id="4">
## 4 Running the test suite
## 4 Test Suite
The test suite is implemented using CTest. CMake adds the target 'test' to the build. You can run ctest with the command `$ cmake --build . --target test`, or simply with `$ ctest`. The build creates 5 tests: bashTests, bugfixes, tiffTests, unit_tests and versionTest. You can run all tests or a subset.
```bash
$ cmake --build . --target test
$ ctest # run all tests and display summary
$ ctest --output-on-failure # run all tests and output failures
$ ctest -R bugfixes # run only bugfixes and display summary
$ ctest -R bugfixes --verbose # run only bugfixes and display all output
```
#### Different kinds of tests:
#### Test Architecture
| Description | Language | Location | Command<br>_(in build directory)_ | CMake Option to Build |
|:-- |:-- |:-- |:-- |:-- |
| Run all tests | | | $ make tests | |
| Run all tests | | **Visual Studio Users** | > cmake --build . --target tests | |
| Bash tests | python | tests/bash\_tests | $ make bash_tests | -DEXIV2\_BUILD\_SAMPLES=On |
| Python tests | python | tests | $ make python_tests | -DEXIV2\_BUILD\_SAMPLES=On |
| Unit tests | C++ | unitTests | $ make unit_test | -DEXIV2\_BUILD\_UNIT\_TESTS=On |
| Version test | C++ | src/version.cpp | $ make version_test | Always in library |
| Name | Language | Location | Command<br>_(in build directory)_ | CMake Option to Build |
|:-- |:-- |:-- |:-- |:-- |
| bashTests | python | tests/bash\_tests | $ ctest -R bash | -DEXIV2\_BUILD\_SAMPLES=On |
| bugfixes | python | tests/bugfixes | $ ctest -R bugfixes | -DEXIV2\_BUILD\_SAMPLES=On |
| tiffTests | python | tests/tiff_test | $ ctest -R tiff | -DEXIV2\_BUILD\_SAMPLES=On |
| unit_tests | C++ | unitTests | $ ctest -R unit | -DEXIV2\_BUILD\_UNIT\_TESTS=On |
| versionTest | C++ | src/version.cpp | $ ctest -R version | Always in library |
The term _**bash scripts**_ is historical. The implementation of the tests in this collection originally required bash. These
scripts have been rewritten in python. Visual Studio Users will appreciate the python implementation as it avoids the
@ -899,17 +905,17 @@ The Variable EXIV2\_PORT or EXIV2\_HTTP can be set to None to skip http tests.
[TOC](#TOC)
<div id="4-1">
### 4.1 Running tests on a UNIX-like system
### 4.1 Running tests on Unix-like systems
You can run tests directly from the build:
```bash
$ cmake .. -G "Unix Makefiles" -DEXIV2_BUILD_UNIT_TESTS=On
$ make
... lots of output ...
$ make tests
... lots of output and build summary ...
$ cmake --build .
... lots of output ...
$ cmake --build . --target test
... test summary ...
$
```
@ -917,13 +923,13 @@ You can run individual tests in the `test` directory. **Caution:** If you build
```bash
$ cd <exiv2dir>/build
$ make bash_tests
$ ctest -R bash --verbose
addmoddel_test (testcases.TestCases) ... ok
....
Ran 176 tests in 9.526s
OK (skipped=6)
$ make python_tests
$ ctest -R bugfixes --verbose
... lots of output ...
test_run (tiff_test.test_tiff_test_program.TestTiffTestProg) ... ok
----------------------------------------------------------------------
@ -934,10 +940,9 @@ $
[TOC](#TOC)
<div id="4-2">
### 4.2 Running tests on Visual Studio builds from cmd.exe
**Caution:** _The python3 interpreter must be on the PATH, build for DOS, and called python3.exe. I copied the python.exe program:
**Caution:** _The python3 interpreter must be on the PATH, build for DOS, and called python3.exe._ I copied the python.exe program:
```cmd
> copy c:\Python37\python.exe c:\Python37\python3.exe
@ -945,13 +950,11 @@ $
```
You can execute the test suite as described for UNIX-like systems.
The main difference is that you must use cmake to initiate the test
as make is not a system utility on Windows.
```bash
> cd <exiv2dir>/build
> cmake --build . --target tests
> cmake --build . --target python_tests
> cmake --build . --target test
> ctest -R bugfixes --verbose
```
##### Running tests from cmd.exe
@ -974,13 +977,12 @@ If you wish to use an environment variables, use set:
```
set VERBOSE=1
cmake --build . --config Release --target tests
cmake --build . --config Release --target test
set VERBOSE=
```
[TOC](#TOC)
<div id="4-3">
### 4.3 Unit tests
The code for the unit tests is in `<exiv2dir>/unitTests`. To include unit tests in the build, use the *cmake* option `-DEXIV2_BUILD_UNIT_TESTS=On`.
@ -1000,24 +1002,23 @@ $ popd
[TOC](#TOC)
<div id="4-4">
### 4.4 Bugfix tests
### 4.4 Python tests
You can run the python tests from the build directory:
You can run the bugfix tests from the build directory:
```bash
$ cd <exiv2dir>/build
$ make python_tests
$ ctest -R bugfixes
```
If you wish to run in verbose mode:
```bash
$ cd <exiv2dir>/build
$ make python_tests VERBOSE=1
$ $ ctest -R bugfixes --verbose
```
The python tests are stored in the directory tests and you can run them all with the command:
The bugfix tests are stored in the directory tests and you can run them all with the command:
```bash
$ cd <exiv2dir>/tests
@ -1036,24 +1037,23 @@ You may wish to get a brief summary of failures with commands such as:
```bash
$ cd <exiv2dir>/build
$ make python_tests 2>&1 | grep FAIL
$ ctest -R bugfixes --verbose 2>&1 | grep FAIL
```
[TOC](#TOC)
<div id="4-5">
### 4.5 Test Summary
| *Tests* | Unix Style Platforms _(bash)_ | Visual Studio _(cmd.exe)_ |
| *Tests* | Execute using ctest | Execute using cmake |
|:-- |:--- |:-- |
| | $ cd \<exiv2dir\>/build | \> cd \<exiv2dir\>/build |
| tests | $ make tests | \> cmake --build . --config Release --target tests |
| bash_tests | $ make bash_tests | \> cmake --build . --config Release --target bash_tests |
| python_tests | $ make python_tests | \> cmake --build . --config Release --target python_tests |
| unit_test | $ make unit_test | \> cmake --build . --config Release --target unit_test |
| version_test | $ make version_test | \> cmake --build . --config Release --target version_test |
The name **bash_tests** is historical. They are implemented in python.
| | $ cd \<exiv2dir\>/build | \> cd \<exiv2dir\>/build |
| test | $ ctest | \> cmake --build . --config Release --target test |
| bash_tests | $ ctest -R bash | \> cmake --build . --config Release --target bash_tests |
| bugfixes | $ ctest -R bugfixes | \> cmake --build . --config Release --target bugfix_tests |
| unit_test | $ ctest -R unit | \> cmake --build . --config Release --target unit_test |
| version_test | $ ctest -R version | \> cmake --build . --config Release --target version_test |
The name **bashTests** is historical. The tests are implemented in python.
[TOC](#TOC)
<div id="4-6">

Loading…
Cancel
Save