Passed
Push — master ( 66e359...958bc0 )
by Jan
04:16 queued 12s
created

ClientArfInput.load_file()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
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