This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 62934e405ed Support Python 3.11.0 in prek cache test (#75520)
62934e405ed is described below

commit 62934e405ed20f10edaddb3a5dc19abd0050beda
Author: Parv Goyal <[email protected]>
AuthorDate: Wed Oct 28 14:57:29 2026 +0530

    Support Python 3.11.0 in prek cache test (#75520)
    
    The scripts package supports Python 3.11 from its initial patch release, 
but tarfile added the extractall filter argument in 3.11.4. Keep the opt-in 
cache integration test usable across the supported 3.11 patch range.
---
 scripts/tests/ci/test_prek_cache_optimizations.py | 38 ++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/scripts/tests/ci/test_prek_cache_optimizations.py 
b/scripts/tests/ci/test_prek_cache_optimizations.py
index 9696fbefd93..5da98527896 100644
--- a/scripts/tests/ci/test_prek_cache_optimizations.py
+++ b/scripts/tests/ci/test_prek_cache_optimizations.py
@@ -23,6 +23,7 @@ import shutil
 import subprocess
 import tarfile
 from pathlib import Path
+from unittest.mock import patch
 
 import pytest
 import yaml
@@ -76,6 +77,13 @@ def run_cache_step(step, env, tmp_path):
     return run_shell(script, env)
 
 
+def _extract_tar_archive(handle: tarfile.TarFile, path: Path) -> None:
+    if hasattr(tarfile, "data_filter"):
+        handle.extractall(path, filter="fully_trusted")
+    else:
+        handle.extractall(path)
+
+
 @pytest.fixture
 def fake_tools(tmp_path):
     tools = tmp_path / "bin"
@@ -325,6 +333,34 @@ def 
test_repaired_archive_is_reused_without_another_save(sandbox, fake_tools, tm
     assert read_outputs(sandbox) == {"save": "false", "reason": "unchanged"}
 
 
[email protected](
+    ("supports_data_filter", "expected_kwargs"),
+    [
+        (True, {"filter": "fully_trusted"}),
+        (False, {}),
+    ],
+)
+def test_extract_tar_archive_uses_supported_filter(
+    tmp_path, monkeypatch, supports_data_filter, expected_kwargs
+):
+    content = tmp_path / "content"
+    content.mkdir()
+    (content / "payload").write_text("cache data")
+    archive = tmp_path / "cache.tar.gz"
+    with tarfile.open(archive, "w:gz") as handle:
+        handle.add(content, arcname="cache")
+
+    if supports_data_filter:
+        monkeypatch.setattr(tarfile, "data_filter", lambda member, path: 
member, raising=False)
+    else:
+        monkeypatch.delattr(tarfile, "data_filter", raising=False)
+
+    with patch.object(tarfile.TarFile, "extractall", autospec=True) as 
extractall:
+        with tarfile.open(archive, "r:gz") as handle:
+            _extract_tar_archive(handle, tmp_path)
+        extractall.assert_called_once_with(handle, tmp_path, **expected_kwargs)
+
+
 @pytest.mark.skipif(
     os.environ.get("RUN_PREK_INTEGRATION") != "1",
     reason="Set RUN_PREK_INTEGRATION=1 to exercise real prek 0.5.2",
@@ -376,7 +412,7 @@ repos:
         handle.add(cache, arcname="prek-cache")
     shutil.rmtree(cache)
     with tarfile.open(archive, "r:gz") as handle:
-        handle.extractall(tmp_path, filter="fully_trusted")
+        _extract_tar_archive(handle, tmp_path)
     before_reuse = prek_cache_markers.snapshot_markers(cache)
 
     reuse = install()

Reply via email to