Commit be3497b
committed
Fix test_dir_without_exec_permission on Python 3.14
One unit test fails on Python 3.14 as follows:
```
_____________ TestFolderTraversal.test_dir_without_exec_permission _____________
self = <test.unit.scan.test_folder_traversal.TestFolderTraversal object at 0x7f5530606350>
tmp_path = PosixPath('/tmp/pytest-of-sbuild/pytest-0/test_dir_without_exec_permissi0')
fs_perm_tool = <test.unit.conftest.UnixPermTool object at 0x7f55301ca510>
@pytest.mark.skipif(
platform.system() == 'Windows',
reason='Unix-only filesystem permissions are tested',
)
def test_dir_without_exec_permission(self, tmp_path, fs_perm_tool):
"""Test that a excluded directory/file without permissions emits warnings."""
no_perm_dir = tmp_path / 'no_perm_dir'
no_perm_dir.mkdir()
(no_perm_dir / 'file.txt').touch()
(no_perm_dir / 'file2.txt').touch()
# chmod -x no_perm_dir
no_perm_dir.chmod(0o600)
scan_policy = ScanPoliciesManager()
reporter = ProgressReport(sys.stdout, False)
folder = LocalFolder(str(tmp_path))
local_paths = folder.all_files(reporter=reporter, policies_manager=scan_policy)
absolute_paths = [path.absolute_path for path in local_paths]
assert not absolute_paths
# Check that no access warnings are issued for the excluded directory/file
> assert set(reporter.warnings) == {
f'WARNING: {tmp_path/"no_perm_dir/file.txt"} could not be accessed (no permissions to read?)',
f'WARNING: {tmp_path/"no_perm_dir/file2.txt"} could not be accessed (no permissions to read?)',
}
E AssertionError: assert {'WARNING: /t...en symlink?)'} == {'WARNING: /t...ns to read?)'}
E
E Extra items in the left set:
E 'WARNING: /tmp/pytest-of-sbuild/pytest-0/test_dir_without_exec_permissi0/no_perm_dir/file2.txt could not be accessed (broken symlink?)'
E 'WARNING: /tmp/pytest-of-sbuild/pytest-0/test_dir_without_exec_permissi0/no_perm_dir/file.txt could not be accessed (broken symlink?)'
E Extra items in the right set:
E 'WARNING: /tmp/pytest-of-sbuild/pytest-0/test_dir_without_exec_permissi0/no_perm_dir/file.txt could not be accessed (no permissions to read?)'
E 'WARNING: /tmp/pytest-of-sbuild/pytest-0/test_dir_without_exec_permissi0/no_perm_dir/file2.txt could not be accessed (no permissions to read?)'
E Use -v to get more diff
test/unit/scan/test_folder_traversal.py:721: AssertionError
```
This is due to python/cpython#118243. I'm not
sure how important it is to preserve the exact same warning message
here, but the conservative approach is to do so;
https://docs.python.org/3/library/pathlib.html advises using `Path.stat`
to distinguish these cases.1 parent c884f6f commit be3497b
2 files changed
Lines changed: 8 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
274 | 275 | | |
275 | 276 | | |
276 | 277 | | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
277 | 281 | | |
278 | | - | |
| 282 | + | |
279 | 283 | | |
280 | 284 | | |
281 | 285 | | |
282 | 286 | | |
283 | 287 | | |
284 | 288 | | |
| 289 | + | |
| 290 | + | |
285 | 291 | | |
286 | 292 | | |
287 | 293 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments