@@ -113,15 +113,15 @@ def test_verify_valid_metadata_passes(package_type, scenario_name, scenario_path
113113
114114
115115@pytest .mark .parametrize (
116- "package_type,scenario_name,scenario_path" ,
116+ "package_type,scenario_name,scenario_path,missing_keys " ,
117117 [
118- ("wheel" , "stable" , "pyproject_invalid_metadata_scenario" ),
119- ("sdist" , "stable" , "pyproject_invalid_metadata_scenario" ),
120- ("wheel" , "beta" , "pyproject_beta_invalid_metadata_scenario" ),
121- ("sdist" , "beta" , "pyproject_beta_invalid_metadata_scenario" ),
118+ ("wheel" , "stable" , "pyproject_invalid_metadata_scenario" , [ "homepage" , "repository" ] ),
119+ ("sdist" , "stable" , "pyproject_invalid_metadata_scenario" , [ "homepage" , "repository" ] ),
120+ ("wheel" , "beta" , "pyproject_beta_invalid_metadata_scenario" , [ "author_email" , "summary" ] ),
121+ ("sdist" , "beta" , "pyproject_beta_invalid_metadata_scenario" , [ "author_email" , "summary" ] ),
122122 ],
123123)
124- def test_verify_invalid_metadata_fails_with_missing_keys (package_type , scenario_name , scenario_path , caplog ):
124+ def test_verify_invalid_metadata_fails (package_type , scenario_name , scenario_path , missing_keys , caplog ):
125125 """Test that verify_whl/verify_sdist fails for scenarios with invalid metadata and reports missing author_name and homepage."""
126126 # Get the actual scenario path from globals
127127 actual_scenario_path = globals ()[scenario_path ]
@@ -154,22 +154,20 @@ def test_verify_invalid_metadata_fails_with_missing_keys(package_type, scenario_
154154 # Check that the error log contains information about missing keys
155155 error_logs = [record .message for record in caplog .records if record .levelname == "ERROR" ]
156156
157- # Different scenarios have different missing keys
158- if scenario_name == "stable" :
159- # Stable scenario is missing author name and homepage
160- expected_missing_keys = ["author" , "homepage" ]
161- else : # beta scenario
162- # Beta scenario is missing author email and description
163- expected_missing_keys = ["author_email" , "summary" ]
164-
165- # Check for either order of the missing keys
166- missing_keys_pattern1 = f"Missing keys: {{'{ expected_missing_keys [0 ]} ', '{ expected_missing_keys [1 ]} '}}"
167- missing_keys_pattern2 = f"Missing keys: {{'{ expected_missing_keys [1 ]} ', '{ expected_missing_keys [0 ]} '}}"
168- has_missing_keys_error = any (missing_keys_pattern1 in msg or missing_keys_pattern2 in msg for msg in error_logs )
169-
170- assert (
171- has_missing_keys_error
172- ), f"Expected error log about missing keys '{ expected_missing_keys [0 ]} ' and '{ expected_missing_keys [1 ]} ' for { scenario_name } scenario, but got: { error_logs } "
157+ # Raise error if homepage AND repository not found in current version
158+ if "homepage" in missing_keys :
159+ assert f"Current metadata must contain at least one of: { missing_keys } " in error_logs
160+ # Otherwise, check for missing keys from prior version
161+ else :
162+ missing_keys_pattern1 = f"Missing keys: {{'{ missing_keys [0 ]} ', '{ missing_keys [1 ]} '}}"
163+ missing_keys_pattern2 = f"Missing keys: {{'{ missing_keys [1 ]} ', '{ missing_keys [0 ]} '}}"
164+ has_missing_keys_error = any (
165+ missing_keys_pattern1 in msg or missing_keys_pattern2 in msg for msg in error_logs
166+ )
167+
168+ assert (
169+ has_missing_keys_error
170+ ), f"Expected error log about Missing keys: '{ missing_keys [0 ]} ' and '{ missing_keys [1 ]} ' for { scenario_name } scenario, but got: { error_logs } "
173171
174172 finally :
175173 # Cleanup dist directory
0 commit comments