mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
"""
|
|
"""
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
|
|
def generate_yaml_tests(directory):
|
|
for yml_file in directory.glob("*/*.yml"):
|
|
data = yaml.safe_load(yml_file.read_text())
|
|
assert "cases" in data, "A fixture needs cases to be used in testing"
|
|
|
|
# Strip the parts of the directory to only get a name without
|
|
# extension and resolver directory
|
|
base_name = str(yml_file)[len(str(directory)) + 1:-4]
|
|
|
|
base = data.get("base", {})
|
|
cases = data["cases"]
|
|
|
|
for i, case_template in enumerate(cases):
|
|
case = base.copy()
|
|
case.update(case_template)
|
|
|
|
case[":name:"] = base_name
|
|
if len(cases) > 1:
|
|
case[":name:"] += "-" + str(i)
|
|
|
|
if case.pop("skip", False):
|
|
case = pytest.param(case, marks=pytest.mark.xfail)
|
|
|
|
yield case
|
|
|
|
|
|
def id_func(param):
|
|
"""Give a nice parameter name to the generated function parameters
|
|
"""
|
|
if isinstance(param, dict) and ":name:" in param:
|
|
return param[":name:"]
|
|
|
|
retval = str(param)
|
|
if len(retval) > 25:
|
|
retval = retval[:20] + "..." + retval[-2:]
|
|
return retval
|