@@ -43,12 +43,12 @@ class TestGenerateBuildMatrix:
4343
4444 def test_split_feature_produces_entries_per_range (self ):
4545 """Verify a split feature expands into one entry per range."""
46- result = run_script (BUILD_MATRIX_SCRIPT , "consensus " )
46+ result = run_script (BUILD_MATRIX_SCRIPT , "tests" , "v24.0.0 " )
4747 assert result .returncode == 0
4848 out = parse_matrix_output (result .stdout )
4949 matrix = json .loads (out ["build_matrix" ])
5050 assert len (matrix ) > 1
51- assert out ["feature_name" ] == "consensus "
51+ assert out ["feature_name" ] == "tests "
5252 assert out ["combine_labels" ] != ""
5353 labels = [e ["label" ] for e in matrix ]
5454 assert all (lbl != "" for lbl in labels )
@@ -57,7 +57,7 @@ def test_split_feature_produces_entries_per_range(self):
5757
5858 def test_unsplit_feature_produces_single_entry (self ):
5959 """Verify a feature without fork-ranges produces one entry."""
60- result = run_script (BUILD_MATRIX_SCRIPT , "benchmark" )
60+ result = run_script (BUILD_MATRIX_SCRIPT , "benchmark" , "v24.0.0" )
6161 assert result .returncode == 0
6262 out = parse_matrix_output (result .stdout )
6363 matrix = json .loads (out ["build_matrix" ])
@@ -70,7 +70,9 @@ def test_unsplit_feature_produces_single_entry(self):
7070
7171 def test_devnet_name_resolves_to_shared_feature (self ):
7272 """Verify a <feat>-devnet name resolves to the devnet feature."""
73- result = run_script (BUILD_MATRIX_SCRIPT , "bal-devnet" )
73+ result = run_script (
74+ BUILD_MATRIX_SCRIPT , "bal-devnet" , "v7.0.0" , "bal-devnet-7"
75+ )
7476 assert result .returncode == 0
7577 out = parse_matrix_output (result .stdout )
7678 matrix = json .loads (out ["build_matrix" ])
@@ -80,7 +82,7 @@ def test_devnet_name_resolves_to_shared_feature(self):
8082
8183 def test_unknown_feature_fails (self ):
8284 """Verify error exit for unknown feature name."""
83- result = run_script (BUILD_MATRIX_SCRIPT , "nonexistent" )
85+ result = run_script (BUILD_MATRIX_SCRIPT , "nonexistent" , "v1.0.0" )
8486 assert result .returncode == 1
8587 assert "not found" in result .stderr
8688
@@ -92,7 +94,7 @@ def test_no_args_fails(self):
9294
9395 def test_output_is_valid_github_actions_format (self ):
9496 """Verify output lines are key=value for GITHUB_OUTPUT."""
95- result = run_script (BUILD_MATRIX_SCRIPT , "consensus " )
97+ result = run_script (BUILD_MATRIX_SCRIPT , "tests" , "v24.0.0 " )
9698 assert result .returncode == 0
9799 lines = result .stdout .strip ().splitlines ()
98100 assert len (lines ) == 3
@@ -101,6 +103,57 @@ def test_output_is_valid_github_actions_format(self):
101103 assert lines [2 ].startswith ("combine_labels=" )
102104
103105
106+ class TestValidateInputs :
107+ """Test the release input validation in generate_build_matrix.py."""
108+
109+ def test_bad_version_fails (self ):
110+ """Verify a non vX.Y.Z version is rejected."""
111+ result = run_script (BUILD_MATRIX_SCRIPT , "tests" , "24.0.0" )
112+ assert result .returncode == 1
113+ assert "must match vX.Y.Z" in result .stderr
114+
115+ def test_bare_devnet_fails (self ):
116+ """Verify a bare `devnet` feature name is rejected."""
117+ result = run_script (
118+ BUILD_MATRIX_SCRIPT , "devnet" , "v7.0.0" , "bal-devnet-7"
119+ )
120+ assert result .returncode == 1
121+ assert "require a <feat>- prefix" in result .stderr
122+
123+ def test_devnet_index_in_feature_name_fails (self ):
124+ """Verify `<feat>-devnet-<n>` is rejected with a suggestion."""
125+ result = run_script (
126+ BUILD_MATRIX_SCRIPT , "bal-devnet-7" , "v7.0.0" , "bal-devnet-7"
127+ )
128+ assert result .returncode == 1
129+ assert "did you mean feature=bal-devnet version=v7.0.0" in (
130+ result .stderr
131+ )
132+
133+ def test_devnet_without_branch_fails (self ):
134+ """Verify a `<feat>-devnet` release requires a branch."""
135+ result = run_script (BUILD_MATRIX_SCRIPT , "bal-devnet" , "v7.0.0" )
136+ assert result .returncode == 1
137+ assert "require a 'branch' input" in result .stderr
138+
139+ def test_devnet_major_must_match_branch_number (self ):
140+ """Verify the major version must equal the branch devnet number."""
141+ result = run_script (
142+ BUILD_MATRIX_SCRIPT , "bal-devnet" , "v3.0.0" , "bal-devnet-7"
143+ )
144+ assert result .returncode == 1
145+ assert "must equal the devnet number" in result .stderr
146+
147+ def test_devnet_matching_major_passes (self ):
148+ """Verify a matching major/branch number builds the matrix."""
149+ result = run_script (
150+ BUILD_MATRIX_SCRIPT , "bal-devnet" , "v7.0.0" , "bal-devnet-7"
151+ )
152+ assert result .returncode == 0
153+ out = parse_matrix_output (result .stdout )
154+ assert out ["feature_name" ] == "bal-devnet"
155+
156+
104157class TestCreateReleaseTarball :
105158 """Test create_release_tarball.py."""
106159
0 commit comments