1
|
1 |
|
from ..arf_xml_parser.arf_xml_parser import ARFXMLParser |
2
|
1 |
|
from ..exceptions import NotTestedRule |
3
|
1 |
|
from .client import Client |
4
|
|
|
|
5
|
|
|
|
6
|
1 |
|
class ClientArfInput(Client): |
7
|
1 |
|
def __init__(self, args): |
8
|
1 |
|
super().__init__(args) |
9
|
1 |
|
self.show_failed_rules = self.arg.show_failed_rules |
10
|
1 |
|
self.show_not_selected_rules = self.arg.show_not_selected_rules |
11
|
1 |
|
self.show_not_tested_rules = self.arg.show_not_tested_rules |
12
|
1 |
|
self.arf_xml_parser = None |
13
|
|
|
|
14
|
1 |
|
def load_file(self): |
15
|
1 |
|
self.arf_xml_parser = ARFXMLParser(self.source_filename) |
16
|
|
|
|
17
|
1 |
|
def _get_not_selected_rules(self): |
18
|
1 |
|
rules = [] |
19
|
1 |
|
for rule, result in self.arf_xml_parser.not_tested_rules.items(): |
20
|
1 |
|
if result == 'notselected': |
21
|
1 |
|
rules.append(rule) |
22
|
1 |
|
return rules |
23
|
|
|
|
24
|
1 |
|
def _get_rows_of_unselected_rules(self): |
25
|
1 |
|
out = [] |
26
|
1 |
|
not_selected_rules = self._get_wanted_rules(self._get_not_selected_rules()) |
27
|
1 |
|
maxlen = len(max(not_selected_rules, key=len)) |
28
|
1 |
|
pattern = '{rule:' + str(maxlen) + '} (Not selected)' |
29
|
1 |
|
out.append('== The not selected rule IDs ==') |
30
|
1 |
|
for rule in not_selected_rules: |
31
|
1 |
|
out.append(pattern.format(rule=rule)) |
32
|
1 |
|
return out |
33
|
|
|
|
34
|
1 |
|
def get_only_fail_rule(self, rules): |
35
|
1 |
|
return list( |
36
|
|
|
filter( |
37
|
|
|
lambda rule: self.arf_xml_parser.used_rules[rule]['result'] == 'fail', |
38
|
|
|
rules)) |
39
|
|
|
|
40
|
1 |
|
def _get_rows_not_visualizable_rules(self): |
41
|
|
|
out = [] |
42
|
|
|
out.append('== The not tested rule IDs ==') |
43
|
|
|
maxlen = len(max(self.arf_xml_parser.not_tested_rules.keys(), key=len)) |
44
|
|
|
pattern = '{rule:' + str(maxlen) + '} {result}' |
45
|
|
|
for rule, result in self.arf_xml_parser.not_tested_rules.items(): |
46
|
|
|
out.append(pattern.format(rule=rule, result=result)) |
47
|
|
|
return out |
48
|
|
|
|
49
|
1 |
|
def get_matched_not_tested_rules(self): |
50
|
1 |
|
return self._get_wanted_rules(self.arf_xml_parser.not_tested_rules.keys()) |
51
|
|
|
|
52
|
1 |
|
def search_rules_id(self): |
53
|
1 |
|
wanted_rules = self._get_wanted_rules(self.arf_xml_parser.used_rules.keys()) |
54
|
1 |
|
not_tested_rule = self.get_matched_not_tested_rules() |
55
|
1 |
|
if not wanted_rules and not not_tested_rule: |
56
|
1 |
|
raise ValueError('404 rule "{}" not found!'.format(self.rule_name)) |
57
|
1 |
|
if self.rule_name in not_tested_rule: |
58
|
1 |
|
raise NotTestedRule( |
59
|
|
|
'Rule "{}" is {}, so there are no results.' |
60
|
|
|
.format(self.rule_name, self.arf_xml_parser.not_tested_rules[self.rule_name])) |
61
|
|
|
return wanted_rules |
62
|
|
|
|