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

sbp pushed a commit to branch sbp
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git


The following commit(s) were added to refs/heads/sbp by this push:
     new af0824dc Remove the old revision creation code
af0824dc is described below

commit af0824dc6c2fcf5d9478d647a12b22e7c276fc14
Author: Sean B. Palmer <[email protected]>
AuthorDate: Wed Mar 4 14:52:19 2026 +0000

    Remove the old revision creation code
---
 atr/get/test.py                    |   8 ++-
 atr/storage/writers/revision.py    | 114 -------------------------------------
 tests/unit/test_create_revision.py |   8 ++-
 3 files changed, 11 insertions(+), 119 deletions(-)

diff --git a/atr/get/test.py b/atr/get/test.py
index 4022add6..b3dcd813 100644
--- a/atr/get/test.py
+++ b/atr/get/test.py
@@ -111,21 +111,25 @@ async def test_merge(
                     async with aiofiles.open(path_prior / "from_prior.txt", 
"w") as f:
                         await f.write("prior content")
 
-                await wacp_p.revision.create_revision(
+                result = await wacp_p.revision.create_revision_with_quarantine(
                     str(project_name),
                     str(version_name),
                     session.uid,
                     description="Test merge: prior revision",
                     modify=modify_prior,
                 )
+                if isinstance(result, sql.Quarantined):
+                    raise RuntimeError("Unexpected quarantine in merge test")
 
-        await wacp_n.revision.create_revision(
+        result = await wacp_n.revision.create_revision_with_quarantine(
             str(project_name),
             str(version_name),
             session.uid,
             description="Test merge: new revision",
             modify=modify_new,
         )
+        if isinstance(result, sql.Quarantined):
+            raise RuntimeError("Unexpected quarantine in merge test")
 
     files: list[str] = []
     async with db.session() as data:
diff --git a/atr/storage/writers/revision.py b/atr/storage/writers/revision.py
index 909a9bd2..e3bcde32 100644
--- a/atr/storage/writers/revision.py
+++ b/atr/storage/writers/revision.py
@@ -323,120 +323,6 @@ class CommitteeParticipant(FoundationCommitter):
         self.__asf_uid = asf_uid
         self.__committee_name = committee_name
 
-    async def create_revision(  # noqa: C901
-        self,
-        project_name: str,
-        version_name: str,
-        asf_uid: str,
-        description: str | None = None,
-        set_local_cache: bool = False,
-        reset_to_global_cache: bool = False,
-        modify: Callable[[pathlib.Path, sql.Revision | None], Awaitable[None]] 
| None = None,
-        clone_from: str | None = None,
-    ) -> sql.Revision:
-        """Create a new revision."""
-        # Get the release
-        release_name = sql.release_name(project_name, version_name)
-        async with db.session() as data:
-            release = await data.release(name=release_name, 
_release_policy=True, _project_release_policy=True).demand(
-                RuntimeError("Release does not exist for new revision 
creation")
-            )
-            if clone_from is not None:
-                old_revision = await data.revision(release_name=release_name, 
number=clone_from).demand(
-                    RuntimeError(f"Revision {clone_from} does not exist")
-                )
-            else:
-                old_revision = await interaction.latest_revision(release)
-            if set_local_cache:
-                release.check_cache_key = str(uuid.uuid4())
-            if reset_to_global_cache:
-                release.check_cache_key = None
-
-        if clone_from is not None:
-            old_release_dir = paths.release_directory_base(release) / 
clone_from
-        else:
-            old_release_dir = paths.release_directory(release)
-        merge_enabled = clone_from is None
-
-        # Create a temporary directory
-        # We ensure, below, that it's removed on any exception
-        # Use the tmp subdirectory of state, to ensure that it is on the same 
filesystem
-        prefix_token = secrets.token_hex(16)
-        temp_dir: str = await asyncio.to_thread(tempfile.mkdtemp, 
prefix=prefix_token + "-", dir=paths.get_tmp_dir())
-        temp_dir_path = pathlib.Path(temp_dir)
-
-        try:
-            # The directory was created by mkdtemp, but it's empty
-            if old_revision is not None:
-                # If this is not the first revision, hard link the previous 
revision
-                await util.create_hard_link_clone(old_release_dir, 
temp_dir_path, do_not_create_dest_dir=True)
-            # The directory is either empty or its files are hard linked to 
the previous revision
-            if modify is not None:
-                await modify(temp_dir_path, old_revision)
-        except types.FailedError:
-            await aioshutil.rmtree(temp_dir)
-            raise
-        except Exception:
-            await aioshutil.rmtree(temp_dir)
-            raise
-
-        validation_errors = await 
asyncio.to_thread(detection.validate_directory, temp_dir_path)
-        if validation_errors:
-            await aioshutil.rmtree(temp_dir)
-            raise types.FailedError("File validation failed:\n" + 
"\n".join(validation_errors))
-
-        # Ensure that the permissions of every directory are 755
-        try:
-            await asyncio.to_thread(util.chmod_directories, temp_dir_path)
-        except Exception:
-            await aioshutil.rmtree(temp_dir)
-            raise
-
-        # Make files read only to prevent them from being modified through 
hard links
-        try:
-            await asyncio.to_thread(util.chmod_files, temp_dir_path, 0o444)
-        except Exception:
-            await aioshutil.rmtree(temp_dir)
-            raise
-
-        try:
-            path_to_hash, path_to_size = await 
attestable.paths_to_hashes_and_sizes(temp_dir_path)
-            parent_revision_number = old_revision.number if old_revision else 
None
-            previous_attestable = None
-            if parent_revision_number is not None:
-                previous_attestable = await attestable.load(project_name, 
version_name, parent_revision_number)
-            base_inodes: dict[str, int] = {}
-            base_hashes: dict[str, str] = {}
-            if merge_enabled and (old_revision is not None):
-                base_dir = old_release_dir
-                base_inodes = await asyncio.to_thread(util.paths_to_inodes, 
base_dir)
-                base_hashes = dict(previous_attestable.paths) if 
(previous_attestable is not None) else {}
-            n_inodes = await asyncio.to_thread(util.paths_to_inodes, 
temp_dir_path)
-        except Exception:
-            await aioshutil.rmtree(temp_dir)
-            raise
-
-        async with SafeSession(temp_dir) as data:
-            return await finalise_revision(
-                data,
-                asf_uid=asf_uid,
-                base_hashes=base_hashes,
-                base_inodes=base_inodes,
-                description=description,
-                merge_enabled=merge_enabled,
-                n_inodes=n_inodes,
-                old_revision=old_revision,
-                path_to_hash=path_to_hash,
-                path_to_size=path_to_size,
-                previous_attestable=previous_attestable,
-                project_name=project_name,
-                release=release,
-                release_name=release_name,
-                temp_dir=temp_dir,
-                temp_dir_path=temp_dir_path,
-                version_name=version_name,
-            )
-
     async def create_revision_with_quarantine(  # noqa: C901
         self,
         project_name: str,
diff --git a/tests/unit/test_create_revision.py 
b/tests/unit/test_create_revision.py
index 13f84a66..9b1ec01f 100644
--- a/tests/unit/test_create_revision.py
+++ b/tests/unit/test_create_revision.py
@@ -128,6 +128,7 @@ async def 
test_clone_from_older_revision_skips_merge_without_intervening_change(
         ),
         mock.patch.object(revision.attestable, "write_files_data", 
new_callable=mock.AsyncMock),
         mock.patch.object(revision.db, "session", return_value=mock_session),
+        mock.patch.object(revision.detection, 
"detect_archives_requiring_quarantine", return_value=[]),
         mock.patch.object(revision.detection, "validate_directory", 
return_value=[]),
         mock.patch.object(
             revision.interaction, "latest_revision", 
new_callable=mock.AsyncMock, return_value=latest_revision
@@ -146,7 +147,7 @@ async def 
test_clone_from_older_revision_skips_merge_without_intervening_change(
         mock.patch.object(revision.paths, "release_directory", 
return_value=tmp_path / "releases" / "00006"),
         mock.patch.object(revision.paths, "release_directory_base", 
return_value=tmp_path / "releases"),
     ):
-        await participant.create_revision("proj", "1.0", "test", 
clone_from="00002")
+        await participant.create_revision_with_quarantine("proj", "1.0", 
"test", clone_from="00002")
 
     if merge_mock.called:
         raise AssertionError(
@@ -213,6 +214,7 @@ async def 
test_intervening_revision_triggers_merge_and_uses_latest_parent(tmp_pa
         ),
         mock.patch.object(revision.attestable, "write_files_data", 
new_callable=mock.AsyncMock),
         mock.patch.object(revision.db, "session", return_value=mock_session),
+        mock.patch.object(revision.detection, 
"detect_archives_requiring_quarantine", return_value=[]),
         mock.patch.object(revision.detection, "validate_directory", 
return_value=[]),
         mock.patch.object(
             revision.interaction,
@@ -232,7 +234,7 @@ async def 
test_intervening_revision_triggers_merge_and_uses_latest_parent(tmp_pa
         mock.patch.object(revision.paths, "release_directory", 
return_value=tmp_path / "releases" / "00007"),
         mock.patch.object(revision.paths, "release_directory_base", 
return_value=tmp_path / "releases"),
     ):
-        created_revision = await participant.create_revision("proj", "1.0", 
"test")
+        created_revision = await 
participant.create_revision_with_quarantine("proj", "1.0", "test")
 
     assert isinstance(created_revision, FakeRevision)
     assert merge_mock.await_count == 1
@@ -262,7 +264,7 @@ async def 
test_modify_failed_error_propagates_and_cleans_up(tmp_path: pathlib.Pa
         mock.patch.object(revision.paths, "get_tmp_dir", 
return_value=tmp_path),
     ):
         with pytest.raises(types.FailedError, match="Intentional error"):
-            await participant.create_revision("proj", "1.0", "test", 
modify=modify)
+            await participant.create_revision_with_quarantine("proj", "1.0", 
"test", modify=modify)
 
     assert isinstance(received_args["path"], pathlib.Path)
     assert received_args["old_rev"] is None


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to