diff --git a/.github/scripts/test_update_dependency_changes.py b/.github/scripts/test_update_dependency_changes.py index b5ca1603d8..fde9720590 100644 --- a/.github/scripts/test_update_dependency_changes.py +++ b/.github/scripts/test_update_dependency_changes.py @@ -14,7 +14,7 @@ import sys import os sys.path.insert(0, os.path.dirname(__file__)) -from update_dependency_changes import merge_changes, render_section, normalize_version +from update_dependency_changes import merge_changes, render_section, normalize_version, extract_preamble def test_update_then_revert(): @@ -367,9 +367,48 @@ def test_document_format(): print("-" * 60 + "\n") +def test_extract_preamble_with_seo_block(): + """Test: content with a JSON SEO block before the heading.""" + print("Test 17: extract_preamble - preamble before heading") + content = ( + "```json\n" + "//[doc-seo]\n" + "{\n" + ' "Description": "Some description."\n' + "}\n" + "```\n" + "\n" + "# Package Version Changes\n" + "\n" + "## 10.1.0-rc.1\n" + ) + result = extract_preamble(content) + assert result == "```json\n//[doc-seo]\n{\n \"Description\": \"Some description.\"\n}\n```\n\n", \ + f"Unexpected preamble: {repr(result)}" + print("✓ Passed: preamble correctly extracted\n") + + +def test_extract_preamble_no_preamble(): + """Test: heading at the very start — preamble should be empty string.""" + print("Test 18: extract_preamble - no preamble before heading") + content = "# Package Version Changes\n\n## 10.1.0-rc.1\n" + result = extract_preamble(content) + assert result == "", f"Expected empty string, got: {repr(result)}" + print("✓ Passed: empty preamble returned when heading is at start\n") + + +def test_extract_preamble_no_heading(): + """Test: no matching heading — returns empty string.""" + print("Test 19: extract_preamble - no matching heading") + content = "Some random content without the expected heading.\n" + result = extract_preamble(content) + assert result == "", f"Expected empty string, got: {repr(result)}" + print("✓ Passed: empty string returned when heading is absent\n") + + def test_normalize_version_preview(): """Test: preview suffix is normalized to rc.1.""" - print("Test 17: normalize_version - preview -> rc.1") + print("Test 20: normalize_version - preview -> rc.1") assert normalize_version("10.1.0-preview") == "10.1.0-rc.1", \ f"Expected '10.1.0-rc.1', got: {normalize_version('10.1.0-preview')}" assert normalize_version("10.2.0-preview") == "10.2.0-rc.1", \ @@ -379,7 +418,7 @@ def test_normalize_version_preview(): def test_normalize_version_rc(): """Test: rc.N versions are unchanged.""" - print("Test 18: normalize_version - rc.N unchanged") + print("Test 21: normalize_version - rc.N unchanged") assert normalize_version("10.1.0-rc.1") == "10.1.0-rc.1", \ f"Expected '10.1.0-rc.1', got: {normalize_version('10.1.0-rc.1')}" assert normalize_version("10.2.0-rc.1") == "10.2.0-rc.1", \ @@ -391,7 +430,7 @@ def test_normalize_version_rc(): def test_normalize_version_stable(): """Test: stable versions are unchanged.""" - print("Test 19: normalize_version - stable unchanged") + print("Test 22: normalize_version - stable unchanged") assert normalize_version("10.1.0") == "10.1.0", \ f"Expected '10.1.0', got: {normalize_version('10.1.0')}" assert normalize_version("10.2.0") == "10.2.0", \ @@ -421,12 +460,15 @@ def run_all_tests(): test_add_add() test_complex_chain_ending_in_original() test_document_format() + test_extract_preamble_with_seo_block() + test_extract_preamble_no_preamble() + test_extract_preamble_no_heading() test_normalize_version_preview() test_normalize_version_rc() test_normalize_version_stable() print("=" * 70) - print("All 19 tests passed! ✓") + print("All 22 tests passed! ✓") print("=" * 70) print("\nTest coverage summary:") print(" ✓ Basic scenarios (update, add, remove)") @@ -434,6 +476,7 @@ def run_all_tests(): print(" ✓ Complex multi-step sequences") print(" ✓ Edge cases and duplicates") print(" ✓ Document format validation") + print(" ✓ Preamble extraction (SEO block, no preamble, no heading)") print(" ✓ Version normalization (preview -> rc.1)") print("=" * 70)