示例#1
0
def test_diff_should_update(fake_dist, from_line):
    installed = [fake_dist('django==1.7')]
    reqs = [from_line('django==1.8')]

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == {'django==1.8'}
    assert to_uninstall == set()
示例#2
0
def test_diff_should_install(from_line):
    installed = []  # empty env
    reqs = [from_line('django==1.8')]

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == {'django==1.8'}
    assert to_uninstall == set()
示例#3
0
def test_diff_should_uninstall(fake_dist):
    installed = [fake_dist('django==1.8')]
    reqs = []

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == set()
    assert to_uninstall == {'django'}  # no version spec when uninstalling
示例#4
0
def test_diff_leave_prequ_alone(fake_dist, from_line):
    # Suppose an env contains Django, and prequ itself (including all of
    # its dependencies)
    installed = [
        fake_dist('django==1.7'),
        fake_dist('first==2.0.1'),
        fake_dist('prequ==1.1.1', [
            'click>=4',
            'first',
            'six',
        ]),
        fake_dist('six==1.9.0'),
        fake_dist('click==4.1'),
        fake_dist('foobar==0.3.6'),
    ]

    # Then this Django-only requirement should keep pip around (i.e. NOT
    # uninstall it), but uninstall first
    reqs = [
        from_line('django==1.7'),
    ]

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == set()
    assert to_uninstall == {'foobar'}
示例#5
0
def test_diff_should_do_nothing():
    installed = []  # empty env
    reqs = []  # no requirements

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == set()
    assert to_uninstall == set()
示例#6
0
def test_diff_should_not_uninstall(fake_dist):
    ignored = ('pip==7.1.0', 'prequ==1.0.0', 'pip-review==1.1.1',
               'pkg-resources==0.0.0', 'setuptools==34.0.0', 'wheel==0.29.0')
    installed = [fake_dist(pkg) for pkg in ignored]
    reqs = []

    to_uninstall = diff(reqs, installed)[1]
    assert to_uninstall == set()
示例#7
0
def test_diff_should_uninstall_with_markers(fake_dist, from_line):
    installed = [fake_dist('subprocess32==3.2.7')]
    reqs = [from_line("subprocess32==3.2.7 ; python_version=='2.7'")]

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == set()
    assert to_uninstall == (set() if sys.version.startswith('2.7') else
                            {'subprocess32'})
示例#8
0
def test_diff_should_install_with_markers(from_line):
    installed = []
    reqs = [from_line("subprocess32==3.2.7 ; python_version=='2.7'")]

    to_install, to_uninstall = diff(reqs, installed)
    assert {
        str(x.req)
        for x in to_install
    } == ({'subprocess32==3.2.7'} if sys.version.startswith('2.7') else set())
    assert to_uninstall == set()
示例#9
0
def test_diff_leave_packaging_packages_alone(fake_dist, from_line):
    # Suppose an env contains Django, and pip itself
    installed = [
        fake_dist('django==1.7'),
        fake_dist('first==2.0.1'),
        fake_dist('pip==7.1.0'),
    ]

    # Then this Django-only requirement should keep pip around (i.e. NOT
    # uninstall it), but uninstall first
    reqs = [
        from_line('django==1.7'),
    ]

    to_install, to_uninstall = diff(reqs, installed)
    assert to_install == set()
    assert to_uninstall == {'first'}
示例#10
0
def test_diff_with_editable_without_changes(fake_dist, from_editable,
                                            from_line, small_fake_package_dir):
    installed = [
        fake_dist('small-fake-with-deps==0.1'),
        fake_dist('six==1.10.0'),
    ]
    reqs = [
        from_editable(small_fake_package_dir),
        from_line('six==1.10.0'),
    ]
    assert reqs[0].req is None, "Editable doesn't have Requirement data yet"

    to_install, to_uninstall = diff(reqs, installed)

    assert reqs[0].req is not None, "Requirement data has been filled"
    pinned_ver = get_ireq_version(reqs[0])
    assert installed[0].version == pinned_ver

    assert to_uninstall == set(), "No packages should be uninstalled"
    assert to_install == set(), "No packages should be (re)installed"
示例#11
0
def test_diff_with_editable(fake_dist, from_editable, from_line,
                            small_fake_package_dir):
    installed = [
        fake_dist('small-fake-with-deps==0.0.1'),
        fake_dist('six==1.10.0'),
    ]
    reqs = [
        from_editable(small_fake_package_dir),
        from_line('six==1.10.0'),
    ]
    to_install, to_uninstall = diff(reqs, installed)

    assert to_uninstall == set(), "No packages should be uninstalled"

    # The editable should be upgraded, since the installed version
    # (0.0.1) was different than the version specified in setup.py of
    # the editable package (0.1)
    assert len(to_install) == 1
    package = list(to_install)[0]
    assert package.editable
    assert str(package.link) == path_to_url(small_fake_package_dir)