Merge branch 'testing' into refactor

This commit is contained in:
Nate Prewitt
2017-02-06 11:55:20 -07:00
10 changed files with 148 additions and 122 deletions
+1 -1
View File
@@ -17,4 +17,4 @@ install:
- "pipenv install --dev"
# command to run tests
script:
- pipenv run pytest test_pipenv.py
- pipenv run pytest tests
-117
View File
@@ -1,117 +0,0 @@
import os
import pytest
from pipenv.cli import parse_download_fname
import pipenv.utils
import delegator
def test_parse_download_fname():
fname = 'functools32-3.2.3-2.zip'
version = parse_download_fname(fname)
assert version == '3.2.3-2'
fname = 'functools32-3.2.3-blah.zip'
version = parse_download_fname(fname)
assert version == '3.2.3-blah'
fname = 'functools32-3.2.3.zip'
version = parse_download_fname(fname)
assert version == '3.2.3'
fname = 'colorama-0.3.7-py2.py3-none-any.whl'
version = parse_download_fname(fname)
assert version == '0.3.7'
fname = 'colorama-0.3.7-2-py2.py3-none-any.whl'
version = parse_download_fname(fname)
assert version == '0.3.7-2'
fname = 'click-completion-0.2.1.tar.gz'
version = parse_download_fname(fname)
assert version == '0.2.1'
fname = 'Twisted-16.5.0.tar.bz2'
version = parse_download_fname(fname)
assert version == '16.5.0'
fname = 'Twisted-16.1.1-cp27-none-win_amd64.whl'
version = parse_download_fname(fname)
assert version == '16.1.1'
def test_convert_deps_to_pip():
# requests = '*'
deps = {'requests': '*'}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests'
# requests = {}
deps = {'requests': {}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests'
# requests = { extras = ['socks'] }
deps = {'requests': {'extras': ['socks']}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests[socks]'
# Django = '>1.10'
deps = {'django': '>1.10'}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'django>1.10'
# pinax = { git = 'git://github.com/pinax/pinax.git', ref = '1.4', editable = true }
deps = {'pinax': {'git': 'git://github.com/pinax/pinax.git', 'ref': '1.4', 'editable': True}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == '-e git+git://github.com/pinax/pinax.git@1.4#egg=pinax'
# pinax = { git = 'git://github.com/pinax/pinax.git', ref = '1.4'}
deps = {'pinax': {'git': 'git://github.com/pinax/pinax.git', 'ref': '1.4'}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'git+git://github.com/pinax/pinax.git@1.4#egg=pinax'
def test_convert_from_pip():
# requests
dep = 'requests'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'requests': '*'}
# Django>1.10
dep = 'Django>1.10'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'Django': '>1.10'}
# requests[socks]
dep = 'requests[socks]'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'requests': {'extras': ['socks']}}
dep = '-e svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {u'MyProject': {u'svn': u'svn://svn.myproject.org/svn/MyProject', 'editable': True}}
def test_cli_usage():
delegator.run('mkdir test_project')
os.chdir('test_project')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
assert delegator.run('touch Pipfile').return_code == 0
assert delegator.run('pipenv --python python').return_code == 0
assert delegator.run('pipenv install requests').return_code == 0
assert delegator.run('pipenv install pytest --dev').return_code == 0
assert delegator.run('pipenv lock').return_code == 0
assert 'pytest' in delegator.run('cat Pipfile').out
assert 'pytest' in delegator.run('cat Pipfile.lock').out
os.chdir('..')
delegator.run('rm -fr test_project')
View File
-1
View File
@@ -1 +0,0 @@
Django>1.10 #django
-1
View File
@@ -1 +0,0 @@
-e svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject # comment
-1
View File
@@ -1 +0,0 @@
requests>2.3.0
-1
View File
@@ -1 +0,0 @@
requests[socks]
+61
View File
@@ -0,0 +1,61 @@
import os
import pytest
import delegator
from pipenv.cli import parse_download_fname
class TestPipenv():
def test_parse_download_fname(self):
fname = 'functools32-3.2.3-2.zip'
version = parse_download_fname(fname)
assert version == '3.2.3-2'
fname = 'functools32-3.2.3-blah.zip'
version = parse_download_fname(fname)
assert version == '3.2.3-blah'
fname = 'functools32-3.2.3.zip'
version = parse_download_fname(fname)
assert version == '3.2.3'
fname = 'colorama-0.3.7-py2.py3-none-any.whl'
version = parse_download_fname(fname)
assert version == '0.3.7'
fname = 'colorama-0.3.7-2-py2.py3-none-any.whl'
version = parse_download_fname(fname)
assert version == '0.3.7-2'
fname = 'click-completion-0.2.1.tar.gz'
version = parse_download_fname(fname)
assert version == '0.2.1'
fname = 'Twisted-16.5.0.tar.bz2'
version = parse_download_fname(fname)
assert version == '16.5.0'
fname = 'Twisted-16.1.1-cp27-none-win_amd64.whl'
version = parse_download_fname(fname)
assert version == '16.1.1'
def test_cli_usage(self):
delegator.run('mkdir test_project')
os.chdir('test_project')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
assert delegator.run('touch Pipfile').return_code == 0
assert delegator.run('pipenv --python python').return_code == 0
assert delegator.run('pipenv install requests').return_code == 0
assert delegator.run('pipenv install pytest --dev').return_code == 0
assert delegator.run('pipenv lock').return_code == 0
assert 'pytest' in delegator.run('cat Pipfile').out
assert 'pytest' in delegator.run('cat Pipfile.lock').out
os.chdir('..')
delegator.run('rm -fr test_project')
+13
View File
@@ -0,0 +1,13 @@
import pipenv.project
class TestProject():
def test_project(self):
proj = pipenv.project.Project()
assert proj.name == 'pipenv'
assert proj.pipfile_exists
assert proj.virtualenv_exists
def test_pew_by_default(self):
proj = pipenv.project.Project()
assert proj.virtualenv_location.endswith('.local/share/virtualenvs/pipenv')
+73
View File
@@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
import pytest
import pipenv.utils
class TestUtils:
"""Test utility functions in pipenv"""
def test_format_toml(self):
"""Verify that two return characters are used between each section"""
data = ('[[source]]\nurl = "https://pypi.org/simple"\n[dev-packages]\n'
'pytest="*"\nsphinx = "*"\n[packages]\nclick ="*"\ncrayons = "*"')
expected = ('[[source]]\nurl = "https://pypi.org/simple"\n\n'
'[dev-packages]\npytest="*"\nsphinx = "*"\n\n'
'[packages]\nclick ="*"\ncrayons = "*"')
assert pipenv.utils.format_toml(data) == expected
def test_convert_deps_to_pip(self):
# requests = '*'
deps = {'requests': '*'}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests'
# requests = {}
deps = {'requests': {}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests'
# requests = { extras = ['socks'] }
deps = {'requests': {'extras': ['socks']}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'requests[socks]'
# Django = '>1.10'
deps = {'django': '>1.10'}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'django>1.10'
# pinax = { git = 'git://github.com/pinax/pinax.git', ref = '1.4', editable = true }
deps = {'pinax': {'git': 'git://github.com/pinax/pinax.git', 'ref': '1.4', 'editable': True}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == '-e git+git://github.com/pinax/pinax.git@1.4#egg=pinax'
# pinax = { git = 'git://github.com/pinax/pinax.git', ref = '1.4'}
deps = {'pinax': {'git': 'git://github.com/pinax/pinax.git', 'ref': '1.4'}}
deps = pipenv.utils.convert_deps_to_pip(deps, r=False)
assert deps[0] == 'git+git://github.com/pinax/pinax.git@1.4#egg=pinax'
def test_convert_from_pip(self):
# requests
dep = 'requests'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'requests': '*'}
# Django>1.10
dep = 'Django>1.10'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'Django': '>1.10'}
# requests[socks]
dep = 'requests[socks]'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {'requests': {'extras': ['socks']}}
dep = '-e svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject'
dep = pipenv.utils.convert_deps_from_pip(dep)
assert dep == {u'MyProject': {u'svn': u'svn://svn.myproject.org/svn/MyProject', 'editable': True}}