pre-commit/tests
Matthew Hughes 466f6c4a39 Fix permission errors for mounts in rootless docker
By running containers in a rootless docker context as root. This is
because user and group IDs are remapped in the user namespaces uses by
rootless docker, and it's unlikely that the current user ID will map to
the same ID under this remap (see docs[1] for some more details).
Specifically, it means ownership of mounted volumes will not be for the
current user and trying to write can result in permission errors.

This change borrows heavily from an existing PR[2].

The output format of `docker system info` I don't think is
documented/guaranteed anywhere, but it should corresponding to the
format of a `/info` API request to Docker[3]

The added test _hopes_ to avoid regressions in this behaviour, but since
tests aren't run in a rootless docker context on the PR checks (and I
couldn't find an easy way to make it the case) there's still a risk of
regressions sneaking in.

Link: https://docs.docker.com/engine/security/rootless/ [1]
Link: https://github.com/pre-commit/pre-commit/pull/1484/ [2]
Link: https://docs.docker.com/reference/api/engine/version/v1.48/#tag/System/operation/SystemAuth [3]
Co-authored-by: Kurt von Laven <Kurt-von-Laven@users.noreply.github.com>
Co-authored-by: Fabrice Flore-Thébault <ffloreth@redhat.com>
2025-05-23 17:01:10 -04:00
..
commands fix migrate-config for purelib yaml 2024-10-08 11:46:48 -04:00
languages Fix permission errors for mounts in rootless docker 2025-05-23 17:01:10 -04:00
meta_hooks drop python 3.6 support 2022-01-18 18:44:20 -05:00
__init__.py Initial commit. 2014-03-12 20:25:19 -07:00
clientlib_test.py add warning for deprecated stages values in default_stages 2024-09-30 19:22:14 -04:00
color_test.py drop python 3.6 support 2022-01-18 18:44:20 -05:00
conftest.py replace log_info_mock with pytest's caplog 2024-09-30 19:58:16 -04:00
envcontext_test.py drop python 3.6 support 2022-01-18 18:44:20 -05:00
error_handler_test.py Remove expected_returncode from CalledProcessError 2022-10-30 15:31:45 -05:00
git_test.py fix: crash on ambiguous ref 'HEAD' 2025-03-15 15:23:15 -04:00
lang_base_test.py Refactor target_concurrency tests 2023-09-10 08:39:19 -04:00
logging_handler_test.py drop python 3.6 support 2022-01-18 18:44:20 -05:00
main_test.py make --hook-type and stages match 2023-03-11 14:26:14 -05:00
output_test.py drop python 3.6 support 2022-01-18 18:44:20 -05:00
parse_shebang_test.py use sys.executable instead of echo.exe in parse_shebang 2023-10-09 16:49:30 -04:00
prefix_test.py drop python 3.6 support 2022-01-18 18:44:20 -05:00
repository_test.py remove deprecated python_venv alias 2024-10-05 13:30:25 -04:00
staged_files_only_test.py staged_files_only can handle a crlf-only diff 2024-02-10 14:01:49 -05:00
store_test.py add warning for deprecates stages for remote repos on init 2024-09-30 20:41:50 -04:00
util_test.py fix trailing whitespace in CalledProcessError output 2023-02-21 12:42:09 -05:00
xargs_test.py Refactor target_concurrency tests 2023-09-10 08:39:19 -04:00
yaml_rewrite_test.py change migrate-config to use yaml parse tree instead 2024-09-16 20:16:16 -04:00