Using an IDE
If you are using the CLion IDE, put
-j 1 in Preferences -> Build, Execution, Deployment -> CMake
-> Build options, to prevent CMake from building with multiple
processes. Also, note that code introspection in the CLion editor may
not work until it has run CMake.
If you are using the Code::Blocks_ IDE, you can build a cdb project:
cd build cmake .. -G "CodeBlocks - Unix Makefiles"
We use two test frameworks. We use googletest for unit test and pytest for end-to-end tests.
To add end-to-end tests, add a Python class in a file whose name begins
test, in the
test directory. The class's methods, whose names
must also begin with
test, should use the
manager fixture defined in
test/conftest.py, which handles starting and stopping a Sipi server,
and provides other functionality useful in tests. See the existing
test/test_*.py files for examples.
To facilitate testing client HTTP connections in Lua scripts, the
manager fixture also starts and stops an
nginx instance, which can
be used to simulate an authorization server. For example, the provided
nginx configuration file,
act as a dummy Knora API server for permission
/v1/files route returns a static JSON file that always
grants permission to view the requested file.
Commit Message Schema
When writing commit messages, we stick to this schema:
type (scope): subject body
- feature (new feature for the user)
- fix (bug fix for the user)
- docs (changes to the documentation)
- style (formatting, etc)
- refactor (refactoring production code, e.g. renaming a variable)
- test (adding missing tests, refactoring tests)
- build (changes to CMake configuration, etc.)
- enhancement (residual category)
feature (HTTP server): support more authentication methods