Exemplo n.º 1
0
 def setUp(self):
     self.test_report = reports.Report()
     # declaring all files
     self.test_files = set(
         [files.File("test_file.c"),
          files.File("second.c")])
     for file_ in self.test_files:
         file_.validity = False
     # declaring all functions
     self.functions = {
         "test_file.c": functions.Function("test_file.c", "func"),
         "second.c": functions.Function("second.c", "second")
     }
     self.functions["test_file.c"].validity = False
     self.functions["second.c"].validity = False
     # adding one function to each file
     for file_ in self.test_files:
         file_.functions.add(self.functions[file_.name])
Exemplo n.º 2
0
 def setUp(self):
     xml_parser = etree.XMLParser(remove_comments=True)
     self.tree = etree.parse("samples/sample.xml", parser=xml_parser)
     self.rules_tree = etree.parse(
         "samples/rules_sample.xml", parser=xml_parser
     )
     self.test_func = functions.Function(
         r"STV\Trieuse\stv\src\ttpdsext.c", "initttpdsext()"
     )
Exemplo n.º 3
0
    def test_load_metrics(self):
        """ test the load_metrics method """
        # The asked function doesn't exist in the sample file
        my_bad_func = functions.Function(
            r"STV\Trieuse\stv\src\ttpdsext.c", "initttpxt()"
        )

        with self.assertRaises(functions.FunctionNotFound):
            my_bad_func.load_metrics(self.tree)

        self.test_func.load_metrics(self.tree)
        self.assertEqual(self.test_func.metrics.complexity, 6)
        self.assertEqual(self.test_func.metrics.statements, 25)
        self.assertEqual(self.test_func.metrics.maximum_depth, 4)
        self.assertEqual(self.test_func.metrics.calls, 0)
Exemplo n.º 4
0
    def test_add_bad_function(self):
        """ test the add_bad_function """
        second_test_func = functions.Function("test_file.c", "second")
        report = self.test_report

        report.add_bad_function(self.functions["test_file.c"])
        self.assertEqual(report.nb_bad_functions, 1)
        self.assertEqual(report.nb_bad_functions_for_file["test_file.c"], 1)
        self.assertEqual(len(report.bad_functions), 1)
        self.assertEqual(len(report.bad_functions["test_file.c"]), 1)

        report.add_bad_function(second_test_func)
        self.assertEqual(report.nb_bad_functions, 2)
        self.assertEqual(report.nb_bad_functions_for_file["test_file.c"], 2)
        self.assertEqual(len(report.bad_functions), 1)
        self.assertEqual(len(report.bad_functions["test_file.c"]), 2)
Exemplo n.º 5
0
    def test_search_tree(self):
        """
            Test for the search_tree method used to search a specific
            function's tree
        """
        my_bad_func = functions.Function(
            r"STV\Trieuse\stv\src\ttpdsext.c", "test()"
        )
        with self.assertRaises(functions.FunctionNotFound):
            my_bad_func.search_tree(self.tree)

        self.assertEqual(
            etree.tostring(self.test_func.search_tree(self.tree)),
            b'<function name="initttpdsext()" line="35">\n' +
            b'                <complexity>6</complexity>\n' +
            b'                <statements>25</statements>\n' +
            b'                <maximum_depth>4</maximum_depth>\n' +
            b'                <calls>0</calls>\n' +
            b'              </function>\n              '
        )
Exemplo n.º 6
0
    def test_load_specific_rules(self):
        """ Test for the load_specific_rules method of the Function class """
        with self.assertRaises(rules_reader.BadRulesFormat):
            self.test_func.load_default_rules(self.tree)

        # function that has no specific rules
        no_rules_func = functions.Function(
            r"STV\Trieuse\stv\src\ttpdsext.c", "majtabpdsext()"
        )
        no_rules_func.load_specific_rules(self.rules_tree)
        self.assertEqual(no_rules_func.rules.complexity, 10)
        self.assertEqual(no_rules_func.rules.statements, 5)
        self.assertEqual(no_rules_func.rules.maximum_depth, "disable")
        self.assertEqual(no_rules_func.rules.calls, "disable")

        # We don't pre-load the default rules, load_specific_rules will do it
        self.test_func.load_specific_rules(self.rules_tree)
        self.assertEqual(self.test_func.rules.complexity, 5)
        self.assertEqual(self.test_func.rules.statements, 5)
        self.assertEqual(self.test_func.rules.maximum_depth, "disable")
        self.assertEqual(self.test_func.rules.calls, "disable")