From e5f1b61f8c607ed7e671de5ea8e65743fe804f7e Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Thu, 2 Feb 2017 15:57:06 -0700 Subject: [PATCH] initial testing work --- .travis.yml | 2 +- test_pipenv.py | 117 -------------------------- tests/__init__.py | 0 tests/requirements_django.txt | 1 - tests/requirements_egg.txt | 1 - tests/requirements_requests.txt | 1 - tests/requirements_requests_socks.txt | 1 - tests/test_pipenv.py | 61 ++++++++++++++ tests/test_project.py | 13 +++ tests/test_utils.py | 73 ++++++++++++++++ 10 files changed, 148 insertions(+), 122 deletions(-) delete mode 100644 test_pipenv.py create mode 100644 tests/__init__.py delete mode 100644 tests/requirements_django.txt delete mode 100644 tests/requirements_egg.txt delete mode 100644 tests/requirements_requests.txt delete mode 100644 tests/requirements_requests_socks.txt create mode 100644 tests/test_pipenv.py create mode 100644 tests/test_project.py create mode 100644 tests/test_utils.py diff --git a/.travis.yml b/.travis.yml index 6418293b..fdb71760 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ install: - "pipenv install --dev" # command to run tests script: - - pipenv run pytest test_pipenv.py + - pipenv run pytest tests diff --git a/test_pipenv.py b/test_pipenv.py deleted file mode 100644 index f29412e3..00000000 --- a/test_pipenv.py +++ /dev/null @@ -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') - diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/requirements_django.txt b/tests/requirements_django.txt deleted file mode 100644 index 11befb39..00000000 --- a/tests/requirements_django.txt +++ /dev/null @@ -1 +0,0 @@ -Django>1.10 #django diff --git a/tests/requirements_egg.txt b/tests/requirements_egg.txt deleted file mode 100644 index aeeb5d2c..00000000 --- a/tests/requirements_egg.txt +++ /dev/null @@ -1 +0,0 @@ --e svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject # comment \ No newline at end of file diff --git a/tests/requirements_requests.txt b/tests/requirements_requests.txt deleted file mode 100644 index ff02e683..00000000 --- a/tests/requirements_requests.txt +++ /dev/null @@ -1 +0,0 @@ -requests>2.3.0 diff --git a/tests/requirements_requests_socks.txt b/tests/requirements_requests_socks.txt deleted file mode 100644 index c16af99c..00000000 --- a/tests/requirements_requests_socks.txt +++ /dev/null @@ -1 +0,0 @@ -requests[socks] diff --git a/tests/test_pipenv.py b/tests/test_pipenv.py new file mode 100644 index 00000000..5d14a291 --- /dev/null +++ b/tests/test_pipenv.py @@ -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') diff --git a/tests/test_project.py b/tests/test_project.py new file mode 100644 index 00000000..3017458b --- /dev/null +++ b/tests/test_project.py @@ -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') diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 00000000..a6b38ff0 --- /dev/null +++ b/tests/test_utils.py @@ -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}}