Commit e89ae36
committed
Fix unicode handling in git diff output
When git encounters unicode characters in filenames, it uses C-style
quoting with octal sequences, e.g.:
`src/17_\360\237\252\201_testfile.py`.
The `diff()` funciton was using `strings.Fields()` to split git output
which preserves the quotes around the path. When matching against
patterns like `projects/<kite>/**`, comparison fails due to path string
including surrounding quotes leaving escape sequences uninterpreted.
The fix checks each field from git diff output, and if it's quoted, it
uses `strconv.Unqoute()` to remove quote and decode escape sequences
into Unicode characters.
Also, added tests to verify that quoted paths are decoded correctly
(TestDiffWithQuotedPaths), and test for pattern matching
(TestStepsToTriggerWithEmojiPaths).1 parent 46011f7 commit e89ae36
2 files changed
Lines changed: 48 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
104 | 105 | | |
105 | 106 | | |
106 | 107 | | |
107 | | - | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
108 | 127 | | |
109 | 128 | | |
110 | 129 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
122 | 150 | | |
123 | 151 | | |
124 | 152 | | |
| |||
0 commit comments