mirror of
https://github.com/falcosecurity/falco.git
synced 2026-03-19 03:06:22 +00:00
Now that ASTs contain parse positions, use them when reporting errors about unknown macros. When doing the first pass to find all macro references, save macros as a map<macro name,parse position> instead of a set<macro name>. While making that change, change the visitor struct to use references instead of pointers. In the second pass, when reporting any unresolved macro references, also report the parse position. The unit tests also check that the positions of macros are properly returned in the resolved/unresolved maps. Signed-off-by: Mark Stemm <mark.stemm@gmail.com>
Falco unit tests
This folder contains the unit-tests suite for Falco. The framework we use for unit-tests is Catch2, while the one we use for mocking is FakeIt.
How to write tests
When you want to test a new file or test a non tested file, remember four steps:
- The folder structure here is the same as the one in the
userspacefolder, souserspace/enginebecomestests/engine. - We call test files with this format
test_<original-file-name>.cpp - Update the
CMakeLists.txtfile to include your file inFALCO_TESTS_SOURCESand change theFALCO_TESTED_LIBRARIESaccordingly. You might also need to add dependencies, in that case, look attarget_link_librariesandtarget_include_directories - If you are unsure on how to write tests, refer to our existing tests in this folder and to the Catch2 documentation.
How to execute tests
The suite can be configured with cmake and run with make.
In the root folder of Falco, after creating the build directory:
cd falco
mkdir build
cd build
You can prepare the tests with:
cmake ..
Optionally, you can customize the test suite by passing custom arguments like the examples below:
filter all tests containing the word ctor
cmake -DFALCO_TESTS_ARGUMENTS:STRING="-R ctor" ..
verbose execution
cmake -DFALCO_TESTS_ARGUMENTS:STRING="-V" ..
To see a list of all the custom arguments you may pass, execute ctest --help in your terminal.
Once you are ready, you can run your configuration with:
make tests