Testing

Plaso comes with multiple forms of tests:

  • unit tests

  • end-to-end tests

Unit tests

The unit tests are intended to detect issues after individual changes (pull requests). Unit tests are typically small by nature and only test a specific part of the code.

The unit tests are stored in the tests sub directory, in the same parent directory as the plaso module directory. The unit tests can be run with:

python run_tests.py

Or if you have tox installed:

tox -epy310

The unit tests are also run on GitHub and AppVeyor after every pull request or commit to detect issues early.

End-to-end tests

The end-to-end tests are intended to test the Plaso tools as a user would run them. To run the end-to-end tests you’ll need:

  • the end-to-end test runner script, which is tests/end-to-end.py

  • end-to-end tests configuration, for example config/end-to-end.ini

  • location of the reference data, to compare test output against

  • location of the result data

  • location of the source data

For example, to run the predefined end-to-end tests:

PYTHONPATH=. python ./tests/end-to-end.py --debug -c config/end-to-end.ini --references-directory test_reference_data --results-directory test_results --sources-directory test_source_data

The predefined end-to-end tests are also run automatically on GitHub after every commit (code submit).

Running end-to-end tests with Docker

To run end-to-end tests with Docker you’ll need:

  • Linux with Docker installed

  • the end-to-end test Docker script, which is config/end_to_end/run_tests_with_docker.sh

  • location of the end-to-end tests configurations

  • location of the result data

  • location of the source data

./config/end_to_end/run_tests_with_docker.sh /greendale/configs /greendale/sources /greendale/results