| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,6 +11,7 @@ | |||
| 11 | 11 | S_ISDIR, | |
| 12 | 12 | S_IFMT, | |
| 13 | 13 | S_IFREG, | |
| 14 | + S_IXUSR, | ||
| 14 | 15 | ) | |
| 15 | 16 | import subprocess | |
| 16 | 17 | ||
@@ -115,7 +116,7 @@ def stat_mode_to_index_mode(mode): | |||
| 115 | 116 | return S_IFLNK | |
| 116 | 117 | if S_ISDIR(mode) or S_IFMT(mode) == S_IFGITLINK: # submodules | |
| 117 | 118 | return S_IFGITLINK | |
| 118 | - return S_IFREG | 0o644 | (mode & 0o111) # blobs with or without executable bit | ||
| 119 | + return S_IFREG | (mode & S_IXUSR and 0o755 or 0o644) # blobs with or without executable bit | ||
| 119 | 120 | ||
| 120 | 121 | ||
| 121 | 122 | def write_cache(entries: Sequence[Union[BaseIndexEntry, 'IndexEntry']], stream: IO[bytes], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,13 +1,14 @@ | |||
| 1 | 1 | from io import BytesIO | |
| 2 | - from stat import S_IFDIR, S_IFREG, S_IFLNK | ||
| 2 | + from stat import S_IFDIR, S_IFREG, S_IFLNK, S_IXUSR | ||
| 3 | 3 | from os import stat | |
| 4 | 4 | import os.path as osp | |
| 5 | 5 | from unittest import SkipTest | |
| 6 | 6 | ||
| 7 | 7 | from git import Git | |
| 8 | 8 | from git.index import IndexFile | |
| 9 | 9 | from git.index.fun import ( | |
| 10 | - aggressive_tree_merge | ||
| 10 | + aggressive_tree_merge, | ||
| 11 | + stat_mode_to_index_mode, | ||
| 11 | 12 | ) | |
| 12 | 13 | from git.objects.fun import ( | |
| 13 | 14 | traverse_tree_recursive, | |
@@ -206,6 +207,16 @@ def assert_entries(entries, num_entries, has_conflict=False): | |||
| 206 | 207 | assert_entries(aggressive_tree_merge(odb, trees), 2, True) | |
| 207 | 208 | # END handle ours, theirs | |
| 208 | 209 | ||
| 210 | + def test_stat_mode_to_index_mode(self): | ||
| 211 | + modes = ( | ||
| 212 | + 0o600, 0o611, 0o640, 0o641, 0o644, 0o650, 0o651, | ||
| 213 | + 0o700, 0o711, 0o740, 0o744, 0o750, 0o751, 0o755, | ||
| 214 | + ) | ||
| 215 | + for mode in modes: | ||
| 216 | + expected_mode = S_IFREG | (mode & S_IXUSR and 0o755 or 0o644) | ||
| 217 | + assert stat_mode_to_index_mode(mode) == expected_mode | ||
| 218 | + # END for each mode | ||
| 219 | + | ||
| 209 | 220 | def _assert_tree_entries(self, entries, num_trees): | |
| 210 | 221 | for entry in entries: | |
| 211 | 222 | assert len(entry) == num_trees | |
| Back | FazBrowse Home | New Git URL |
0 commit comments