|
21 | 21 | ALLOWED_FILENAME_REGEXP = "^[a-zA-Z0-9/_.@][a-zA-Z0-9/_.@-]*$"
|
22 | 22 | ALLOWED_SOURCE_FILENAME_REGEXP = "^[a-z0-9_./-]+$"
|
23 | 23 | ALLOWED_SOURCE_FILENAME_EXCEPTION_REGEXP = (
|
24 |
| - "^src/(secp256k1/|univalue/|test/fuzz/FuzzedDataProvider.h)" |
| 24 | + "^src/(dashbls/|immer/|secp256k1/|univalue/|test/fuzz/FuzzedDataProvider.h)" |
25 | 25 | )
|
26 | 26 | ALLOWED_PERMISSION_NON_EXECUTABLES = 0o644
|
27 | 27 | ALLOWED_PERMISSION_EXECUTABLES = 0o755
|
@@ -87,9 +87,10 @@ def check_all_filenames(files) -> int:
|
87 | 87 | """
|
88 | 88 | filenames = files.keys()
|
89 | 89 | filename_regex = re.compile(ALLOWED_FILENAME_REGEXP)
|
| 90 | + filename_exception_regex = re.compile(ALLOWED_SOURCE_FILENAME_EXCEPTION_REGEXP) |
90 | 91 | failed_tests = 0
|
91 | 92 | for filename in filenames:
|
92 |
| - if not filename_regex.match(filename): |
| 93 | + if not filename_regex.match(filename) and not filename_exception_regex.match(filename): |
93 | 94 | print(
|
94 | 95 | f"""File {repr(filename)} does not not match the allowed filename regexp ('{ALLOWED_FILENAME_REGEXP}')."""
|
95 | 96 | )
|
@@ -123,8 +124,12 @@ def check_all_file_permissions(files) -> int:
|
123 | 124 |
|
124 | 125 | Additionally checks that for executable files, the file contains a shebang line
|
125 | 126 | """
|
| 127 | + filename_exception_regex = re.compile(ALLOWED_SOURCE_FILENAME_EXCEPTION_REGEXP) |
| 128 | + |
126 | 129 | failed_tests = 0
|
127 | 130 | for filename, file_meta in files.items():
|
| 131 | + if filename_exception_regex.match(filename): |
| 132 | + continue |
128 | 133 | if file_meta.permissions == ALLOWED_PERMISSION_EXECUTABLES:
|
129 | 134 | with open(filename, "rb") as f:
|
130 | 135 | shebang = f.readline().rstrip(b"\n")
|
@@ -171,9 +176,12 @@ def check_shebang_file_permissions(files_meta) -> int:
|
171 | 176 | # The git grep command we use returns files which contain a shebang on any line within the file
|
172 | 177 | # so we need to filter the list to only files with the shebang on the first line
|
173 | 178 | filenames = [filename.split(":1:")[0] for filename in filenames if ":1:" in filename]
|
| 179 | + filename_exception_regex = re.compile(ALLOWED_SOURCE_FILENAME_EXCEPTION_REGEXP) |
174 | 180 |
|
175 | 181 | failed_tests = 0
|
176 | 182 | for filename in filenames:
|
| 183 | + if filename_exception_regex.match(filename): |
| 184 | + continue |
177 | 185 | file_meta = files_meta[filename]
|
178 | 186 | if file_meta.permissions != ALLOWED_PERMISSION_EXECUTABLES:
|
179 | 187 | # These file types are typically expected to be sourced and not executed directly
|
|
0 commit comments