Skip to content

Commit 6fdce60

Browse files
committed
[red] require current release and official examples in README
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 9b00f58 commit 6fdce60

1 file changed

Lines changed: 40 additions & 19 deletions

File tree

‎tests/publication/test_public_claims.py‎

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ def setUpClass(cls) -> None:
8383
REPO_ROOT / "tools" / "web" / "README.md"
8484
).read_text(encoding="utf-8")
8585

86-
def test_readme_identifies_the_qualified_v060_release(self) -> None:
86+
def test_readme_identifies_the_owner_confirmed_v061_release(self) -> None:
8787
firmware = markdown_section(self.readme, "What works")
8888
normalized = " ".join(firmware.split())
8989

9090
self.assertIn(
91-
"qualified public v0.6.0 release",
91+
"owner-confirmed public v0.6.1 release",
9292
normalized,
9393
)
9494
self.assertIn("all five exact release profiles", normalized)
@@ -100,7 +100,11 @@ def test_readme_identifies_the_qualified_v060_release(self) -> None:
100100
self.assertIn("`waveshare-esp32-s3-lcd-147b`", firmware)
101101
self.assertIn("`esp32-c3-4mb`", firmware)
102102
self.assertIn("`rpi-pico2-w`", firmware)
103-
self.assertEqual(firmware.count("Qualified v0.6.0"), 5)
103+
self.assertEqual(firmware.count("Owner-confirmed v0.6.1"), 5)
104+
self.assertIn("automated qualification records remain incomplete", normalized)
105+
self.assertIn("LFS2", firmware)
106+
self.assertIn("fresh globals", normalized)
107+
self.assertNotIn("All five exact-byte HIL rows passed", firmware)
104108
self.assertNotIn("v0.4.2 hardware-tested beta", firmware)
105109
self.assertNotIn("Planned; unavailable", firmware)
106110
self.assertNotIn("in-progress `0.6.0`", firmware)
@@ -115,11 +119,11 @@ def test_readme_caption_describes_only_the_visible_app(self) -> None:
115119
self.assertIn("generated MicroPython", caption)
116120
self.assertNotRegex(caption, r"(?i)pictured|board|module")
117121

118-
def test_readme_try_steps_use_the_qualified_v060_release_safely(self) -> None:
122+
def test_readme_try_steps_use_the_published_v061_release_safely(self) -> None:
119123
try_section = markdown_section(self.readme, "Try PyBLE")
120124
normalized = " ".join(try_section.split())
121125

122-
self.assertIn("qualified v0.6.0 release", normalized)
126+
self.assertIn("published v0.6.1 release", normalized)
123127
self.assertIn("four ESP profiles", normalized)
124128
self.assertIn("Web Serial", try_section)
125129
self.assertIn("Pico 2 W", try_section)
@@ -131,15 +135,23 @@ def test_readme_try_steps_use_the_qualified_v060_release_safely(self) -> None:
131135
self.assertIn("back up", try_section)
132136
self.assertIn("Flashing erases the board", try_section)
133137
self.assertNotIn("v0.4.2 hardware-tested beta", try_section)
134-
135-
def test_current_public_surfaces_agree_on_v060_and_v061_state(self) -> None:
138+
self.assertIn("https://github.com/PyBLE-dev/examples", try_section)
139+
self.assertIn("branch chooser", normalized)
140+
self.assertIn("editable", normalized)
141+
self.assertIn("/examples", try_section)
142+
self.assertIn("pyble_hello_console.py", try_section)
143+
self.assertIn("https://pyble.dev/learn", self.readme)
144+
self.assertIn("https://pyble.dev/features", self.readme)
145+
self.assertNotIn("examples/github-import", try_section)
146+
147+
def test_current_public_surfaces_agree_on_v061_publication(self) -> None:
136148
combined = "\n".join(
137149
(self.home_page, self.site_copy, self.support_page, self.roadmap)
138150
)
139151

140152
for wording in (
141-
"v0.6.0",
142-
"qualified public release",
153+
"v0.6.1",
154+
"owner-confirmed",
143155
"esp32-4mb",
144156
"esp32-s3-n16r8",
145157
"esp32-c3-4mb",
@@ -159,17 +171,26 @@ def test_current_public_surfaces_agree_on_v060_and_v061_state(self) -> None:
159171
available = " ".join(
160172
markdown_section(self.roadmap, "Available now").split()
161173
)
162-
self.assertIn("current qualified firmware v0.6.0", available)
174+
self.assertIn("published firmware v0.6.1", available)
175+
self.assertIn("owner confirmation", available)
163176
self.assertIn("five exact profiles", available)
164177
self.assertIn("Pico 2 W", available)
165178
self.assertNotIn("v0.4.2", self.roadmap)
166179

167180
near_term = markdown_section(self.roadmap, "Near term")
168181
self.assertIn(
169-
"source-selected firmware v0.6.1 contract hardening",
182+
"v0.7.0",
170183
near_term,
171184
)
172-
self.assertIn("fresh resource, recovery, and physical qualification", near_term)
185+
self.assertIn("automated qualification", near_term)
186+
187+
def test_readme_distinguishes_app_source_from_store_availability(self) -> None:
188+
firmware = markdown_section(self.readme, "What works")
189+
normalized = " ".join(firmware.split())
190+
self.assertIn("0.2.0+8", firmware)
191+
self.assertIn("does not establish a live store release", normalized)
192+
self.assertIn("offline privacy policy", normalized)
193+
self.assertIn("multi-file deletion", normalized)
173194

174195
def test_production_browser_claim_is_bound_to_public_evidence(self) -> None:
175196
evidence = self.browser_validation
@@ -235,31 +256,31 @@ def test_post_release_attestation_bounds_the_completed_hil_scope(self) -> None:
235256

236257
def test_public_surfaces_link_the_release_evidence_and_changelog(self) -> None:
237258
self.assertIn(
238-
"https://pyble.dev/firmware/v0.6.0/release.json",
259+
"https://pyble.dev/firmware/v0.6.1/release.json",
239260
self.readme,
240261
)
241262
self.assertIn(
242-
"https://pyble.dev/firmware/v0.6.0/RELEASE_NOTES.md",
263+
"https://pyble.dev/firmware/v0.6.1/RELEASE_NOTES.md",
243264
self.readme,
244265
)
245266
self.assertIn(
246-
"https://pyble.dev/firmware/v0.6.0/SHA256SUMS",
267+
"https://pyble.dev/firmware/v0.6.1/SHA256SUMS",
247268
self.readme,
248269
)
249270
self.assertIn(
250-
"https://pyble.dev/firmware/v0.6.0/RECOVERY.md",
271+
"https://pyble.dev/firmware/v0.6.1/RECOVERY.md",
251272
self.readme,
252273
)
253274
self.assertIn(
254-
"https://github.com/PyBLE-dev/PyBLE/tree/firmware-v0.6.0",
275+
"https://github.com/PyBLE-dev/PyBLE/tree/c8f549eeabe6d2b8c2766eab022517944bb09c8c",
255276
self.readme,
256277
)
257278
self.assertIn(
258-
"c2940281a14feddb55c48de15ac18087e9317d1b7130e514fab5a209b046a1e6",
279+
"71f6aca6df07e31a1f54c7f70a48d82c7fe26b1c8ca0626a8ffc57c804fbb1bd",
259280
self.readme,
260281
)
261282
self.assertIn(
262-
"0c7230d6708797c241160ba71fbd37e6b22f180a",
283+
"https://pyble.dev/firmware-v0.6.1-owner-confirmation.md",
263284
self.readme,
264285
)
265286
self.assertIn(

0 commit comments

Comments
 (0)