test_pypi.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from nose.tools import *
  2. from os.path import join as pjoin
  3. from testpath import assert_isfile, assert_isdir
  4. from testpath.tempdir import TemporaryDirectory
  5. from nsist.pypi import WheelDownloader, extract_wheel, CachedRelease
  6. def test_download():
  7. wd = WheelDownloader("astsearch==0.1.2", "3.5.1", 64)
  8. wheel = wd.fetch()
  9. assert_isfile(wheel)
  10. with TemporaryDirectory() as td:
  11. extract_wheel(wheel, target_dir=td)
  12. assert_isfile(pjoin(td, 'astsearch.py'))
  13. # To exclude this, run: nosetests -a '!network'
  14. test_download.network = 1
  15. def test_pick_best_wheel():
  16. wd = WheelDownloader("astsearch==0.1.2", "3.5.1", 64)
  17. # Some of the wheel filenames below are impossible combinations - they are
  18. # there to test the scoring and ranking machinery.
  19. # Prefer Windows-specific wheel
  20. releases = [
  21. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  22. CachedRelease('astsearch-0.1.2-py3-none-win_amd64.whl'),
  23. ]
  24. assert_equal(wd.pick_best_wheel(releases), releases[1])
  25. # Wrong Windows bitness
  26. releases = [
  27. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  28. CachedRelease('astsearch-0.1.2-py3-none-win_32.whl'),
  29. ]
  30. assert_equal(wd.pick_best_wheel(releases), releases[0])
  31. # Prefer more specific Python version
  32. releases = [
  33. CachedRelease('astsearch-0.1.2-cp35-none-any.whl'),
  34. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  35. ]
  36. assert_equal(wd.pick_best_wheel(releases), releases[0])
  37. # Prefer more specific Python version
  38. releases = [
  39. CachedRelease('astsearch-0.1.2-py34.py35-none-any.whl'),
  40. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  41. ]
  42. assert_equal(wd.pick_best_wheel(releases), releases[0])
  43. # Incompatible Python version
  44. releases = [
  45. CachedRelease('astsearch-0.1.2-cp33-none-any.whl'),
  46. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  47. ]
  48. assert_equal(wd.pick_best_wheel(releases), releases[1])
  49. # Prefer more specific ABI version
  50. releases = [
  51. CachedRelease('astsearch-0.1.2-py3-abi3-any.whl'),
  52. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  53. ]
  54. assert_equal(wd.pick_best_wheel(releases), releases[0])
  55. # Incompatible ABI version
  56. releases = [
  57. CachedRelease('astsearch-0.1.2-cp35-abi4-win_amd64.whl'),
  58. CachedRelease('astsearch-0.1.2-py3-none-any.whl'),
  59. ]
  60. assert_equal(wd.pick_best_wheel(releases), releases[1])
  61. # Platform has priority over other attributes
  62. releases = [
  63. CachedRelease('astsearch-0.1.2-cp35-abi3-any.whl'),
  64. CachedRelease('astsearch-0.1.2-py2.py3-none-win_amd64.whl'),
  65. ]
  66. assert_equal(wd.pick_best_wheel(releases), releases[1])