def convert_result_and_expected_and_check(result, expected):
"""Convert a single resolver-run result to match what was expected
"""
if not isinstance(expected, dict):
raise YAMLException(
"The expected result of this test is not a dictionary."
)
if isinstance(result, CannotSatisfy):
result = _convert_error(result)
else:
result = _convert_resolved_set(result)
errors = []
if "conflicts" in expected:
if "conflicts" not in result:
message = "Expected to get conflicts, got resolved set"
raise AssertionError(message)
# TODO: Beef this up; maybe try to show what's messed up.
else:
assert "set" in expected, "set not in expected"
if "chosen_set" not in result:
message = "Expected to get resolved set, got conflicts"
raise AssertionError(message)
# Make sure we got the right versions
for item in expected["set"]:
name, version = item.split(" ", 1)
if name not in result["chosen_set"]:
errors.append(name + " is missing.")
continue
if parse_version(version) != result["chosen_set"][name].version:
errors.append(
"Expected {} to be version {}, got {}".format(
name, version, result["chosen_set"][name].version
)
)
del result["chosen_set"][name]
# Make sure we got the right packages
if result["chosen_set"]:
for key in result["chosen_set"]:
errors.append(
"Got unexpected selection: {} {}".format(
key, result["chosen_set"][key].version
)
)
# TODO: Check the graph of dependencies
if errors:
raise AssertionError("Incorrect resolution:\n- " + "\n- ".join(errors))
评论列表
文章目录