From 161863ea4fdefb858452c68c6bc64caa3045d1e9 Mon Sep 17 00:00:00 2001 From: Zygmunt Krynicki Date: Tue, 21 Jan 2025 20:52:36 +0100 Subject: [PATCH] utils: adjusts aa-notify tests to handle Python 3.13+ Python 3.13 changes the formatting of long-short option pairs that use a meta-variable. Up until 3.13 the meta-variable was repeated. Since Python change [1] the meta-var is only printed once. [1] https://github.com/python/cpython/pull/103372 Signed-off-by: Zygmunt Krynicki (cherry picked from commit 6336465edfc9eac73f8d28f4b84561b10fcb78aa) Signed-off-by: John Johansen --- utils/test/test-aa-notify.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/utils/test/test-aa-notify.py b/utils/test/test-aa-notify.py index 971645633..bc2a9dc6f 100644 --- a/utils/test/test-aa-notify.py +++ b/utils/test/test-aa-notify.py @@ -209,14 +209,13 @@ Display AppArmor notifications or messages for DENIED entries. -p, --poll poll AppArmor logs and display notifications --display DISPLAY set the DISPLAY environment variable (might be needed if sudo resets $DISPLAY) - -f FILE, --file FILE search FILE for AppArmor messages + -f, --file FILE search FILE for AppArmor messages -l, --since-last display stats since last login - -s NUM, --since-days NUM - show stats for last NUM days (can be used alone or with + -s, --since-days NUM show stats for last NUM days (can be used alone or with -p) -v, --verbose show messages with stats - -u USER, --user USER user to drop privileges to when not using sudo - -w NUM, --wait NUM wait NUM seconds before displaying notifications (with + -u, --user USER user to drop privileges to when not using sudo + -w, --wait NUM wait NUM seconds before displaying notifications (with -p) --prompt-filter PF kind of operations which display a popup prompt --debug debug mode @@ -238,6 +237,28 @@ Filtering options: regular expression to match the network socket type ''' # noqa: E128 + if sys.version_info[:2] < (3, 13): + # Python 3.13 tweaked argparse output [1]. When running on older + # Python versions, we adapt the expected output to match. + # + # https://github.com/python/cpython/pull/103372 + patches = [( + ' -f, --file FILE search FILE for AppArmor messages', + ' -f FILE, --file FILE search FILE for AppArmor messages', + ), ( + ' -s, --since-days NUM show stats for last NUM days (can be used alone or with', + ' -s NUM, --since-days NUM\n' + + ' show stats for last NUM days (can be used alone or with', + ), ( + ' -u, --user USER user to drop privileges to when not using sudo', + ' -u USER, --user USER user to drop privileges to when not using sudo', + ), ( + ' -w, --wait NUM wait NUM seconds before displaying notifications (with', + ' -w NUM, --wait NUM wait NUM seconds before displaying notifications (with', + )] + for patch in patches: + expected_output_2 = expected_output_2.replace(patch[0], patch[1]) + return_code, output = cmd(aanotify_bin + ['--help']) result = 'Got return code {}, expected {}\n'.format(return_code, expected_return_code) self.assertEqual(expected_return_code, return_code, result + output)