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_FILE
to the absolute path of thelibclang.dll/.so/.dylib
- Specify the absolute path to the
libclang.dll/.so/.dylib
using the-l
parameter
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.