Ejemplo n.º 1
0
def test_source_packages():
  for ext in ('.tar.gz', '.tar', '.tgz', '.zip', '.tar.bz2'):
    sl = SourcePackage('a_p_r-3.1.3' + ext)
    assert sl._name == 'a_p_r'
    assert sl.name == 'a-p-r'
    assert sl.raw_version == '3.1.3'
    assert sl.version == parse_version(sl.raw_version)
    for req in ('a_p_r', 'a_p_r>2', 'a_p_r>3', 'a_p_r>=3.1.3', 'a_p_r==3.1.3', 'a_p_r>3,<3.5'):
      assert sl.satisfies(req)
      assert sl.satisfies(Requirement.parse(req))
    for req in ('foo', 'a_p_r==4.0.0', 'a_p_r>4.0.0', 'a_p_r>3.0.0,<3.0.3', 'a==3.1.3'):
      assert not sl.satisfies(req)
  sl = SourcePackage('python-dateutil-1.5.tar.gz')
  assert sl.name == 'python-dateutil'
  assert sl.raw_version == '1.5'
Ejemplo n.º 2
0
def test_local_specifier():
    for ext in ('.tar.gz', '.tar', '.tgz', '.zip', '.tar.bz2'):
        sl = SourcePackage('a_p_r-3.1.3+pexed.1' + ext)
        assert sl.name == 'a-p-r'
        assert sl.raw_version == '3.1.3+pexed.1'
        assert sl.version == parse_version(sl.raw_version)
        assert sl.satisfies('a_p_r==3.1.3+pexed.1')
Ejemplo n.º 3
0
def test_iteration_with_return():
    pex_url = 'https://pypi.python.org/packages/source/p/pex/pex-0.8.6.tar.gz'
    crawler_mock = mock.create_autospec(Crawler, spec_set=True)
    crawler_mock.crawl.return_value = [pex_url]
    iterator = Iterator(crawler=crawler_mock, follow_links=True)

    assert list(iterator.iter(
        Requirement.parse('pex'))) == [SourcePackage(pex_url)]
    assert len(crawler_mock.crawl.mock_calls) == 1
    _, _, kwargs = crawler_mock.crawl.mock_calls[0]
    assert kwargs == {'follow_links': True}
Ejemplo n.º 4
0
def test_href_translation():
    VERSIONS = ['0.4.0', '0.4.1', '0.5.0', '0.6.0']

    def fake_link(version):
        return 'http://www.example.com/foo/bar/psutil-%s.tar.gz' % version

    fc = FakeCrawler([fake_link(v) for v in VERSIONS])
    ob = Iterator(crawler=fc)

    for v in VERSIONS:
        pkgs = list(ob.iter(Requirement.parse('psutil==%s' % v)))
        assert len(pkgs) == 1, 'Version: %s' % v
        assert pkgs[0] == SourcePackage(fake_link(v))

    assert list(ob.iter(Requirement.parse('psutil>=0.5.0'))) == [
        SourcePackage(fake_link('0.6.0')),
        SourcePackage(fake_link('0.5.0'))
    ]

    assert list(ob.iter(Requirement.parse('psutil'))) == [
        SourcePackage(fake_link(v)) for v in reversed(VERSIONS)
    ]
Ejemplo n.º 5
0
def test_iter_ordering():
    pi = PythonInterpreter.get()
    tgz = SourcePackage('psutil-0.6.1.tar.gz')
    egg = EggPackage('psutil-0.6.1-py%s-%s.egg' %
                     (pi.python, get_build_platform()))
    whl = WheelPackage(
        'psutil-0.6.1-cp%s-none-%s.whl' %
        (pi.python.replace('.', ''), get_build_platform().replace(
            '-', '_').replace('.', '_').lower()))
    req = Requirement.parse('psutil')

    assert list(FakeIterator([tgz, egg, whl]).iter(req)) == [whl, egg, tgz]
    assert list(FakeIterator([egg, tgz, whl]).iter(req)) == [whl, egg, tgz]
Ejemplo n.º 6
0
def test_sorter_sort():
  pi = PythonInterpreter.get()
  tgz = SourcePackage('psutil-0.6.1.tar.gz')
  egg = EggPackage('psutil-0.6.1-py%s-%s.egg' % (pi.python, get_build_platform()))
  whl = WheelPackage('psutil-0.6.1-cp%s-none-%s.whl' % (
      pi.python.replace('.', ''),
      get_build_platform().replace('-', '_').replace('.', '_').lower()))

  assert Sorter().sort([tgz, egg, whl]) == [whl, egg, tgz]
  assert Sorter().sort([egg, tgz, whl]) == [whl, egg, tgz]

  # test unknown type
  sorter = Sorter(precedence=(EggPackage, WheelPackage))
  assert sorter.sort([egg, tgz, whl], filter=False) == [egg, whl, tgz]
  assert sorter.sort([egg, tgz, whl], filter=True) == [egg, whl]
Ejemplo n.º 7
0
def assert_iteration(all_versions, *expected_versions, **iterator_kwargs):
    def package_url(version):
        return 'https://pypi.org/packages/source/p/pex/pex-%s.tar.gz' % version

    urls = [package_url(v) for v in all_versions]
    crawler_mock = mock.create_autospec(Crawler, spec_set=True)
    crawler_mock.crawl.return_value = urls
    iterator = Iterator(crawler=crawler_mock,
                        follow_links=True,
                        **iterator_kwargs)

    assert list(iterator.iter(Requirement.parse('pex'))) == [
        SourcePackage(package_url(v)) for v in expected_versions
    ]
    assert len(crawler_mock.crawl.mock_calls) == 1
    _, _, kwargs = crawler_mock.crawl.mock_calls[0]
    assert kwargs == {'follow_links': True}
Ejemplo n.º 8
0
def test_package_precedence():
  source = SourcePackage('psutil-0.6.1.tar.gz')
  egg = EggPackage('psutil-0.6.1-py2.6.egg')
  whl = WheelPackage('psutil-0.6.1-cp26-none-macosx_10_4_x86_64.whl')

  # default precedence
  assert Sorter.package_precedence(whl) > Sorter.package_precedence(egg)
  assert Sorter.package_precedence(egg) > Sorter.package_precedence(source)
  assert Sorter.package_precedence(whl) > Sorter.package_precedence(source)

  # overridden precedence
  PRECEDENCE = (EggPackage, WheelPackage)
  assert Sorter.package_precedence(source, PRECEDENCE) == (
      source.version, -1, 0, True, source.url)  # unknown rank
  assert Sorter.package_precedence(whl, PRECEDENCE) > Sorter.package_precedence(
      source, PRECEDENCE)
  assert Sorter.package_precedence(egg, PRECEDENCE) > Sorter.package_precedence(
      whl, PRECEDENCE)
Ejemplo n.º 9
0
 def source_package(version):
     return SourcePackage('setuptools-%s.tar.gz' % version)