From db392aeeea6e34c3aaa3a9961941a43053255ff0 Mon Sep 17 00:00:00 2001 From: Malcolm Langfield <35980963+langfield@users.noreply.github.com> Date: Mon, 12 Sep 2022 19:46:00 -0500 Subject: Fix bug where colons in paths raise a `ValueError` on `diff()` calls. This commit introduces a potential fix for #1490 and #1483, in which an `invalid literal for int() with base 10: 'n'` exception was raised within a diff operation. Within `_handle_diff_line()`, we split the output of `git diff-tree` on colons (`:` characters), under the assumption that there are no colons within the paths of the files being diffed. On POSIX systems this is not a valid assumption. The fix is to split on `\x00:`, since a null character always precedes the colons we actually need to split on. A test already existed for this case (`test_diff_file_with_colon()`), but it was marked as skipped. * Split on `\x00:` instead of `:` in `_handle_diff_line()`. * Unskip `test_diff_file_with_colon()`. --- test/test_diff.py | 1 - 1 file changed, 1 deletion(-) (limited to 'test') diff --git a/test/test_diff.py b/test/test_diff.py index 3e1c5ddc..dcf10018 100644 --- a/test/test_diff.py +++ b/test/test_diff.py @@ -236,7 +236,6 @@ class TestDiff(TestBase): res[0].b_path, ) - @unittest.skip("This currently fails and would need someone to improve diff parsing") def test_diff_file_with_colon(self): output = fixture("diff_file_with_colon") res = [] -- cgit v1.2.1