Commit bbfddf66 by anthraxx Committed by Alexander Popov

support logical OR operations on options

The OR class implementation supports combining Opt's logically
with an or-operator. If any of the Opt's provided to the OR class
returns True, the check is considered OK.

Fixes #1

Conflicts resolved by @a13xp0p0v
parent f662d0ed
...@@ -49,6 +49,41 @@ class OptCheck: ...@@ -49,6 +49,41 @@ class OptCheck:
return '{} = {}'.format(self.name, self.state) return '{} = {}'.format(self.name, self.state)
class OR:
def __init__(self, *opts):
self.opts = opts
self.result = None
@property
def name(self):
return self.opts[0].name
@property
def expected(self):
return self.opts[0].expected
@property
def state(self):
return self.opts[0].state
@property
def decision(self):
return self.opts[0].decision
@property
def reason(self):
return self.opts[0].reason
def check(self):
for opt in self.opts:
result, msg = opt.check()
if result:
self.result = 'OK (CONFIG_{} {})'.format(opt.name, opt.state)
return result, self.result
self.result = 'FAIL: "{}"'.format(self.opts[0].state)
return False, self.result
def construct_opt_checks(): def construct_opt_checks():
checklist.append(OptCheck('BUG', 'y', 'ubuntu18', 'self_protection')) checklist.append(OptCheck('BUG', 'y', 'ubuntu18', 'self_protection'))
checklist.append(OptCheck('PAGE_TABLE_ISOLATION', 'y', 'ubuntu18', 'self_protection')) checklist.append(OptCheck('PAGE_TABLE_ISOLATION', 'y', 'ubuntu18', 'self_protection'))
...@@ -178,6 +213,10 @@ def get_option_state(options, name): ...@@ -178,6 +213,10 @@ def get_option_state(options, name):
def perform_checks(parsed_options): def perform_checks(parsed_options):
for opt in checklist: for opt in checklist:
if hasattr(opt, 'opts'):
for o in opt.opts:
o.state = get_option_state(parsed_options, o.name)
else:
opt.state = get_option_state(parsed_options, opt.name) opt.state = get_option_state(parsed_options, opt.name)
opt.check() opt.check()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment