![]() audit.log entries for mount events don't always include `class=mount`, but can still be the base for mount rules. Change logparser.py to also consider `operation=mount` as a mount event. Actually we already had such a log and profile in our collection (testcase_mount_01), but since it existed years before MountRule was implemented, it was excluded in test-libapparmor-test_multi.py. Therefore we didn't notice that it failed to produce a profile rule when MountRule was introduced. Remove testcase_mount_01 from the list of known failures so that it gets tested - and fix the syntax error in the hand-written testcase_mount_01.profile. Also add testcase_mount_02 which is a mount event without fstype, srcname and class. I propose this fix for 4.0 and master. MR: https://gitlab.com/apparmor/apparmor/-/merge_requests/1229 Approved-by: Georgia Garcia <georgia.garcia@canonical.com> Merged-by: Georgia Garcia <georgia.garcia@canonical.com> (cherry picked from commit |
||
---|---|---|
.. | ||
logprof | ||
wtmp-examples | ||
cleanprof_test.in | ||
cleanprof_test.out | ||
common_test.py | ||
easyprof.conf | ||
fake_ldd | ||
logprof.conf | ||
Makefile | ||
README.md | ||
runtests-py3.sh | ||
severity.db | ||
severity_broken.db | ||
test-aa-cli-bootstrap.py | ||
test-aa-decode.py | ||
test-aa-easyprof.py | ||
test-aa-notify.py | ||
test-aa.py | ||
test-aare.py | ||
test-abi.py | ||
test-alias.py | ||
test-all.py | ||
test-baserule.py | ||
test-boolean.py | ||
test-capability.py | ||
test-change_profile.py | ||
test-common.py | ||
test-config.py | ||
test-dbus.py | ||
test-example.py | ||
test-file.py | ||
test-include.py | ||
test-io_uring.py | ||
test-libapparmor-test_multi.py | ||
test-logparser.py | ||
test-logprof.py | ||
test-minitools.py | ||
test-mount.py | ||
test-mqueue.py | ||
test-network.py | ||
test-notify.py | ||
test-parser-simple-tests.py | ||
test-pivot_root_parse.py | ||
test-profile-list.py | ||
test-profile-storage.py | ||
test-profiles.py | ||
test-ptrace.py | ||
test-regex_matches.py | ||
test-rlimit.py | ||
test-severity.py | ||
test-signal.py | ||
test-translations.py | ||
test-unix_parse.py | ||
test-userns.py | ||
test-variable.py |
Test data generated elsewhere
The tests in parser
generate additional test profiles in
parser/tst/simple_tests/
: see gen-dbus.py
and gen-xtrans.py
.
utils/test/test-parser-simple-tests.py
uses this test data when it is
available. If this test data has not been generated, this test will not
complain: it will simply exercise fewer test profiles.
Running individual tests
Python's unittest allows individual tests to be executed by specifying the class name and the test on the command line. When running tests individually, the unittest framework executes the "setUp" and "tearDown" methods automatically. For more information, refer to the unittest documentation.
Make sure to set the environment variables pointing to the in-tree apparmor modules, and the in-tree libapparmor and its python wrapper:
$ export PYTHONPATH=..:../../libraries/libapparmor/swig/python/build/$(/usr/bin/python3 ../../libraries/libapparmor/swig/python/test/buildpath.py)
$ export __AA_CONFDIR=.
To execute the test individually, run:
$ python3 ./test-tile.py ClassFoo.test_bar