示例#1
0
def test_merge_pypi_sdist_metadata():
    recipe = PyPi(name="gsw", version="3.3.1")
    pypi_metadata = recipe._get_pypi_metadata(name="gsw", version="3.3.1")
    sdist_metadata = recipe._get_sdist_metadata(pypi_metadata["sdist_url"], "gsw")
    merged_data = PyPi._merge_pypi_sdist_metadata(pypi_metadata, sdist_metadata)
    assert merged_data["compilers"] == ["c"]
    assert sorted(merged_data["setup_requires"]) == sorted(["numpy"])
示例#2
0
def test_panel_entry_points(tmpdir):
    recipe = PyPi(name="panel", version="0.9.1")
    recipe.generate_recipe(folder_path=str(tmpdir))
    recipe_path = str(tmpdir / "panel" / "meta.yaml")
    with open(recipe_path, "r") as f:
        content = f.read()
    assert "- panel = panel.cli:main" in content
示例#3
0
def test_injection_distutils_compiler_gsw():
    recipe = PyPi(name="gsw", version="3.3.1")
    data = recipe._get_sdist_metadata(
        "https://pypi.io/packages/source/g/gsw/gsw-3.3.1.tar.gz", "gsw"
    )
    assert data.get("compilers") == ["c"]
    assert data["packages"] == ["gsw"]
示例#4
0
def test_recipe_extension():
    recipe = PyPi(name="azure-identity", version="1.3.1")
    assert (
        recipe["source"]["url"][0].value
        == "https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/"
        "azure-identity-{{ version }}.zip"
    )
示例#5
0
def test_get_all_selectors_pypi():
    recipe = PyPi(name="pytest", version="5.3.1")
    assert recipe._get_all_selectors_pypi([
        ("(", "sys_platform", "==", "win32", "", "and"),
        ("", "python_version", "==", "2.7", ")", "and"),
        ("", "extra", "==", "socks", "", ""),
    ]) == ["(", "win", "and", "py==27", ")"]
示例#6
0
def test_zipp_recipe_tags_on_deps():
    recipe = PyPi(name="zipp", version="3.0.0")
    assert recipe["build"]["noarch"]
    assert recipe["requirements"]["host"] == [
        "pip",
        "python >=3.6",
        "setuptools_scm >=3.4.1",
    ]
示例#7
0
def test_requests_recipe_extra_deps(capsys):
    CLIConfig().stdout = True
    recipe = PyPi(name="requests", version="2.22.0")
    captured_stdout = capsys.readouterr()
    assert "win-inet-pton" not in recipe["requirements"]["run"]
    assert recipe["build"]["noarch"]
    assert not recipe["build"]["skip"]
    assert f"{Fore.GREEN}{Style.BRIGHT}python" in captured_stdout.out
示例#8
0
def test_injection_distutils_setup_reqs_ensure_list():
    pkg_name, pkg_ver = "pyinstaller-hooks-contrib", "2020.7"
    recipe = PyPi(name=pkg_name, version=pkg_ver)
    data = recipe._get_sdist_metadata(
        f"https://pypi.io/packages/source/p/{pkg_name}/{pkg_name}-{pkg_ver}.tar.gz",
        pkg_name,
    )
    assert data.get("setup_requires") == ["setuptools >= 30.3.0"]
示例#9
0
def test_run_requirements_sdist():
    recipe = PyPi(name="botocore", version="1.14.17")
    assert sorted(recipe["requirements"]["run"]) == sorted([
        "docutils >=0.10,<0.16",
        "jmespath >=0.7.1,<1.0.0",
        "python",
        "python-dateutil >=2.1,<3.0.0",
        "urllib3 >=1.20,<1.26",
    ])
示例#10
0
def test_ciso_recipe():
    recipe = PyPi(name="ciso", version="0.1.0")
    assert sorted(recipe["requirements"]["host"]) == sorted(
        ["cython", "numpy", "pip", "python", "versioneer"])
    assert sorted(recipe["requirements"]["run"]) == sorted(
        ["cython", "python", "<{ pin_compatible('numpy') }}"])
    assert recipe["test"]["commands"] == "pip check"
    assert recipe["test"]["requires"] == "pip"
    assert recipe["test"]["imports"] == "ciso"
示例#11
0
def test_pymc_recipe_fortran():
    recipe = PyPi(name="pymc", version="2.3.6")
    assert sorted(recipe["requirements"]["build"]) == sorted(
        ["<{ compiler('c') }}", "<{ compiler('fortran') }}"])
    assert sorted(recipe["requirements"]["host"]) == sorted(
        ["numpy", "python", "pip"])
    assert sorted(recipe["requirements"]["run"]) == sorted(
        ["<{ pin_compatible('numpy') }}", "python"])
    assert not recipe["build"]["noarch"]
示例#12
0
def test_pytest_recipe_entry_points():
    recipe = PyPi(name="pytest", version="5.3.5")
    assert sorted(recipe["build"]["entry_points"]) == sorted(
        ["pytest=pytest:main", "py.test=pytest:main"])
    assert recipe["about"]["license"] == "MIT"
    assert recipe["about"]["license_file"] == "LICENSE"
    assert recipe["build"]["skip"].values[0].value
    assert recipe["build"]["skip"].values[0].selector == "py2k"
    assert not recipe["build"]["noarch"]
示例#13
0
def test_deps_comments():
    recipe = PyPi(name="kubernetes_asyncio", version="11.2.0")
    assert recipe["requirements"]["run"] == [
        "aiohttp >=2.3.10,<4.0.0",
        "certifi >=14.05.14",
        "python",
        "python-dateutil >=2.5.3",
        "pyyaml >=3.12",
        "setuptools >=21.0.0",
        "six >=1.9.0",
        "urllib3 >=1.24.2",
    ]
示例#14
0
def test_injection_distutils():
    recipe = PyPi(name="hypothesis", version="5.5.1")
    data = recipe._get_sdist_metadata(
        "https://pypi.io/packages/source/h/hypothesis/hypothesis-5.5.1.tar.gz",
        "hypothesis",
    )
    assert sorted(data["install_requires"]) == sorted(
        ["attrs>=19.2.0", "sortedcontainers>=2.1.0,<3.0.0"])
    assert data["entry_points"] == {
        "pytest11": ["hypothesispytest = hypothesis.extra.pytestplugin"]
    }
    assert data["version"] == "5.5.1"
    assert data["name"] == "hypothesis"
    assert not data.get("compilers")
示例#15
0
def test_mypy_deps_normalization_and_entry_points():
    recipe = PyPi(name="mypy", version="0.770")
    assert "mypy_extensions >=0.4.3,<0.5.0" in recipe["requirements"]["run"]
    assert "mypy-extensions >=0.4.3,<0.5.0" not in recipe["requirements"]["run"]
    assert "typed-ast >=1.4.0,<1.5.0" in recipe["requirements"]["run"]
    assert "typed_ast <1.5.0,>=1.4.0" not in recipe["requirements"]["run"]
    assert "typing-extensions >=3.7.4" in recipe["requirements"]["run"]
    assert "typing_extensions >=3.7.4" not in recipe["requirements"]["run"]

    assert recipe["build"]["entry_points"].values == [
        "mypy=mypy.__main__:console_entry",
        "stubgen=mypy.stubgen:main",
        "stubtest=mypy.stubtest:main",
        "dmypy=mypy.dmypy.client:console_entry",
    ]
示例#16
0
def test_sequence_inside_another_in_dependencies():
    recipe = PyPi(name="unittest2", version="1.1.0")
    assert recipe["requirements"]["host"] == [
        "argparse",
        "pip",
        "python",
        "six >=1.4",
        "traceback2",
    ]
    assert recipe["requirements"]["run"] == [
        "argparse",
        "python",
        "six >=1.4",
        "traceback2",
    ]
示例#17
0
def test_extract_pypi_requirements(pypi_metadata):
    recipe = PyPi(name="pytest", version="5.3.1")
    pypi_reqs = recipe._extract_requirements(pypi_metadata["info"])
    assert sorted(pypi_reqs["host"]) == sorted(["python", "pip"])
    assert sorted(pypi_reqs["run"]) == sorted([
        "python",
        "py >=1.5.0",
        "packaging",
        "attrs >=17.4.0",
        "more-itertools >=4.0.0",
        "pluggy <1.0,>=0.12",
        "wcwidth",
        "pathlib2 >=2.2.0  # [py<36]",
        "importlib-metadata >=0.12  # [py<38]",
        "atomicwrites >=1.0  # [win]",
        "colorama   # [win]",
    ])
示例#18
0
def test_injection_distutils_pytest():
    recipe = PyPi(name="pytest", version="5.3.2")
    data = recipe._get_sdist_metadata(
        "https://pypi.io/packages/source/p/pytest/pytest-5.3.2.tar.gz",
        "pytest")
    assert sorted(data["install_requires"]) == sorted([
        "py>=1.5.0",
        "packaging",
        "attrs>=17.4.0",
        "more-itertools>=4.0.0",
        'atomicwrites>=1.0;sys_platform=="win32"',
        'pathlib2>=2.2.0;python_version<"3.6"',
        'colorama;sys_platform=="win32"',
        "pluggy>=0.12,<1.0",
        'importlib-metadata>=0.12;python_version<"3.8"',
        "wcwidth",
    ])
    assert sorted(data["setup_requires"]) == sorted(
        ["setuptools>=40.0", "setuptools_scm"])
    assert not data.get("compilers")
示例#19
0
def test_tzdata_without_setup_py():
    recipe = PyPi(name="tzdata", version="2020.1")
    assert recipe["build"]["noarch"] == "python"
    assert recipe["about"]["home"] == "https://github.com/python/tzdata"
示例#20
0
def test_botocore_recipe_license_name():
    recipe = PyPi(name="botocore", version="1.15.8")
    assert recipe["about"]["license"] == "Apache-2.0"
示例#21
0
def test_keyring_host_appearing_twice():
    recipe = PyPi(name="keyring", version="21.1.1")
    assert "importlib-metadata" in recipe["requirements"]["run"]
    assert "importlib_metadata" not in recipe["requirements"]["run"]
示例#22
0
def test_requests_recipe_extra_deps():
    recipe = PyPi(name="requests", version="2.22.0")
    assert "win-inet-pton" not in recipe["requirements"]["run"]
    assert recipe["build"]["noarch"]
    assert not recipe["build"]["skip"]
示例#23
0
def test_cythongsl_recipe_build():
    recipe = PyPi(name="cythongsl", version="0.2.2")
    assert recipe["requirements"]["build"] == "<{ compiler('c') }}"
    assert recipe["requirements"]["host"] == ["cython >=0.16", "pip", "python"]
    assert not recipe["build"]["noarch"]
示例#24
0
def test_python_requires_setup_py():
    recipe = PyPi(name="pygments", version="2.6.1")
    assert "noarch" in recipe["build"]
    assert "python >=3.5" in recipe["requirements"]["host"]
    assert "python >=3.5" in recipe["requirements"]["run"]
示例#25
0
def test_django_rest_framework_xml_license():
    recipe = PyPi(name="djangorestframework-xml", version="1.4.0")
    assert recipe["about"]["license"] == "BSD-3-Clause"
    assert recipe["about"]["license_file"] == "LICENSE"
    assert recipe["test"]["imports"][0].value == "rest_framework_xml"
示例#26
0
def test_nbdime_license_type():
    recipe = PyPi(name="nbdime", version="2.0.0")
    assert recipe["about"]["license"] == "BSD-3-Clause"
    assert "setupbase" not in recipe["requirements"]["host"]
示例#27
0
def test_build_noarch_skip():
    recipe = PyPi(name="hypothesis", version="5.5.2")
    assert recipe["build"]["noarch"].values[0] == "python"
    assert not recipe["build"]["skip"].values
示例#28
0
def test_recipe_with_just_py_modules():
    recipe = PyPi(name="python-markdown-math", version="0.7")
    assert recipe["test"]["imports"] == "mdx_math"
示例#29
0
def test_multiples_exit_setup():
    """Bug fix #146"""
    recipe = PyPi(name="pyproj", version="2.6.1")
    assert recipe
示例#30
0
def test_keep_filename_license():
    recipe = PyPi(name="respx", version="0.10.1")
    assert recipe["about"]["license_file"] == "LICENSE.md"