Skip to content
Bitcoin Roots

v30.3-roots.1 · Commit 63: [PATCH 63/68] fix(release): restore signed five-platform CI releases

ci/test/test_release_version.py

Before: ci/test/test_release_version.py · After: ci/test/test_release_version.py

File metadata
index 1e193d4f940733835997c0dbe9a24cb2c8bd2292..7322ff97c1d3d9f9f71f79a33e30ce42fdb7f330 100755

Download original patch · Release notes

Diff rows 1–51 of 51. Line numbers refer to the original before/after files.

+ Added− RemovedUnmarked lines are context.

Scroll the code area horizontally to read long lines. Before is on the left; after is on the right. Unified view fits narrow screens more easily.

ci/test/test_release_version.py CHANGED
@@ -108,22 +108,25 @@ class ReleaseVersionTest(unittest.TestCase):
108
  self.assertEqual(result.returncode, status, result.stderr)
109
  self.assertEqual(log.read_text().strip(), f"--verify {build}/deploy/Bitcoin-Qt.app")
110
 
111
- def test_workflow_only_rehearses_explicit_canonical_commits(self):
112
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
113
  self.assertIn("workflow_dispatch:", workflow)
114
- self.assertNotIn(" push:", workflow)
115
- self.assertNotIn("publish-release:", workflow)
116
- self.assertNotIn("contents: write", workflow)
117
- self.assertNotIn("gh release", workflow)
118
- self.assertIn("RELEASE_TAG: ${{ inputs.release_tag }}", workflow)
119
- self.assertIn("RELEASE_COMMIT: ${{ inputs.release_commit }}", workflow)
120
  self.assertIn("ref: ${{ env.RELEASE_SOURCE_REF }}", workflow)
121
- self.assertEqual(workflow.count("ci/release/prepare-release-source.sh"), 4)
122
- self.assertNotIn("origin main:refs/remotes/origin/main", workflow)
 
 
 
 
 
 
123
  for metadata_workflow in (RELEASE_WORKFLOW, ROOT / ".github/workflows/ci.yml"):
124
  metadata = metadata_workflow.read_text()
125
- self.assertIn("python3 ci/test/test_release_notices.py", metadata)
126
- self.assertIn("python3 ci/test/test_create_release_draft.py", metadata)
 
127
 
128
  def test_workflow_builds_complete_artifact_matrix_and_patch(self):
129
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
@@ -136,7 +139,7 @@ class ReleaseVersionTest(unittest.TestCase):
136
  ]:
137
  self.assertIn(artifact, workflow)
138
  self.assertIn("ci/release/create-patch-series.sh", workflow)
139
- self.assertIn("ci/release/create-draft.py", workflow)
140
 
141
  def test_workflow_references_only_present_local_release_files(self):
142
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
@@ -153,6 +156,7 @@ class ReleaseVersionTest(unittest.TestCase):
153
  {
154
  "actions/checkout@v6",
155
  "actions/upload-artifact@v4",
 
156
  "./.github/actions/configure-docker",
157
  "./.github/actions/configure-environment",
158
  },
 
108
  self.assertEqual(result.returncode, status, result.stderr)
109
  self.assertEqual(log.read_text().strip(), f"--verify {build}/deploy/Bitcoin-Qt.app")
110
 
111
+ def test_workflow_tags_build_signed_drafts_and_dispatch_only_rehearses(self):
112
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
113
  self.assertIn("workflow_dispatch:", workflow)
114
+ self.assertIn(" push:", workflow)
115
+ self.assertIn("RELEASE_TAG: ${{ github.event_name == 'push' && github.ref_name || inputs.release_tag }}", workflow)
 
 
 
 
116
  self.assertIn("ref: ${{ env.RELEASE_SOURCE_REF }}", workflow)
117
+ self.assertEqual(workflow.count("ci/release/prepare-release-source.sh"), 5)
118
+ publish = workflow.split(" publish-release:", 1)[1]
119
+ self.assertIn("if: github.event_name == 'push'", publish)
120
+ self.assertIn("contents: write", publish)
121
+ self.assertIn("REQUIRE_RELEASE_SIGNATURE: '1'", publish)
122
+ self.assertIn("test -s", publish)
123
+ self.assertNotIn("secrets.", workflow.split(" publish-release:", 1)[0])
124
+ self.assertNotIn("--clobber", workflow)
125
  for metadata_workflow in (RELEASE_WORKFLOW, ROOT / ".github/workflows/ci.yml"):
126
  metadata = metadata_workflow.read_text()
127
+ for test in ("test_release_notices.py", "test_create_release_draft.py",
128
+ "test_runner_release_notices.py", "test_create_ci_release_draft.py"):
129
+ self.assertIn("python3 ci/test/" + test, metadata)
130
 
131
  def test_workflow_builds_complete_artifact_matrix_and_patch(self):
132
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
 
139
  ]:
140
  self.assertIn(artifact, workflow)
141
  self.assertIn("ci/release/create-patch-series.sh", workflow)
142
+ self.assertIn("ci/release/create-ci-draft.py", workflow)
143
 
144
  def test_workflow_references_only_present_local_release_files(self):
145
  workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
 
156
  {
157
  "actions/checkout@v6",
158
  "actions/upload-artifact@v4",
159
+ "actions/download-artifact@v5",
160
  "./.github/actions/configure-docker",
161
  "./.github/actions/configure-environment",
162
  },