Esempio n. 1
0
def test_non_editable_no_override_editable(project, working_set, is_editable):
    project.environment.python_requires = PySpecSet(">=3.6")
    actions.do_add(
        project,
        editables=[
            "git+https://github.com/test-root/demo.git#egg=demo",
            "git+https://github.com/test-root/demo-module.git#egg=demo-module",
        ],
    )
    actions.do_add(
        project,
        packages=["git+https://github.com/test-root/demo.git#egg=demo"],
        no_editable=not is_editable,
    )
    assert working_set["demo-module"].link_file
    assert bool(working_set["demo"].link_file) is is_editable
    dependencies = project.get_pyproject_dependencies("default")
    if is_editable:
        assert dependencies == [
            "-e git+https://github.com/test-root/demo.git#egg=demo",
            "-e git+https://github.com/test-root/demo-module.git#egg=demo-module",
            "demo @ git+https://github.com/test-root/demo.git",
        ]
    else:
        assert dependencies == [
            "demo @ git+https://github.com/test-root/demo.git",
            "-e git+https://github.com/test-root/demo-module.git#egg=demo-module",
        ]
Esempio n. 2
0
def test_update_all_packages(project, repository, capsys):
    actions.do_add(project, packages=["requests", "pytz"])
    repository.add_candidate("pytz", "2019.6")
    repository.add_candidate("chardet", "3.0.5")
    repository.add_candidate("requests", "2.20.0")
    repository.add_dependencies(
        "requests",
        "2.20.0",
        [
            "certifi>=2017.4.17",
            "chardet<3.1.0,>=3.0.2",
            "idna<2.8,>=2.5",
            "urllib3<1.24,>=1.21.1",
        ],
    )
    actions.do_update(project)
    locked_candidates = project.get_locked_candidates()
    assert locked_candidates["requests"].version == "2.20.0"
    assert locked_candidates["chardet"].version == "3.0.5"
    assert locked_candidates["pytz"].version == "2019.6"
    out, _ = capsys.readouterr()
    assert "3 to update" in out

    actions.do_sync(project)
    out, _ = capsys.readouterr()
    assert "All packages are synced to date" in out
Esempio n. 3
0
def test_add_dependency_from_multiple_parents(project, working_set, mocker):
    mocker.patch(
        "pdm.models.environment.get_pep508_environment",
        return_value={"platform_system": "Darwin"},
    )
    actions.do_add(project, packages=["requests", "chardet; platform_system!='Darwin'"])
    assert "chardet" in working_set
Esempio n. 4
0
def test_add_editable_package(project, working_set, is_dev):
    # Ensure that correct python version is used.
    project.environment.python_requires = PySpecSet(">=3.6")
    actions.do_add(project, is_dev, packages=["demo"])
    actions.do_add(
        project,
        is_dev,
        editables=["git+https://github.com/test-root/demo.git#egg=demo"],
    )
    group = (
        project.tool_settings["dev-dependencies"]["dev"]
        if is_dev
        else project.meta["dependencies"]
    )
    assert "demo" in group[0]
    assert "-e git+https://github.com/test-root/demo.git#egg=demo" in group[1]
    locked_candidates = project.locked_repository.all_candidates
    assert (
        locked_candidates["demo"].prepare(project.environment).revision
        == "1234567890abcdef"
    )
    assert locked_candidates["idna"].version == "2.7"
    assert "idna" in working_set

    actions.do_sync(project, no_editable=True)
    assert not working_set["demo"].link_file
Esempio n. 5
0
def test_update_all_packages(project, repository, capsys, strategy):
    actions.do_add(project, packages=["requests", "pytz"])
    repository.add_candidate("pytz", "2019.6")
    repository.add_candidate("chardet", "3.0.5")
    repository.add_candidate("requests", "2.20.0")
    repository.add_dependencies(
        "requests",
        "2.20.0",
        [
            "certifi>=2017.4.17",
            "chardet<3.1.0,>=3.0.2",
            "idna<2.8,>=2.5",
            "urllib3<1.24,>=1.21.1",
        ],
    )
    actions.do_update(project, strategy=strategy)
    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["requests"].version == "2.20.0"
    assert locked_candidates["chardet"].version == ("3.0.5" if strategy
                                                    == "all" else "3.0.4")
    assert locked_candidates["pytz"].version == "2019.6"
    out, _ = capsys.readouterr()
    update_num = 3 if strategy == "all" else 2
    assert f"{update_num} to update" in out, out

    actions.do_sync(project)
    out, _ = capsys.readouterr()
    assert "All packages are synced to date" in out
Esempio n. 6
0
def test_add_package_with_mismatch_marker(project, working_set, mocker):
    mocker.patch(
        "pdm.models.environment.get_pep508_environment",
        return_value={"platform_system": "Darwin"},
    )
    actions.do_add(project, packages=["requests", "pytz; platform_system!='Darwin'"])
    assert "pytz" not in working_set
Esempio n. 7
0
def test_update_with_package_and_sections_argument(project):
    actions.do_add(project, packages=["requests", "pytz"])
    with pytest.raises(PdmUsageError):
        actions.do_update(project, sections=("default", "dev"), packages=("requests",))

    with pytest.raises(PdmUsageError):
        actions.do_update(project, default=False, packages=("requests",))
Esempio n. 8
0
def test_sync_in_sequential_mode(project, working_set, capsys):
    project.project_config["parallel_install"] = False
    actions.do_add(project, packages=["requests"])
    out, _ = capsys.readouterr()
    assert "5 to add" in out
    assert "test-project" in working_set
    assert working_set["chardet"].version == "3.0.4"
Esempio n. 9
0
def test_add_package_update_eager(project, repository):
    actions.do_add(project,
                   sync=False,
                   save="wildcard",
                   packages=["requests", "pytz"])

    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["requests"].version == "2.19.1"
    assert locked_candidates["chardet"].version == "3.0.4"
    assert locked_candidates["pytz"].version == "2019.3"

    repository.add_candidate("pytz", "2019.6")
    repository.add_candidate("chardet", "3.0.5")
    repository.add_candidate("requests", "2.20.0")
    repository.add_dependencies(
        "requests",
        "2.20.0",
        [
            "certifi>=2017.4.17",
            "chardet<3.1.0,>=3.0.2",
            "idna<2.8,>=2.5",
            "urllib3<1.24,>=1.21.1",
        ],
    )
    actions.do_add(project,
                   sync=False,
                   save="wildcard",
                   packages=["requests"],
                   strategy="eager")
    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["requests"].version == "2.20.0"
    assert locked_candidates["chardet"].version == "3.0.5"
    assert locked_candidates["pytz"].version == "2019.3"
Esempio n. 10
0
def test_remove_package_exist_in_multi_section(project, working_set):
    actions.do_add(project, packages=["requests"])
    actions.do_add(project, dev=True, packages=["urllib3"])
    actions.do_remove(project, dev=True, packages=["urllib3"])
    assert not any("urllib3" in line
                   for line in project.meta["dev-dependencies"])
    assert "urllib3" in working_set
    assert "requests" in working_set
Esempio n. 11
0
def test_add_package_to_custom_package(project, repository, working_set):
    actions.do_add(project, section="test", packages=["requests"])

    assert "requests" in project.tool_settings["test-dependencies"]
    locked_candidates = project.get_locked_candidates("test")
    assert locked_candidates["idna"].version == "2.7"
    for package in ("requests", "idna", "chardet", "urllib3", "certifi"):
        assert package in working_set
Esempio n. 12
0
def test_remove_package_exist_in_multi_section(project, repository,
                                               working_set):
    actions.do_add(project, packages=["requests"])
    actions.do_add(project, dev=True, packages=["urllib3"])
    actions.do_remove(project, dev=True, packages=["urllib3"])
    assert "urllib3" not in project.tool_settings["dev-dependencies"]
    assert "urllib3" in working_set
    assert "requests" in working_set
Esempio n. 13
0
def test_add_package_to_custom_section(project, working_set):
    actions.do_add(project, section="test", packages=["requests"])

    assert "requests" in project.meta.optional_dependencies["test"][0]
    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["idna"].version == "2.7"
    for package in ("requests", "idna", "chardet", "urllib3", "certifi"):
        assert package in working_set
Esempio n. 14
0
def test_remove_package_exist_in_multi_groups(project, working_set):
    actions.do_add(project, packages=["requests"])
    actions.do_add(project, dev=True, packages=["urllib3"])
    actions.do_remove(project, dev=True, packages=["urllib3"])
    assert all("urllib3" not in line
               for line in project.tool_settings["dev-dependencies"]["dev"])
    assert "urllib3" in working_set
    assert "requests" in working_set
Esempio n. 15
0
def test_freeze_dependencies_list(project, capsys, mocker):
    actions.do_add(project, packages=["requests"])
    capsys.readouterr()
    mocker.patch("pdm.cli.actions.frozen_requirement_from_dist",
                 side_effect=lambda d: d.as_req())
    actions.do_list(project, freeze=True)
    content, _ = capsys.readouterr()
    assert "requests==2.19.1" in content
    assert "urllib3==1.22" in content
Esempio n. 16
0
def test_remove_package_with_dry_run(project, working_set, capsys):
    actions.do_add(project, packages=["requests"])
    actions.do_remove(project, packages=["requests"], dry_run=True)
    out, _ = capsys.readouterr()
    project._lockfile = None
    locked_candidates = project.locked_repository.all_candidates
    assert "urllib3" in locked_candidates
    assert "urllib3" in working_set
    assert "- urllib3 1.22" in out
Esempio n. 17
0
def test_add_package_to_custom_dev_section(project, working_set):
    actions.do_add(project, dev=True, section="test", packages=["requests"])

    dependencies = project.tool_settings["dev-dependencies"]["test"]
    assert "requests" in dependencies[0]
    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["idna"].version == "2.7"
    for package in ("requests", "idna", "chardet", "urllib3", "certifi"):
        assert package in working_set
Esempio n. 18
0
def test_list_dependency_graph_with_circular(project, capsys, repository):
    repository.add_candidate("foo", "0.1.0")
    repository.add_candidate("foo-bar", "0.1.0")
    repository.add_dependencies("foo", "0.1.0", ["foo-bar"])
    repository.add_dependencies("foo-bar", "0.1.0", ["foo"])
    actions.do_add(project, packages=["foo"])
    actions.do_list(project, True)
    content, _ = capsys.readouterr()
    assert "foo [circular]" in content
Esempio n. 19
0
def test_add_package(project, working_set, is_dev):
    actions.do_add(project, is_dev, packages=["requests"])
    section = (project.tool_settings["dev-dependencies"]["dev"]
               if is_dev else project.meta["dependencies"])

    assert section[0] == "requests~=2.19"
    locked_candidates = project.locked_repository.all_candidates
    assert locked_candidates["idna"].version == "2.7"
    for package in ("requests", "idna", "chardet", "urllib3", "certifi"):
        assert package in working_set
Esempio n. 20
0
def test_add_package(project, working_set, is_dev):
    actions.do_add(project, is_dev, packages=["requests"])
    section = "dev-dependencies" if is_dev else "dependencies"

    assert project.meta[section][0] == "requests~=2.19"
    locked_candidates = project.get_locked_candidates(
        "dev" if is_dev else "default")
    assert locked_candidates["idna"].version == "2.7"
    for package in ("requests", "idna", "chardet", "urllib3", "certifi"):
        assert package in working_set
Esempio n. 21
0
def test_editable_package_override_non_editable(project, working_set):
    project.environment.python_requires = PySpecSet(">=3.6")
    actions.do_add(
        project,
        packages=["git+https://github.com/test-root/demo.git#egg=demo"])
    actions.do_add(
        project,
        editables=["git+https://github.com/test-root/demo.git#egg=demo"],
    )
    assert working_set["demo"].editable
Esempio n. 22
0
def test_sync_clean_packages(project, repository, working_set):
    for candidate in [
            make_distribution("foo", "0.1.0"),
            make_distribution("chardet", "3.0.1"),
            make_distribution("idna", "2.7"),
    ]:
        working_set.add_distribution(candidate)
    actions.do_add(project, packages=["requests"], sync=False)
    actions.do_sync(project, clean=True)
    assert "foo" not in working_set
Esempio n. 23
0
def test_update_with_package_and_sections_argument(project, repository,
                                                   working_set):
    actions.do_add(project, packages=["requests", "pytz"])
    with pytest.raises(click.BadParameter):
        actions.do_update(project,
                          sections=("default", "dev"),
                          packages=("requests", ))

    with pytest.raises(click.BadParameter):
        actions.do_update(project, default=False, packages=("requests", ))
Esempio n. 24
0
def test_sync_only_different(project, working_set, capsys):
    working_set.add_distribution(make_distribution("foo", "0.1.0"))
    working_set.add_distribution(make_distribution("chardet", "3.0.1"))
    working_set.add_distribution(make_distribution("idna", "2.7"))
    actions.do_add(project, packages=["requests"])
    out, _ = capsys.readouterr()
    assert "3 to add" in out
    assert "1 to update" in out
    assert "foo" in working_set
    assert "test-project" in working_set
    assert working_set["chardet"].version == "3.0.4"
Esempio n. 25
0
File: add.py Progetto: skyoo2003/pdm
 def handle(self, project: Project, options: argparse.Namespace) -> None:
     actions.do_add(
         project,
         dev=options.dev,
         section=options.section,
         sync=options.sync,
         save=options.save_strategy,
         strategy=options.update_strategy,
         editables=options.editables,
         packages=options.packages,
     )
Esempio n. 26
0
def test_sync_only_different(project, repository, working_set, capsys):
    working_set.add_candidate(make_candidate("foo", "0.1.0"))
    working_set.add_candidate(make_candidate("chardet", "3.0.1"))
    working_set.add_candidate(make_candidate("idna", "2.7"))
    actions.do_add(project, packages=["requests"])
    out, _ = capsys.readouterr()
    assert "4 packages added" in out
    assert "1 package updated" in out
    assert "foo" in working_set
    assert "test-project" in working_set
    assert working_set["chardet"].version == "3.0.4"
Esempio n. 27
0
def test_sync_dry_run(project, working_set):
    for candidate in [
            make_distribution("foo", "0.1.0"),
            make_distribution("chardet", "3.0.1"),
            make_distribution("idna", "2.7"),
    ]:
        working_set.add_distribution(candidate)
    actions.do_add(project, packages=["requests"], sync=False)
    actions.do_sync(project, clean=True, dry_run=True)
    assert "foo" in working_set
    assert "requests" not in working_set
    assert working_set["chardet"].version == "3.0.1"
Esempio n. 28
0
def test_update_ignore_constraints(project, repository):
    actions.do_add(project, packages=("pytz", ))
    assert project.meta.dependencies == ["pytz~=2019.3"]
    repository.add_candidate("pytz", "2020.2")

    actions.do_update(project, unconstrained=False, packages=("pytz", ))
    assert project.meta.dependencies == ["pytz~=2019.3"]
    assert project.get_locked_candidates()["pytz"].version == "2019.3"

    actions.do_update(project, unconstrained=True, packages=("pytz", ))
    assert project.meta.dependencies == ["pytz~=2020.2"]
    assert project.get_locked_candidates()["pytz"].version == "2020.2"
Esempio n. 29
0
def test_add_remote_package_url(project, is_dev):
    actions.do_add(
        project,
        is_dev,
        packages=[
            "http://fixtures.test/artifacts/demo-0.0.1-py2.py3-none-any.whl"
        ],
    )
    section = "dev-dependencies" if is_dev else "dependencies"
    assert (
        project.meta[section][0] ==
        "demo @ http://fixtures.test/artifacts/demo-0.0.1-py2.py3-none-any.whl"
    )
Esempio n. 30
0
def test_remove_both_normal_and_editable_packages(project, is_dev):
    project.environment.python_requires = PySpecSet(">=3.6")
    actions.do_add(project, is_dev, packages=["demo"])
    actions.do_add(
        project,
        is_dev,
        editables=["git+https://github.com/test-root/demo.git#egg=demo"],
    )
    section = "dev-dependencies" if is_dev else "dependencies"
    actions.do_remove(project, is_dev, packages=["demo"])
    assert not project.meta[section]
    assert "demo" not in project.get_locked_candidates(
        "dev" if is_dev else "default")