3030TRUST_SCRIPT = PROJECT_ROOT / "scripts" / "verify_release_trust.sh"
3131
3232
33+ def _reviewed_release_please_bridge_config () -> str :
34+ stable = RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" )
35+ marker = ' "include-v-in-tag": true,\n '
36+ if marker not in stable :
37+ raise AssertionError ("stable Release Please config lost its tag contract" )
38+ bridge = (
39+ ' "last-release-sha": "31b68904141489ca04932edbf305ccf88af09372",\n '
40+ ' "prerelease": false,\n '
41+ ' "versioning": "prerelease",\n '
42+ )
43+ return stable .replace (marker , marker + bridge , 1 )
44+
45+
3346def _git (root : Path , * arguments : str , input_text : str | None = None ) -> str :
3447 result = subprocess .run (
3548 ["git" , * arguments ],
@@ -746,13 +759,20 @@ def test_current_release_please_workflow_is_disabled_by_default() -> None:
746759 check_release_please_workflow (RELEASE_PLEASE_WORKFLOW .read_text (encoding = "utf-8" ))
747760
748761
749- def test_current_release_please_config_has_reviewed_stable_bridge () -> None :
762+ def test_current_release_please_config_has_reviewed_stable_cleanup () -> None :
750763 check_release_please_config (
751764 RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" ),
752765 RELEASE_PLEASE_MANIFEST .read_text (encoding = "utf-8" ),
753766 )
754767
755768
769+ def test_release_please_config_accepts_reviewed_stable_bridge () -> None :
770+ check_release_please_config (
771+ _reviewed_release_please_bridge_config (),
772+ '{".": "0.1.0-alpha.1"}\n ' ,
773+ )
774+
775+
756776@pytest .mark .parametrize (
757777 ("needle" , "replacement" , "message" ),
758778 [
@@ -775,12 +795,12 @@ def test_current_release_please_config_has_reviewed_stable_bridge() -> None:
775795def test_release_please_config_rejects_bridge_drift (
776796 needle : str , replacement : str , message : str
777797) -> None :
778- text = RELEASE_PLEASE_CONFIG . read_text ( encoding = "utf-8" )
798+ text = _reviewed_release_please_bridge_config ( )
779799 assert needle in text
780800 with pytest .raises (RuntimeError , match = message ):
781801 check_release_please_config (
782802 text .replace (needle , replacement , 1 ),
783- RELEASE_PLEASE_MANIFEST . read_text ( encoding = "utf-8" ) ,
803+ '{".": "0.1.0-alpha.1"} \n ' ,
784804 )
785805
786806
@@ -806,34 +826,26 @@ def test_release_please_config_rejects_manifest_drift() -> None:
806826
807827
808828def test_release_please_config_accepts_exact_stable_cleanup () -> None :
809- config = RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" )
810- for line in (
811- ' "last-release-sha": "31b68904141489ca04932edbf305ccf88af09372",\n ' ,
812- ' "prerelease": false,\n ' ,
813- ' "versioning": "prerelease",\n ' ,
814- ):
815- config = config .replace (line , "" , 1 )
816- check_release_please_config (config , '{".": "0.1.0"}\n ' )
829+ check_release_please_config (
830+ RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" ),
831+ '{".": "0.1.0"}\n ' ,
832+ )
817833
818834
819835def test_release_please_config_rejects_stable_manifest_with_bridge () -> None :
820836 with pytest .raises (RuntimeError , match = "remove the one-time bridge" ):
821837 check_release_please_config (
822- RELEASE_PLEASE_CONFIG . read_text ( encoding = "utf-8" ),
838+ _reviewed_release_please_bridge_config ( ),
823839 '{".": "0.1.0"}\n ' ,
824840 )
825841
826842
827843def test_release_please_config_rejects_bridge_cleanup_before_stable () -> None :
828- config = RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" )
829- for line in (
830- ' "last-release-sha": "31b68904141489ca04932edbf305ccf88af09372",\n ' ,
831- ' "prerelease": false,\n ' ,
832- ' "versioning": "prerelease",\n ' ,
833- ):
834- config = config .replace (line , "" , 1 )
835844 with pytest .raises (RuntimeError , match = "only after stable" ):
836- check_release_please_config (config , '{".": "0.1.0-alpha.1"}\n ' )
845+ check_release_please_config (
846+ RELEASE_PLEASE_CONFIG .read_text (encoding = "utf-8" ),
847+ '{".": "0.1.0-alpha.1"}\n ' ,
848+ )
837849
838850
839851@pytest .mark .parametrize (
0 commit comments