drmock-generator is a component of the C++ testing/mocking framework
DrMock. It takes a C++ .h file as
input and generates the files for a mock implementation of the interface
specified in the original header file, which the DrMock framework then
consumes.
The framework contains a CMake integration of drmock-generator. Unless
you're using a different build manager, you will not need to call
drmock-generator directly. If you're interested in writing integrations for
other build managers, feel free to contact us for support!
Run pip install . or make install install. Usage requires
python>=3.7, python-clang>=11.0 and libclang. Install
python-clang via pip install clang. For libclang:
sudo apt-get install libclang-7.0-dev (on Linux)
choco install llvm (on Windows)
See chocolatey.org for details. On macOS,
libclang is installed by default.
Type drmock-generator --help for instructions. You must pass the path to the
libclang.dll/.so/.dylib in one of two ways:
- Set the environment variable
CLANG_LIBRARY_FILEto the absolute path of thelibclang.dll/.so/.dylib - Specify the absolute path to the
libclang.dll/.so/.dylibusing the-lparameter
The following paths are usually correct:
/usr/lib/llvm-7/lib/libclang.so (on Linux)
C:\Program Files\LLVM\bin\libclang.dll (on Windows using choco)
/Library/Developer/CommandLineTools/usr/lib/libclang.dylib (on macOS)
On Windows, if you have trouble including STL headers, you may need to
set the environment variable DRMOCK_GENERATOR_INCLUDE to the directory
which contains the C++ headers. drmock-generator will then add an
automatic -I%DRMOCK_GENERATOR_INCLUDE% flag to the compiler call.
To run all tests, call make. The environment variable
CLANG_LIBRARY_FILE must be set in order to test the translator
module.
Due to the irreducible complexity of the output of drmock-generator, any
significant changes should be tested against the latest version of the
C++ framework, as well.
See CONTRIBUTING.md.
Details on the interface implemented by output code of drmock-generator is
compliant with
DrMock specification
of the C++ framework.