mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 16:35:02 +01:00

python 3 uses only the 'str' type, while python 2 also uses 'unicode'. This patch adds a type_is_str() function to common.py - depending on the python version, it checks for both. This helper function is used to keep the complexity outside of the rule classes. The rule classes get adjusted to use type_is_str() instead of checking for type(x) == str, which means they support both python versions. Finally, add test-common.py with some tests for type_is_str(). References: https://bugs.launchpad.net/apparmor/+bug/1513880 Acked-by: Tyler Hicks <tyhicks@canonical.com> for trunk and 2.10 Note: 2.10 doesn't contain SignalRule and aare.py, and rule/__init__.py doesn't have check_and_split_list(), therefore it doesn't get those parts of the patch.
32 lines
903 B
Python
32 lines
903 B
Python
#! /usr/bin/env python
|
|
# ------------------------------------------------------------------
|
|
#
|
|
# Copyright (C) 2015 Christian Boltz <apparmor@cboltz.de>
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of version 2 of the GNU General Public
|
|
# License published by the Free Software Foundation.
|
|
#
|
|
# ------------------------------------------------------------------
|
|
|
|
import unittest
|
|
from common_test import AATest, setup_all_loops
|
|
|
|
from apparmor.common import type_is_str
|
|
|
|
class TestIs_str_type(AATest):
|
|
tests = [
|
|
('foo', True),
|
|
(u'foo', True),
|
|
(42, False),
|
|
(True, False),
|
|
([], False),
|
|
]
|
|
|
|
def _run_test(self, params, expected):
|
|
self.assertEqual(type_is_str(params), expected)
|
|
|
|
|
|
setup_all_loops(__name__)
|
|
if __name__ == '__main__':
|
|
unittest.main(verbosity=2)
|