def test_no_code(self, utils_mock): utils_mock.return_value = "" finding = Finding({"file": "-file-"}) with assert_raises(SnippetUnavailableException): finding.get_snippets(["/base"])
def test_extraction_error(self, utils_mock): utils_mock.side_effect = CommandFailedError("cmd", "output") finding = Finding({"file": "-file-", "method": "-method-"}) with assert_raises(SnippetUnavailableException): finding.get_snippets(["/base"])
def test_extraction_error(self, utils_mock): utils_mock.side_effect = CommandFailedError("cmd", "output") finding = Finding({"file": "-file-", "method": "-method-"}) with assert_raises(SnippetUnavailableException) as context: finding.get_snippets("/base") assert_equals('/base/-file-', context.exception.file) assert_equals(utils_mock.side_effect, context.exception.exception)
def test_loads_snippet_absolute_path(self, utils_mock): utils_mock.side_effect = lambda tool, args: \ "42:T:-code-" if tool == "MethodExtractor" and args == '"/-absolute-file-" "-method-"' else "" finding = Finding({"file": "/-absolute-file-", "method": "-method-"}) assert_equals(1, len(finding.get_snippets(["/base"])))
def test_loads_snippet(self, utils_mock): utils_mock.side_effect = lambda tool, args:\ "42:T:-code-" if tool == "MethodExtractor" and args == '"/base/-file-" "-method-"' else "" finding = Finding({"file": "-file-", "method": "-method-"}) assert_equals([Snippet("class T {\n-code-\n}", 41)], finding.get_snippets("/base"))
def test_filters_by_startline(self, utils_mock): utils_mock.return_value = "42:T:t-code\n===\n32:A:a\nb\nc\n===\n22:N:n-code" finding = Finding({ "file": "-file-", "method": "-method-", "startline": 33 }) snippets = finding.get_snippets(["/base"]) assert_equals([Snippet("class A {\na\nb\nc\n}", 31)], snippets)
def _create_finding(self, data: Dict, convert_mock=None, file_paths=None, snippets=None): if snippets is None: snippets = [] if file_paths is None: file_paths = [] finding = Finding(data) finding.get_snippets = lambda source_paths: \ snippets if source_paths == ["/sources/-p-/-v-/build/"] else {}["illegal source paths: %s" % source_paths] if convert_mock is not None: self.created_files_per_finding[str(finding)] = file_paths convert_mock.side_effect = lambda f, p: self.created_files_per_finding[str(f)] return finding
def test_strips_additional_output(self, utils_mock): utils_mock.return_value = "Arbitrary additional output\n1:C:code" finding = Finding({"file": "-file-", "method": "-method-"}) assert_equals(1, len(finding.get_snippets(["/base"])))
def test_loads_multiple_snippets(self, utils_mock): utils_mock.return_value = "42:T:t-code\n===\n32:A:a-code" finding = Finding({"file": "-file-", "method": "-method-"}) assert_equals(2, len(finding.get_snippets(["/base"])))
def test_no_code(self, utils_mock): utils_mock.return_value = "" finding = Finding({"file": "-file-"}) assert_equals(finding.get_snippets("/base"), [])
def test_extraction_error(self, utils_mock): utils_mock.side_effect = CommandFailedError("cmd", "output") finding = Finding({"file": "-file-", "method": "-method-"}) assert_equals([Snippet("Failed to execute 'cmd': output", 1)], finding.get_snippets("/base"))