diff --git a/diff_cover/snippets.py b/diff_cover/snippets.py index c78e0104..11524148 100644 --- a/diff_cover/snippets.py +++ b/diff_cover/snippets.py @@ -116,18 +116,33 @@ def markdown(self): Return a Markdown representation of the snippet using Markdown fenced code blocks. See https://github.github.com/gfm/#fenced-code-blocks. """ + + line_number_length = len(str(self._last_line)) + + text = "" + for i, line in enumerate(self.text().splitlines(), start=self._start_line): + if i > self._start_line: + text += "\n" + + notice = " " + if i in self._violation_lines: + notice = "!" + + format_string = "{} {:>" + str(line_number_length) + "} {}" + text += format_string.format(notice, i, line) + header = "Lines %d-%d\n\n" % (self._start_line, self._last_line) if self._lexer_name in self.LEXER_TO_MARKDOWN_CODE_HINT: return header + ( "```" + self.LEXER_TO_MARKDOWN_CODE_HINT[self._lexer_name] + "\n" - + self.text() + + text + "\n```\n" ) # unknown programming language, return a non-decorated fenced code block: - return "```\n" + self.text() + "\n```\n" + return "```\n" + text + "\n```\n" def terminal(self): """ diff --git a/tests/fixtures/snippet_list.md b/tests/fixtures/snippet_list.md index c51a72e0..e312b9a1 100644 --- a/tests/fixtures/snippet_list.md +++ b/tests/fixtures/snippet_list.md @@ -1,38 +1,38 @@ Lines 6-17 ```python -Line 6 -Line 7 -Line 8 -Line 9 -Line 10 -Line 11 -Line 12 -Line 13 -Line 14 -Line 15 -Line 16 -Line 17 + 6 Line 6 + 7 Line 7 + 8 Line 8 + 9 Line 9 +! 10 Line 10 + 11 Line 11 +! 12 Line 12 +! 13 Line 13 + 14 Line 14 + 15 Line 15 + 16 Line 16 + 17 Line 17 ``` Lines 46-61 ```python -Line 46 -Line 47 -Line 48 -Line 49 -Line 50 -Line 51 -Line 52 -Line 53 -Line 54 -Line 55 -Line 56 -Line 57 -Line 58 -Line 59 -Line 60 -Line 61 + 46 Line 46 + 47 Line 47 + 48 Line 48 + 49 Line 49 +! 50 Line 50 +! 51 Line 51 + 52 Line 52 + 53 Line 53 +! 54 Line 54 +! 55 Line 55 + 56 Line 56 +! 57 Line 57 + 58 Line 58 + 59 Line 59 + 60 Line 60 + 61 Line 61 ``` diff --git a/tests/fixtures/snippet_list2.md b/tests/fixtures/snippet_list2.md index 760032f4..19030514 100644 --- a/tests/fixtures/snippet_list2.md +++ b/tests/fixtures/snippet_list2.md @@ -1,11 +1,10 @@ Lines 1-7 ```cpp -#include - -int main() { - std::cout << "Hello World!"; - return 0; -} - -``` \ No newline at end of file + 1 #include + 2 + 3 int main() { +! 4 std::cout << "Hello World!"; +! 5 return 0; + 6 } +``` diff --git a/tests/fixtures/snippet_list3.md b/tests/fixtures/snippet_list3.md index 3cdca63a..d8a17896 100644 --- a/tests/fixtures/snippet_list3.md +++ b/tests/fixtures/snippet_list3.md @@ -1,13 +1,13 @@ Lines 8-16 ```cpp - // this is line 8 - printf("Test2"); - - // this is line 11 - printf("Test"); -} - -int main() -{ + 8 // this is line 8 + 9 printf("Test2"); + 10 + 11 // this is line 11 +! 12 printf("Test"); + 13 } + 14 + 15 int main() + 16 { ```