Update static testing and fix identified issues.

* Change pep8 to new pycodestyle tool.
* Load the policrep extension in pylint
This commit is contained in:
Chris PeBenito 2018-08-11 14:38:58 -04:00
parent 2b4d69d42e
commit 6d7a672611
60 changed files with 311 additions and 306 deletions

View File

@ -28,7 +28,7 @@ unsafe-load-any-extension=no
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=
extension-pkg-whitelist=setools.policyrep
# Allow optimization of some AST trees. This will activate a peephole AST
# optimizer, which will apply various small optimizations. For instance, it can

1
sedta
View File

@ -66,6 +66,7 @@ def print_transition(trans):
print()
parser = argparse.ArgumentParser(
description="SELinux policy domain transition analysis tool.",
epilog="If no analysis is selected, all forward transitions out of the source will be printed.")

8
seinfo
View File

@ -29,20 +29,20 @@ def expand_attr(attr):
contents = items if items else "<empty attribute>"
return "{0}\n\t{1}".format(attr.statement(), contents)
parser = argparse.ArgumentParser(
description="SELinux policy information tool.")
parser = argparse.ArgumentParser(description="SELinux policy information tool.")
parser.add_argument("--version", action="version", version=setools.__version__)
parser.add_argument("policy", help="Path to the SELinux policy to query.", nargs="?")
parser.add_argument("-x", "--expand", action="store_true",
help="Print additional information about the specified components.")
parser.add_argument("--flat", help="Print without item count nor indentation.",
parser.add_argument("--flat", help="Print without item count nor indentation.",
dest="flat", default=False, action="store_true")
parser.add_argument("-v", "--verbose", action="store_true",
help="Print extra informational messages")
parser.add_argument("--debug", action="store_true", dest="debug", help="Enable debugging.")
queries = parser.add_argument_group("Component Queries")
queries.add_argument("-a", "--attribute", help="Print type attributes.", dest="typeattrquery",
queries.add_argument("-a", "--attribute", help="Print type attributes.", dest="typeattrquery",
nargs='?', const=True, metavar="ATTR")
queries.add_argument("-b", "--bool", help="Print Booleans.", dest="boolquery",
nargs='?', const=True, metavar="BOOL")

View File

@ -29,8 +29,8 @@ import logging
# Python classes for policy representation
from .policyrep import SELinuxPolicy, BoundsRuletype, ConstraintRuletype, DefaultRuletype, \
DefaultRangeValue, DefaultValue, FSUseRuletype, HandleUnknown, MLSRuletype, \
NodeconIPVersion, PolicyTarget, PortconProtocol, RBACRuletype, TERuletype
DefaultRangeValue, DefaultValue, FSUseRuletype, HandleUnknown, MLSRuletype, \
NodeconIPVersion, PolicyTarget, PortconProtocol, RBACRuletype, TERuletype
# Exceptions
from . import exception

View File

@ -125,24 +125,24 @@ class ConstraintQuery(MatchObjClass, MatchPermission, PolicyQuery):
continue
if self.role and not self._match_expr(
c.roles,
self.role,
self.role_indirect,
self.role_regex):
continue
c.roles,
self.role,
self.role_indirect,
self.role_regex):
continue
if self.type_ and not self._match_expr(
c.types,
self.type_,
self.type_indirect,
self.type_regex):
continue
c.types,
self.type_,
self.type_indirect,
self.type_regex):
continue
if self.user and not self._match_expr(
c.users,
self.user,
False,
self.user_regex):
continue
c.users,
self.user,
False,
self.user_regex):
continue
yield c

View File

@ -114,4 +114,4 @@ class BoundsWrapper(Wrapper):
def __eq__(self, other):
return self.ruletype == other.ruletype and \
self.child == other.child
self.child == other.child

View File

@ -221,6 +221,6 @@ class ConstraintWrapper(Wrapper):
def __eq__(self, other):
return self.ruletype == other.ruletype and \
self.tclass == other.tclass and \
self.perms == other.perms and \
self.expr == other.expr
self.tclass == other.tclass and \
self.perms == other.perms and \
self.expr == other.expr

View File

@ -45,6 +45,6 @@ class ContextWrapper(Wrapper):
def __eq__(self, other):
return self.user == other.user and \
self.role == other.role and \
self.type_ == other.type_ and \
self.range_ == other.range_
self.role == other.role and \
self.type_ == other.type_ and \
self.range_ == other.range_

View File

@ -112,4 +112,4 @@ class DefaultWrapper(Wrapper):
def __eq__(self, other):
return self.ruletype == other.ruletype and \
self.tclass == other.tclass
self.tclass == other.tclass

View File

@ -114,17 +114,18 @@ class Difference:
"Matched items assertion failure (this is an SETools bug), {0} != {1}". \
format(len(left_matched_items), len(right_matched_items))
for l, r in zip(left_matched_items, right_matched_items):
assert l == r, \
"Matched items assertion failure (this is an SETools bug), {0} != {1}".format(l, r)
for left, right in zip(left_matched_items, right_matched_items):
assert left == right, \
"Matched items assertion failure (this is an SETools bug), {0} != {1}".format(
left, right)
matched_items.add((l, r))
matched_items.add((left, right))
try:
# unwrap the objects
return set(i.origin for i in added_items), \
set(i.origin for i in removed_items), \
set((l.origin, r.origin) for (l, r) in matched_items)
set(i.origin for i in removed_items), \
set((left.origin, right.origin) for (left, right) in matched_items)
except AttributeError:
return added_items, removed_items, matched_items

View File

@ -90,5 +90,5 @@ class GenfsconWrapper(Wrapper):
def __eq__(self, other):
return self.fs == other.fs and \
self.path == other.path and \
self.filetype == other.filetype
self.path == other.path and \
self.filetype == other.filetype

View File

@ -237,7 +237,7 @@ class LevelWrapper(Wrapper):
def __eq__(self, other):
try:
return self.sensitivity == other.sensitivity and \
self.categories == other.categories
self.categories == other.categories
except AttributeError:
# comparing an MLS policy to non-MLS policy will result in
# other being None
@ -264,7 +264,7 @@ class RangeWrapper(Wrapper):
def __eq__(self, other):
try:
return self.low == other.low and \
self.high == other.high
self.high == other.high
except AttributeError:
# comparing an MLS policy to non-MLS policy will result in
# other being None

View File

@ -55,10 +55,10 @@ class MLSRulesDifference(Difference):
self._create_mls_rule_lists()
added, removed, matched = self._set_diff(
self._expand_generator(self._left_mls_rules[MLSRuletype.range_transition],
MLSRuleWrapper),
self._expand_generator(self._right_mls_rules[MLSRuletype.range_transition],
MLSRuleWrapper))
self._expand_generator(self._left_mls_rules[MLSRuletype.range_transition],
MLSRuleWrapper),
self._expand_generator(self._right_mls_rules[MLSRuletype.range_transition],
MLSRuleWrapper))
modified = []
@ -126,5 +126,5 @@ class MLSRuleWrapper(Wrapper):
# because MLSRuleDifference groups rules by ruletype,
# the ruletype always matches.
return self.source == other.source and \
self.target == other.target and \
self.tclass == other.tclass
self.target == other.target and \
self.tclass == other.tclass

View File

@ -88,4 +88,4 @@ class NodeconWrapper(Wrapper):
def __eq__(self, other):
return self.ip_version == other.ip_version and \
self.network == other.network
self.network == other.network

View File

@ -87,5 +87,5 @@ class PortconWrapper(Wrapper):
def __eq__(self, other):
return self.protocol == other.protocol and \
self.low == other.low and \
self.high == other.high
self.low == other.low and \
self.high == other.high

View File

@ -170,5 +170,5 @@ class RoleTransitionWrapper(Wrapper):
# because RBACRuleDifference groups rules by ruletype,
# the ruletype always matches.
return self.source == other.source and \
self.target == other.target and \
self.tclass == other.tclass
self.target == other.target and \
self.tclass == other.tclass

View File

@ -81,8 +81,8 @@ def av_diff_template(ruletype):
self._create_te_rule_lists()
added, removed, matched = self._set_diff(
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleWrapper),
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleWrapper))
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleWrapper),
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleWrapper))
modified = []
for left_rule, right_rule in matched:
@ -128,8 +128,8 @@ def avx_diff_template(ruletype):
self._create_te_rule_lists()
added, removed, matched = self._set_diff(
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleXpermWrapper),
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleXpermWrapper))
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleXpermWrapper),
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleXpermWrapper))
modified = []
for left_rule, right_rule in matched:
@ -175,8 +175,8 @@ def te_diff_template(ruletype):
self._create_te_rule_lists()
added, removed, matched = self._set_diff(
self._expand_generator(self._left_te_rules[ruletype], TERuleWrapper),
self._expand_generator(self._right_te_rules[ruletype], TERuleWrapper))
self._expand_generator(self._left_te_rules[ruletype], TERuleWrapper),
self._expand_generator(self._right_te_rules[ruletype], TERuleWrapper))
modified = []
for left_rule, right_rule in matched:
@ -349,10 +349,10 @@ class AVRuleWrapper(Wrapper):
# because TERuleDifference groups rules by ruletype,
# the ruletype always matches.
return self.source == other.source and \
self.target == other.target and \
self.tclass == other.tclass and \
self.conditional == other.conditional and \
self.conditional_block == other.conditional_block
self.target == other.target and \
self.tclass == other.tclass and \
self.conditional == other.conditional and \
self.conditional_block == other.conditional_block
class AVRuleXpermWrapper(Wrapper):
@ -379,9 +379,9 @@ class AVRuleXpermWrapper(Wrapper):
# because TERuleDifference groups rules by ruletype,
# the ruletype always matches.
return self.source == other.source and \
self.target == other.target and \
self.tclass == other.tclass and \
self.xperm_type == other.xperm_type
self.target == other.target and \
self.tclass == other.tclass and \
self.xperm_type == other.xperm_type
class TERuleWrapper(Wrapper):
@ -419,8 +419,8 @@ class TERuleWrapper(Wrapper):
# because TERuleDifference groups rules by ruletype,
# the ruletype always matches.
return self.source == other.source and \
self.target == other.target and \
self.tclass == other.tclass and \
self.conditional == other.conditional and \
self.conditional_block == other.conditional_block and \
self.filename == self.filename
self.target == other.target and \
self.tclass == other.tclass and \
self.conditional == other.conditional and \
self.conditional_block == other.conditional_block and \
self.filename == self.filename

View File

@ -157,6 +157,8 @@ class InvalidUser(InvalidSymbol):
#
# Rule type exceptions
#
class InvalidRuleType(InvalidSymbol):
"""Exception for invalid rule types."""

View File

@ -116,7 +116,7 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer
if high < low:
high, low = low, high
pending_xperms.update(i for i in range(low, high+1))
pending_xperms.update(i for i in range(low, high + 1))
self._xperms = pending_xperms
else:

View File

@ -126,18 +126,18 @@ def match_range(obj, criteria, subset, overlap, superset, proper):
if overlap:
return ((obj.low <= criteria.low <= obj.high) or (
obj.low <= criteria.high <= obj.high) or (
criteria.low <= obj.low and obj.high <= criteria.high))
obj.low <= criteria.high <= obj.high) or (
criteria.low <= obj.low and obj.high <= criteria.high))
elif subset:
if proper:
return ((obj.low < criteria.low and criteria.high <= obj.high) or (
obj.low <= criteria.low and criteria.high < obj.high))
obj.low <= criteria.low and criteria.high < obj.high))
else:
return obj.low <= criteria.low and criteria.high <= obj.high
elif superset:
if proper:
return ((criteria.low < obj.low and obj.high <= criteria.high) or (
criteria.low <= obj.low and obj.high < criteria.high))
criteria.low <= obj.low and obj.high < criteria.high))
else:
return (criteria.low <= obj.low and obj.high <= criteria.high)
else:

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class BoolQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class BoundsQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class CategoryQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class CommonQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class ConstraintQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from ..defaultmodel import DefaultTableModel
from .analysistab import AnalysisTab
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_comboboxes, load_listviews, load_textedits, \
save_checkboxes, save_comboboxes, save_listviews, save_textedits
save_checkboxes, save_comboboxes, save_listviews, save_textedits
class DefaultQueryTab(AnalysisTab):

View File

@ -22,7 +22,7 @@ import logging
from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
from PyQt5.QtGui import QPalette, QTextCursor
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
QTreeWidgetItem
QTreeWidgetItem
from setools import DomainTransitionAnalysis
from ..logtosignal import LogHandlerToSignal
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
from .excludetypes import ExcludeTypes
from .exception import TabFieldError
from .workspace import load_checkboxes, load_spinboxes, load_lineedits, load_textedits, \
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
class DomainTransitionAnalysisTab(AnalysisTab):

View File

@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class FSUseQueryTab(AnalysisTab):

View File

@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class GenfsconQueryTab(AnalysisTab):

View File

@ -25,7 +25,7 @@ from contextlib import suppress
from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
from PyQt5.QtGui import QPalette, QTextCursor
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
QTreeWidgetItem
QTreeWidgetItem
from setools import InfoFlowAnalysis
from setools.exception import UnmappedClass, UnmappedPermission
@ -35,7 +35,7 @@ from .exception import TabFieldError
from .excludetypes import ExcludeTypes
from .permmapedit import PermissionMapEditor
from .workspace import load_checkboxes, load_spinboxes, load_lineedits, load_textedits, \
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
class InfoFlowAnalysisTab(AnalysisTab):

View File

@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class InitialSIDQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class MLSRuleQueryTab(AnalysisTab):

View File

@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class NetifconQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, load_comboboxes, \
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
class NodeconQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class ObjClassQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, load_comboboxes, \
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
class PortconQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class RBACRuleQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class RoleQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
save_checkboxes, save_lineedits, save_textedits
save_checkboxes, save_lineedits, save_textedits
class SensitivityQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class TERuleQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class TypeAttributeQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class TypeQueryTab(AnalysisTab):

View File

@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
from .exception import TabFieldError
from .queryupdater import QueryResultsUpdater
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
save_checkboxes, save_lineedits, save_listviews, save_textedits
save_checkboxes, save_lineedits, save_listviews, save_textedits
class UserQueryTab(AnalysisTab):

View File

@ -20,7 +20,7 @@ import logging
from contextlib import suppress
from PyQt5.QtCore import QAbstractListModel, QItemSelectionModel, QAbstractTableModel, \
QModelIndex, QStringListModel, Qt
QModelIndex, QStringListModel, Qt
from setools.exception import NoCommon

View File

@ -19,7 +19,7 @@
from PyQt5.QtCore import Qt, QModelIndex
from PyQt5.QtGui import QKeySequence, QCursor
from PyQt5.QtWidgets import QAction, QApplication, QFileDialog, QMenu, QTreeWidget, \
QTreeWidgetItemIterator
QTreeWidgetItemIterator
class SEToolsTreeWidget(QTreeWidget):
@ -56,10 +56,10 @@ class SEToolsTreeWidget(QTreeWidget):
parent = parent.parent()
if depth < prev_depth:
items.extend([" |"*depth, "\n"])
items.extend([" |" * depth, "\n"])
if depth:
items.extend([" |"*depth, "--", item.text(0), "\n"])
items.extend([" |" * depth, "--", item.text(0), "\n"])
else:
items.extend([item.text(0), "\n"])

View File

@ -37,19 +37,19 @@ def user_detail(parent, user):
roles = sorted(user.roles)
detail.append_header("Roles ({0}):".format(len(roles)))
for r in roles:
detail.append(" {0}".format(r))
for role in roles:
detail.append(" {0}".format(role))
try:
l = user.mls_level
r = user.mls_range
level = user.mls_level
range_ = user.mls_range
except MLSDisabled:
pass
else:
detail.append_header("\nDefault MLS Level:")
detail.append(" {0}".format(l))
detail.append(" {0}".format(level))
detail.append_header("\nMLS Range:")
detail.append(" {0}".format(r))
detail.append(" {0}".format(range_))
detail.show()

View File

@ -284,11 +284,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_allow_rules(self):
"""Diff: modified allow rules."""
l = sorted(self.diff.modified_allows, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_allows, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.allow, rule.ruletype)
self.assertEqual("modified_rule_add_perms", rule.source)
self.assertEqual("modified_rule_add_perms", rule.target)
@ -298,7 +298,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["hi_r"]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.allow, rule.ruletype)
self.assertEqual("modified_rule_add_remove_perms", rule.source)
self.assertEqual("modified_rule_add_remove_perms", rule.target)
@ -308,7 +308,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["low_w"]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.allow, rule.ruletype)
self.assertEqual("modified_rule_remove_perms", rule.source)
self.assertEqual("modified_rule_remove_perms", rule.target)
@ -372,11 +372,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_auditallow_rules(self):
"""Diff: modified auditallow rules."""
l = sorted(self.diff.modified_auditallows, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_auditallows, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.auditallow, rule.ruletype)
self.assertEqual("aa_modified_rule_add_perms", rule.source)
self.assertEqual("aa_modified_rule_add_perms", rule.target)
@ -386,7 +386,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["hi_r"]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.auditallow, rule.ruletype)
self.assertEqual("aa_modified_rule_add_remove_perms", rule.source)
self.assertEqual("aa_modified_rule_add_remove_perms", rule.target)
@ -396,7 +396,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["low_w"]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.auditallow, rule.ruletype)
self.assertEqual("aa_modified_rule_remove_perms", rule.source)
self.assertEqual("aa_modified_rule_remove_perms", rule.target)
@ -460,11 +460,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_dontaudit_rules(self):
"""Diff: modified dontaudit rules."""
l = sorted(self.diff.modified_dontaudits, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_dontaudits, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.dontaudit, rule.ruletype)
self.assertEqual("da_modified_rule_add_perms", rule.source)
self.assertEqual("da_modified_rule_add_perms", rule.target)
@ -474,7 +474,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["hi_r"]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.dontaudit, rule.ruletype)
self.assertEqual("da_modified_rule_add_remove_perms", rule.source)
self.assertEqual("da_modified_rule_add_remove_perms", rule.target)
@ -484,7 +484,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set(["low_w"]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.dontaudit, rule.ruletype)
self.assertEqual("da_modified_rule_remove_perms", rule.source)
self.assertEqual("da_modified_rule_remove_perms", rule.target)
@ -619,10 +619,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_type_transition_rules(self):
"""Diff: modified type_transition rules."""
l = sorted(self.diff.modified_type_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_type_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_default, removed_default = l[0]
rule, added_default, removed_default = lst[0]
self.assertEqual(TRT.type_transition, rule.ruletype)
self.assertEqual("tt_matched_source", rule.source)
self.assertEqual("system", rule.target)
@ -685,10 +685,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_type_change_rules(self):
"""Diff: modified type_change rules."""
l = sorted(self.diff.modified_type_changes, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_type_changes, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_default, removed_default = l[0]
rule, added_default, removed_default = lst[0]
self.assertEqual(TRT.type_change, rule.ruletype)
self.assertEqual("tc_matched_source", rule.source)
self.assertEqual("system", rule.target)
@ -751,10 +751,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_type_member_rules(self):
"""Diff: modified type_member rules."""
l = sorted(self.diff.modified_type_members, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_type_members, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_default, removed_default = l[0]
rule, added_default, removed_default = lst[0]
self.assertEqual(TRT.type_member, rule.ruletype)
self.assertEqual("tm_matched_source", rule.source)
self.assertEqual("system", rule.target)
@ -793,10 +793,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_range_transition_rules(self):
"""Diff: modified range_transition rules."""
l = sorted(self.diff.modified_range_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_range_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_default, removed_default = l[0]
rule, added_default, removed_default = lst[0]
self.assertEqual(MRT.range_transition, rule.ruletype)
self.assertEqual("rt_matched_source", rule.source)
self.assertEqual("system", rule.target)
@ -868,10 +868,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_role_transition_rules(self):
"""Diff: modified role_transition rules."""
l = sorted(self.diff.modified_role_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_role_transitions, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_default, removed_default = l[0]
rule, added_default, removed_default = lst[0]
self.assertEqual(RRT.role_transition, rule.ruletype)
self.assertEqual("role_tr_matched_source", rule.source)
self.assertEqual("role_tr_matched_target", rule.target)
@ -1025,30 +1025,30 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_fs_uses(self):
"""Diff: added fs_uses."""
l = sorted(self.diff.added_fs_uses)
self.assertEqual(1, len(l))
lst = sorted(self.diff.added_fs_uses)
self.assertEqual(1, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual(FSURT.fs_use_xattr, rule.ruletype)
self.assertEqual("added_fsuse", rule.fs)
self.assertEqual("system:object_r:system:s0", rule.context)
def test_removed_fs_uses(self):
"""Diff: removed fs_uses."""
l = sorted(self.diff.removed_fs_uses)
self.assertEqual(1, len(l))
lst = sorted(self.diff.removed_fs_uses)
self.assertEqual(1, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual(FSURT.fs_use_task, rule.ruletype)
self.assertEqual("removed_fsuse", rule.fs)
self.assertEqual("system:object_r:system:s0", rule.context)
def test_modified_fs_uses(self):
"""Diff: modified fs_uses."""
l = sorted(self.diff.modified_fs_uses, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_fs_uses, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_context, removed_context = l[0]
rule, added_context, removed_context = lst[0]
self.assertEqual(FSURT.fs_use_trans, rule.ruletype)
self.assertEqual("modified_fsuse", rule.fs)
self.assertEqual("added_user:object_r:system:s1", added_context)
@ -1059,40 +1059,40 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_genfscons(self):
"""Diff: added genfscons."""
l = sorted(self.diff.added_genfscons)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_genfscons)
self.assertEqual(2, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual("added_genfs", rule.fs)
self.assertEqual("/", rule.path)
self.assertEqual("added_user:object_r:system:s0", rule.context)
rule = l[1]
rule = lst[1]
self.assertEqual("change_path", rule.fs)
self.assertEqual("/new", rule.path)
self.assertEqual("system:object_r:system:s0", rule.context)
def test_removed_genfscons(self):
"""Diff: removed genfscons."""
l = sorted(self.diff.removed_genfscons)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_genfscons)
self.assertEqual(2, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual("change_path", rule.fs)
self.assertEqual("/old", rule.path)
self.assertEqual("system:object_r:system:s0", rule.context)
rule = l[1]
rule = lst[1]
self.assertEqual("removed_genfs", rule.fs)
self.assertEqual("/", rule.path)
self.assertEqual("system:object_r:system:s0", rule.context)
def test_modified_genfscons(self):
"""Diff: modified genfscons."""
l = sorted(self.diff.modified_genfscons, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_genfscons, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
rule, added_context, removed_context = l[0]
rule, added_context, removed_context = lst[0]
self.assertEqual("modified_genfs", rule.fs)
self.assertEqual("/", rule.path)
self.assertEqual("added_user:object_r:system:s0", added_context)
@ -1103,27 +1103,27 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_levels(self):
"""Diff: added levels."""
l = sorted(self.diff.added_levels)
self.assertEqual(1, len(l))
self.assertEqual("s46:c0.c4", l[0])
lst = sorted(self.diff.added_levels)
self.assertEqual(1, len(lst))
self.assertEqual("s46:c0.c4", lst[0])
def test_removed_levels(self):
"""Diff: removed levels."""
l = sorted(self.diff.removed_levels)
self.assertEqual(1, len(l))
self.assertEqual("s47:c0.c4", l[0])
lst = sorted(self.diff.removed_levels)
self.assertEqual(1, len(lst))
self.assertEqual("s47:c0.c4", lst[0])
def test_modified_levels(self):
"""Diff: modified levels."""
l = sorted(self.diff.modified_levels)
self.assertEqual(2, len(l))
lst = sorted(self.diff.modified_levels)
self.assertEqual(2, len(lst))
level = l[0]
level = lst[0]
self.assertEqual("s40", level.level.sensitivity)
self.assertSetEqual(set(["c3"]), level.added_categories)
self.assertFalse(level.removed_categories)
level = l[1]
level = lst[1]
self.assertEqual("s41", level.level.sensitivity)
self.assertFalse(level.added_categories)
self.assertSetEqual(set(["c4"]), level.removed_categories)
@ -1133,31 +1133,31 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_netifcons(self):
"""Diff: added netifcons."""
l = sorted(self.diff.added_netifcons)
self.assertEqual(1, len(l))
lst = sorted(self.diff.added_netifcons)
self.assertEqual(1, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual("added_netif", rule.netif)
self.assertEqual("system:object_r:system:s0", rule.context)
self.assertEqual("system:object_r:system:s0", rule.packet)
def test_removed_netifcons(self):
"""Diff: removed netifcons."""
l = sorted(self.diff.removed_netifcons)
self.assertEqual(1, len(l))
lst = sorted(self.diff.removed_netifcons)
self.assertEqual(1, len(lst))
rule = l[0]
rule = lst[0]
self.assertEqual("removed_netif", rule.netif)
self.assertEqual("system:object_r:system:s0", rule.context)
self.assertEqual("system:object_r:system:s0", rule.packet)
def test_modified_netifcons(self):
"""Diff: modified netifcons."""
l = sorted(self.diff.modified_netifcons, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_netifcons, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# modified both contexts
rule, added_context, removed_context, added_packet, removed_packet = l[0]
rule, added_context, removed_context, added_packet, removed_packet = lst[0]
self.assertEqual("mod_both_netif", rule.netif)
self.assertEqual("added_user:object_r:system:s0", added_context)
self.assertEqual("removed_user:object_r:system:s0", removed_context)
@ -1165,7 +1165,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertEqual("removed_user:object_r:system:s0", removed_packet)
# modified context
rule, added_context, removed_context, added_packet, removed_packet = l[1]
rule, added_context, removed_context, added_packet, removed_packet = lst[1]
self.assertEqual("mod_ctx_netif", rule.netif)
self.assertEqual("added_user:object_r:system:s0", added_context)
self.assertEqual("removed_user:object_r:system:s0", removed_context)
@ -1173,7 +1173,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertIsNone(removed_packet)
# modified packet context
rule, added_context, removed_context, added_packet, removed_packet = l[2]
rule, added_context, removed_context, added_packet, removed_packet = lst[2]
self.assertEqual("mod_pkt_netif", rule.netif)
self.assertIsNone(added_context)
self.assertIsNone(removed_context)
@ -1185,59 +1185,59 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_nodecons(self):
"""Diff: added nodecons."""
l = sorted(self.diff.added_nodecons)
self.assertEqual(4, len(l))
lst = sorted(self.diff.added_nodecons)
self.assertEqual(4, len(lst))
# new IPv4
nodecon = l[0]
nodecon = lst[0]
self.assertEqual(IPv4Network("124.0.0.0/8"), nodecon.network)
# changed IPv4 netmask
nodecon = l[1]
nodecon = lst[1]
self.assertEqual(IPv4Network("125.0.0.0/16"), nodecon.network)
# new IPv6
nodecon = l[2]
nodecon = lst[2]
self.assertEqual(IPv6Network("ff04::/62"), nodecon.network)
# changed IPv6 netmask
nodecon = l[3]
nodecon = lst[3]
self.assertEqual(IPv6Network("ff05::/60"), nodecon.network)
def test_removed_nodecons(self):
"""Diff: removed nodecons."""
l = sorted(self.diff.removed_nodecons)
self.assertEqual(4, len(l))
lst = sorted(self.diff.removed_nodecons)
self.assertEqual(4, len(lst))
# new IPv4
nodecon = l[0]
nodecon = lst[0]
self.assertEqual(IPv4Network("122.0.0.0/8"), nodecon.network)
# changed IPv4 netmask
nodecon = l[1]
nodecon = lst[1]
self.assertEqual(IPv4Network("125.0.0.0/8"), nodecon.network)
# new IPv6
nodecon = l[2]
nodecon = lst[2]
self.assertEqual(IPv6Network("ff02::/62"), nodecon.network)
# changed IPv6 netmask
nodecon = l[3]
nodecon = lst[3]
self.assertEqual(IPv6Network("ff05::/62"), nodecon.network)
def test_modified_nodecons(self):
"""Diff: modified nodecons."""
l = sorted(self.diff.modified_nodecons, key=lambda x: x.rule)
self.assertEqual(2, len(l))
lst = sorted(self.diff.modified_nodecons, key=lambda x: x.rule)
self.assertEqual(2, len(lst))
# changed IPv4
nodecon, added_context, removed_context = l[0]
nodecon, added_context, removed_context = lst[0]
self.assertEqual(IPv4Network("123.0.0.0/8"), nodecon.network)
self.assertEqual("modified_change_level:object_r:system:s2:c0", added_context)
self.assertEqual("modified_change_level:object_r:system:s2:c1", removed_context)
# changed IPv6
nodecon, added_context, removed_context = l[1]
nodecon, added_context, removed_context = lst[1]
self.assertEqual(IPv6Network("ff03::/62"), nodecon.network)
self.assertEqual("modified_change_level:object_r:system:s2:c1", added_context)
self.assertEqual("modified_change_level:object_r:system:s2:c0.c1", removed_context)
@ -1258,42 +1258,42 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_portcons(self):
"""Diff: added portcons."""
l = sorted(self.diff.added_portcons)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_portcons)
self.assertEqual(2, len(lst))
portcon = l[0]
portcon = lst[0]
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
self.assertTupleEqual((2024, 2026), portcon.ports)
portcon = l[1]
portcon = lst[1]
self.assertEqual(PortconProtocol.udp, portcon.protocol)
self.assertTupleEqual((2024, 2024), portcon.ports)
def test_removed_portcons(self):
"""Diff: removed portcons."""
l = sorted(self.diff.removed_portcons)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_portcons)
self.assertEqual(2, len(lst))
portcon = l[0]
portcon = lst[0]
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
self.assertTupleEqual((1024, 1026), portcon.ports)
portcon = l[1]
portcon = lst[1]
self.assertEqual(PortconProtocol.udp, portcon.protocol)
self.assertTupleEqual((1024, 1024), portcon.ports)
def test_modified_portcons(self):
"""Diff: modified portcons."""
l = sorted(self.diff.modified_portcons, key=lambda x: x.rule)
self.assertEqual(2, len(l))
lst = sorted(self.diff.modified_portcons, key=lambda x: x.rule)
self.assertEqual(2, len(lst))
portcon, added_context, removed_context = l[0]
portcon, added_context, removed_context = lst[0]
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
self.assertTupleEqual((3024, 3026), portcon.ports)
self.assertEqual("added_user:object_r:system:s1", added_context)
self.assertEqual("removed_user:object_r:system:s0", removed_context)
portcon, added_context, removed_context = l[1]
portcon, added_context, removed_context = lst[1]
self.assertEqual(PortconProtocol.udp, portcon.protocol)
self.assertTupleEqual((3024, 3024), portcon.ports)
self.assertEqual("added_user:object_r:system:s1", added_context)
@ -1304,36 +1304,36 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_defaults(self):
"""Diff: added defaults."""
l = sorted(self.diff.added_defaults)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_defaults)
self.assertEqual(2, len(lst))
default = l[0]
default = lst[0]
self.assertEqual(DRT.default_range, default.ruletype)
self.assertEqual("infoflow2", default.tclass)
default = l[1]
default = lst[1]
self.assertEqual(DRT.default_user, default.ruletype)
self.assertEqual("infoflow2", default.tclass)
def test_removed_defaults(self):
"""Diff: removed defaults."""
l = sorted(self.diff.removed_defaults)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_defaults)
self.assertEqual(2, len(lst))
default = l[0]
default = lst[0]
self.assertEqual(DRT.default_range, default.ruletype)
self.assertEqual("infoflow3", default.tclass)
default = l[1]
default = lst[1]
self.assertEqual(DRT.default_role, default.ruletype)
self.assertEqual("infoflow3", default.tclass)
def test_modified_defaults(self):
"""Diff: modified defaults."""
l = sorted(self.diff.modified_defaults, key=lambda x: x.rule)
self.assertEqual(4, len(l))
lst = sorted(self.diff.modified_defaults, key=lambda x: x.rule)
self.assertEqual(4, len(lst))
default, added_default, removed_default, added_range, removed_range = l[0]
default, added_default, removed_default, added_range, removed_range = lst[0]
self.assertEqual(DRT.default_range, default.ruletype)
self.assertEqual("infoflow4", default.tclass)
self.assertEqual(DV.target, added_default)
@ -1341,7 +1341,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertIsNone(added_range)
self.assertIsNone(removed_range)
default, added_default, removed_default, added_range, removed_range = l[1]
default, added_default, removed_default, added_range, removed_range = lst[1]
self.assertEqual(DRT.default_range, default.ruletype)
self.assertEqual("infoflow5", default.tclass)
self.assertIsNone(added_default)
@ -1349,7 +1349,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertEqual(DRV.high, added_range)
self.assertEqual(DRV.low, removed_range)
default, added_default, removed_default, added_range, removed_range = l[2]
default, added_default, removed_default, added_range, removed_range = lst[2]
self.assertEqual(DRT.default_range, default.ruletype)
self.assertEqual("infoflow6", default.tclass)
self.assertEqual(DV.target, added_default)
@ -1357,7 +1357,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertEqual(DRV.low, added_range)
self.assertEqual(DRV.high, removed_range)
default, added_default, removed_default, added_range, removed_range = l[3]
default, added_default, removed_default, added_range, removed_range = lst[3]
self.assertEqual(DRT.default_type, default.ruletype)
self.assertEqual("infoflow4", default.tclass)
self.assertEqual(DV.target, added_default)
@ -1370,16 +1370,16 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_constrains(self):
"""Diff: added constrains."""
l = sorted(self.diff.added_constrains)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_constrains)
self.assertEqual(2, len(lst))
constrain = l[0]
constrain = lst[0]
self.assertEqual(CRT.constrain, constrain.ruletype)
self.assertEqual("infoflow3", constrain.tclass)
self.assertSetEqual(set(["null"]), constrain.perms)
self.assertListEqual(["u1", "u2", "!="], constrain.postfix_expression())
constrain = l[1]
constrain = lst[1]
self.assertEqual(CRT.constrain, constrain.ruletype)
self.assertEqual("infoflow5", constrain.tclass)
self.assertSetEqual(set(["hi_r"]), constrain.perms)
@ -1389,16 +1389,16 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_removed_constrains(self):
"""Diff: removed constrains."""
l = sorted(self.diff.removed_constrains)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_constrains)
self.assertEqual(2, len(lst))
constrain = l[0]
constrain = lst[0]
self.assertEqual(CRT.constrain, constrain.ruletype)
self.assertEqual("infoflow4", constrain.tclass)
self.assertSetEqual(set(["hi_w"]), constrain.perms)
self.assertListEqual(["u1", "u2", "!="], constrain.postfix_expression())
constrain = l[1]
constrain = lst[1]
self.assertEqual(CRT.constrain, constrain.ruletype)
self.assertEqual("infoflow5", constrain.tclass)
self.assertSetEqual(set(["hi_r"]), constrain.perms)
@ -1411,10 +1411,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_mlsconstrains(self):
"""Diff: added mlsconstrains."""
l = sorted(self.diff.added_mlsconstrains)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_mlsconstrains)
self.assertEqual(2, len(lst))
mlsconstrain = l[0]
mlsconstrain = lst[0]
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
self.assertEqual("infoflow3", mlsconstrain.tclass)
self.assertSetEqual(set(["null"]), mlsconstrain.perms)
@ -1423,7 +1423,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
't1', set(["mls_exempt"]), '!=', 'or'],
mlsconstrain.postfix_expression())
mlsconstrain = l[1]
mlsconstrain = lst[1]
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
self.assertEqual("infoflow5", mlsconstrain.tclass)
self.assertSetEqual(set(["hi_r"]), mlsconstrain.perms)
@ -1434,10 +1434,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_removed_mlsconstrains(self):
"""Diff: removed mlsconstrains."""
l = sorted(self.diff.removed_mlsconstrains)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_mlsconstrains)
self.assertEqual(2, len(lst))
mlsconstrain = l[0]
mlsconstrain = lst[0]
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
self.assertEqual("infoflow4", mlsconstrain.tclass)
self.assertSetEqual(set(["hi_w"]), mlsconstrain.perms)
@ -1446,7 +1446,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
't1', set(["mls_exempt"]), '==', 'or'],
mlsconstrain.postfix_expression())
mlsconstrain = l[1]
mlsconstrain = lst[1]
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
self.assertEqual("infoflow5", mlsconstrain.tclass)
self.assertSetEqual(set(["hi_r"]), mlsconstrain.perms)
@ -1459,17 +1459,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_validatetrans(self):
"""Diff: added validatetrans."""
l = sorted(self.diff.added_validatetrans)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_validatetrans)
self.assertEqual(2, len(lst))
validatetrans = l[0]
validatetrans = lst[0]
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
self.assertEqual("infoflow3", validatetrans.tclass)
self.assertListEqual(
['t1', 't2', '==', 't3', set(["system"]), '==', 'or'],
validatetrans.postfix_expression())
validatetrans = l[1]
validatetrans = lst[1]
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
self.assertEqual("infoflow5", validatetrans.tclass)
self.assertListEqual(
@ -1478,17 +1478,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_removed_validatetrans(self):
"""Diff: removed validatetrans."""
l = sorted(self.diff.removed_validatetrans)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_validatetrans)
self.assertEqual(2, len(lst))
validatetrans = l[0]
validatetrans = lst[0]
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
self.assertEqual("infoflow4", validatetrans.tclass)
self.assertListEqual(
['u1', 'u2', '==', 't3', set(["system"]), '==', 'or'],
validatetrans.postfix_expression())
validatetrans = l[1]
validatetrans = lst[1]
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
self.assertEqual("infoflow5", validatetrans.tclass)
self.assertListEqual(
@ -1500,17 +1500,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_mlsvalidatetrans(self):
"""Diff: added mlsvalidatetrans."""
l = sorted(self.diff.added_mlsvalidatetrans)
self.assertEqual(2, len(l))
lst = sorted(self.diff.added_mlsvalidatetrans)
self.assertEqual(2, len(lst))
mlsvalidatetrans = l[0]
mlsvalidatetrans = lst[0]
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
self.assertEqual("infoflow3", mlsvalidatetrans.tclass)
self.assertListEqual(
['l1', 'l2', '==', 'h1', 'h2', '==', 'and', 't3', set(["mls_exempt"]), '==', 'or'],
mlsvalidatetrans.postfix_expression())
mlsvalidatetrans = l[1]
mlsvalidatetrans = lst[1]
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
self.assertEqual("infoflow5", mlsvalidatetrans.tclass)
self.assertListEqual(
@ -1520,17 +1520,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_removed_mlsvalidatetrans(self):
"""Diff: removed mlsvalidatetrans."""
l = sorted(self.diff.removed_mlsvalidatetrans)
self.assertEqual(2, len(l))
lst = sorted(self.diff.removed_mlsvalidatetrans)
self.assertEqual(2, len(lst))
mlsvalidatetrans = l[0]
mlsvalidatetrans = lst[0]
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
self.assertEqual("infoflow4", mlsvalidatetrans.tclass)
self.assertListEqual(
['l1', 'l2', '==', 'h1', 'h2', '==', 'and', 't3', set(["mls_exempt"]), '==', 'or'],
mlsvalidatetrans.postfix_expression())
mlsvalidatetrans = l[1]
mlsvalidatetrans = lst[1]
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
self.assertEqual("infoflow5", mlsvalidatetrans.tclass)
self.assertListEqual(
@ -1542,30 +1542,30 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
#
def test_added_typebounds(self):
"""Diff: added typebounds."""
l = sorted(self.diff.added_typebounds)
self.assertEqual(1, len(l))
lst = sorted(self.diff.added_typebounds)
self.assertEqual(1, len(lst))
bounds = l[0]
bounds = lst[0]
self.assertEqual(BRT.typebounds, bounds.ruletype)
self.assertEqual("added_parent", bounds.parent)
self.assertEqual("added_child", bounds.child)
def test_removed_typebounds(self):
"""Diff: removed typebounds."""
l = sorted(self.diff.removed_typebounds)
self.assertEqual(1, len(l))
lst = sorted(self.diff.removed_typebounds)
self.assertEqual(1, len(lst))
bounds = l[0]
bounds = lst[0]
self.assertEqual(BRT.typebounds, bounds.ruletype)
self.assertEqual("removed_parent", bounds.parent)
self.assertEqual("removed_child", bounds.child)
def test_modified_typebounds(self):
"""Diff: modified typebounds."""
l = sorted(self.diff.modified_typebounds, key=lambda x: x.rule)
self.assertEqual(1, len(l))
lst = sorted(self.diff.modified_typebounds, key=lambda x: x.rule)
self.assertEqual(1, len(lst))
bounds, added_bound, removed_bound = l[0]
bounds, added_bound, removed_bound = lst[0]
self.assertEqual(BRT.typebounds, bounds.ruletype)
self.assertEqual("mod_child", bounds.child)
self.assertEqual("mod_parent_added", added_bound)
@ -1602,11 +1602,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_allowxperm_rules(self):
"""Diff: modified allowxperm rules."""
l = sorted(self.diff.modified_allowxperms, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_allowxperms, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.allowxperm, rule.ruletype)
self.assertEqual("ax_modified_rule_add_perms", rule.source)
self.assertEqual("ax_modified_rule_add_perms", rule.target)
@ -1616,7 +1616,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0004]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.allowxperm, rule.ruletype)
self.assertEqual("ax_modified_rule_add_remove_perms", rule.source)
self.assertEqual("ax_modified_rule_add_remove_perms", rule.target)
@ -1626,7 +1626,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0008]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.allowxperm, rule.ruletype)
self.assertEqual("ax_modified_rule_remove_perms", rule.source)
self.assertEqual("ax_modified_rule_remove_perms", rule.target)
@ -1666,11 +1666,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_auditallowxperm_rules(self):
"""Diff: modified auditallowxperm rules."""
l = sorted(self.diff.modified_auditallowxperms, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_auditallowxperms, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
self.assertEqual("aax_modified_rule_add_perms", rule.source)
self.assertEqual("aax_modified_rule_add_perms", rule.target)
@ -1680,7 +1680,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0004]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
self.assertEqual("aax_modified_rule_add_remove_perms", rule.source)
self.assertEqual("aax_modified_rule_add_remove_perms", rule.target)
@ -1690,7 +1690,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0008]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
self.assertEqual("aax_modified_rule_remove_perms", rule.source)
self.assertEqual("aax_modified_rule_remove_perms", rule.target)
@ -1800,11 +1800,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
def test_modified_dontauditxperm_rules(self):
"""Diff: modified dontauditxperm rules."""
l = sorted(self.diff.modified_dontauditxperms, key=lambda x: x.rule)
self.assertEqual(3, len(l))
lst = sorted(self.diff.modified_dontauditxperms, key=lambda x: x.rule)
self.assertEqual(3, len(lst))
# add permissions
rule, added_perms, removed_perms, matched_perms = l[0]
rule, added_perms, removed_perms, matched_perms = lst[0]
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
self.assertEqual("dax_modified_rule_add_perms", rule.source)
self.assertEqual("dax_modified_rule_add_perms", rule.target)
@ -1814,7 +1814,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0004]), matched_perms)
# add and remove permissions
rule, added_perms, removed_perms, matched_perms = l[1]
rule, added_perms, removed_perms, matched_perms = lst[1]
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
self.assertEqual("dax_modified_rule_add_remove_perms", rule.source)
self.assertEqual("dax_modified_rule_add_remove_perms", rule.target)
@ -1824,7 +1824,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
self.assertSetEqual(set([0x0008]), matched_perms)
# remove permissions
rule, added_perms, removed_perms, matched_perms = l[2]
rule, added_perms, removed_perms, matched_perms = lst[2]
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
self.assertEqual("dax_modified_rule_remove_perms", rule.source)
self.assertEqual("dax_modified_rule_remove_perms", rule.target)

View File

@ -512,7 +512,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(expected_path[stepnum], step.source)
self.assertEqual(expected_path[stepnum+1], step.target)
self.assertEqual(expected_path[stepnum + 1], step.target)
for r in step.transition:
self.assertIn("transition", r.perms)
@ -553,7 +553,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(expected_path[stepnum], step.source)
self.assertEqual(expected_path[stepnum+1], step.target)
self.assertEqual(expected_path[stepnum + 1], step.target)
for r in step.transition:
self.assertIn("transition", r.perms)
@ -594,7 +594,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(expected_path[stepnum], step.source)
self.assertEqual(expected_path[stepnum+1], step.target)
self.assertEqual(expected_path[stepnum + 1], step.target)
for r in step.transition:
self.assertIn("transition", r.perms)
@ -671,7 +671,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
for stepnum, step in enumerate(path):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(step.source, expected_path[stepnum+1])
self.assertEqual(step.source, expected_path[stepnum + 1])
self.assertEqual(step.target, expected_path[stepnum])
for r in step.transition:
@ -712,7 +712,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
for stepnum, step in enumerate(path):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(step.source, expected_path[stepnum+1])
self.assertEqual(step.source, expected_path[stepnum + 1])
self.assertEqual(step.target, expected_path[stepnum])
for r in step.transition:
@ -753,7 +753,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
for stepnum, step in enumerate(path):
self.assertIsInstance(step.source, Type)
self.assertIsInstance(step.target, Type)
self.assertEqual(expected_path[stepnum+1], step.source)
self.assertEqual(expected_path[stepnum + 1], step.source)
self.assertEqual(expected_path[stepnum], step.target)
for r in step.transition:

View File

@ -21,7 +21,7 @@ from unittest.mock import Mock
from setools import PermissionMap, TERuletype
from setools.exception import PermissionMapParseError, RuleTypeError, \
UnmappedClass, UnmappedPermission
UnmappedClass, UnmappedPermission
from .policyrep.util import compile_policy

View File

@ -21,7 +21,7 @@ import unittest
from unittest.mock import Mock, patch
from setools.exception import InvalidDefaultType, InvalidDefaultValue, \
InvalidDefaultRange, NoDefaults
InvalidDefaultRange, NoDefaults
@unittest.skip("Needs to be reworked for cython")

View File

@ -16,7 +16,7 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock, patch
@ -32,7 +32,7 @@ class InitialSIDTest(unittest.TestCase):
def mock_sid(name):
sid = Mock(qpol.qpol_isid_t)
sid.name.return_value = name
sid.context.return_value = name+"_context"
sid.context.return_value = name + "_context"
return sid
@classmethod

View File

@ -16,13 +16,13 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock
from setools import SELinuxPolicy
from setools.exception import MLSDisabled, InvalidLevel, InvalidLevelDecl, InvalidRange, \
InvalidSensitivity, InvalidCategory, NoStatement
InvalidSensitivity, InvalidCategory, NoStatement
@unittest.skip("Needs to be reworked for cython")

View File

@ -16,7 +16,7 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock
@ -94,7 +94,7 @@ class ObjClassTest(unittest.TestCase):
if com_perms:
com = Mock(qpol.qpol_common_t)
com.name.return_value = name+"_common"
com.name.return_value = name + "_common"
com.perm_iter = lambda x: iter(com_perms)
cls.common.return_value = com
else:

View File

@ -16,7 +16,7 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock

View File

@ -47,12 +47,10 @@ class SELinuxPolicyTest(unittest.TestCase):
"""SELinuxPolicy: Non existant policy on open."""
self.assertRaises(OSError, SELinuxPolicy, "tests/policyrep/DOES_NOT_EXIST")
@unittest.skip("Needs to be reworked for cython.")
def test_003_deepcopy(self):
"""SELinuxPolicy: Deep copy"""
p = copy.deepcopy(self.p)
self.assertIs(self.p.policy, p.policy)
self.assertIs(self.p.filename, p.filename)
self.assertIs(self.p, p)
def test_010_handle_unknown(self):
"""SELinuxPolicy: handle unknown setting."""
@ -231,7 +229,8 @@ class SELinuxPolicyLoadError(unittest.TestCase):
"""Test attempted loading of non-compiling policies."""
def _load_policy(self, policy):
self.assertRaises(InvalidPolicy, SELinuxPolicy, "tests/policyrep/invalid_policies/"+policy)
self.assertRaises(InvalidPolicy, SELinuxPolicy,
"tests/policyrep/invalid_policies/" + policy)
def test_nodecon_invalid_range(self):
"""SELinuxPolicy: invalid nodecon range (category not associated) error."""

View File

@ -22,7 +22,7 @@ from unittest.mock import Mock, patch
from setools import SELinuxPolicy
from setools.exception import InvalidTERuleType, RuleNotConditional, RuleUseError, \
TERuleNoFilename
TERuleNoFilename
@unittest.skip("Needs to be reworked for cython")

View File

@ -16,7 +16,7 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock, patch

View File

@ -16,7 +16,7 @@
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
#
# Until this is fixed for cython:
# pylint: disable=undefined-variable
# pylint: disable=undefined-variable,no-member
import unittest
from unittest.mock import Mock, patch

View File

@ -313,7 +313,7 @@ class TERuleQueryXperm(mixins.ValidateRule, unittest.TestCase):
r = sorted(q.results())
self.assertEqual(len(r), 1)
self.validate_rule(r[0], TRT.allowxperm, "test1a", "test1t", "infoflow",
set(range(0xebe0, 0xebff+1)), xperm="ioctl")
set(range(0xebe0, 0xebff + 1)), xperm="ioctl")
def test_002_source_indirect(self):
"""Xperm rule query with exact, indirect, source match."""

12
tox.ini
View File

@ -2,15 +2,17 @@
minversion = 1.4
envlist = py34, py35, py36
[pep8]
exclude = qpol.py
[pycodestyle]
max-line-length = 100
# W605 ignored because pycodestyle gets confused by a regex string
# in AVRuleTest test_103_statement_two_perms_cond
ignore = W605
[testenv:pep8]
deps = pep8
deps = pycodestyle
cython>=0.27
commands = pep8 --version
pep8 setools/ setoolsgui/ tests/ seinfo seinfoflow sedta sesearch sediff --statistics
commands = pycodestyle --version
pycodestyle setools/ setoolsgui/ tests/ seinfo seinfoflow sedta sesearch sediff --statistics
[testenv:coverage]
setenv = SETOOLS_COVERAGE = 1