diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2014-06-15 08:52:46 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2014-06-15 08:52:46 -0400 |
| commit | e61c32101ec17fb2b55aeda5218d12b41926ecbb (patch) | |
| tree | 32c290d552605b6e9b1f3550174abe432e42f006 | |
| parent | 087c203263f18b80f1fdc218561d1f065bf309d3 (diff) | |
| parent | def90a0a72012590fccd9a8bc0e247242f09b795 (diff) | |
| download | external_python_setuptools-e61c32101ec17fb2b55aeda5218d12b41926ecbb.tar.gz external_python_setuptools-e61c32101ec17fb2b55aeda5218d12b41926ecbb.tar.bz2 external_python_setuptools-e61c32101ec17fb2b55aeda5218d12b41926ecbb.zip | |
Merging integration tests from Doug Hellmann
| -rw-r--r-- | .gitignore | 18 | ||||
| -rw-r--r-- | setuptools/tests/test_integration.py | 88 |
2 files changed, 106 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7b00d3c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +*.pyc +*~ +*.swp +.coverage +.tox +distribute.egg-info +setuptools.egg-info +build +dist +lib +bin +include +\.Python +*.swp +CHANGES (links).txt +.git* +py-*.egg +pytest-*.egg diff --git a/setuptools/tests/test_integration.py b/setuptools/tests/test_integration.py new file mode 100644 index 00000000..3938ccc5 --- /dev/null +++ b/setuptools/tests/test_integration.py @@ -0,0 +1,88 @@ +"""Run some integration tests. + +Try to install a few packages. +""" + +import glob +import os +import shutil +import site +import sys +import tempfile + +import pytest + +from setuptools.command.easy_install import easy_install +from setuptools.command import easy_install as easy_install_pkg +from setuptools.dist import Distribution + + +@pytest.fixture +def install_context(request): + """Fixture to set up temporary installation directory. + """ + # Save old values so we can restore them. + new_cwd = tempfile.mkdtemp() + old_cwd = os.getcwd() + old_enable_site = site.ENABLE_USER_SITE + old_file = easy_install_pkg.__file__ + old_base = site.USER_BASE + old_site = site.USER_SITE + old_ppath = os.environ.get('PYTHONPATH') + + def fin(): + os.chdir(old_cwd) + shutil.rmtree(new_cwd) + shutil.rmtree(site.USER_BASE) + shutil.rmtree(site.USER_SITE) + site.USER_BASE = old_base + site.USER_SITE = old_site + site.ENABLE_USER_SITE = old_enable_site + easy_install_pkg.__file__ = old_file + os.environ['PYTHONPATH'] = old_ppath or '' + request.addfinalizer(fin) + + # Change the environment and site settings to control where the + # files are installed and ensure we do not overwrite anything. + site.USER_BASE = tempfile.mkdtemp() + site.USER_SITE = tempfile.mkdtemp() + easy_install_pkg.__file__ = site.USER_SITE + os.chdir(new_cwd) + install_dir = tempfile.mkdtemp() + sys.path.append(install_dir) + os.environ['PYTHONPATH'] = os.path.pathsep.join(sys.path) + + # Set up the command for performing the installation. + dist = Distribution() + cmd = easy_install(dist) + cmd.install_dir = install_dir + return cmd + + +def _install_one(requirement, cmd, pkgname, modulename): + cmd.args = [requirement] + cmd.ensure_finalized() + cmd.run() + target = cmd.install_dir + dest_path = glob.glob(os.path.join(target, pkgname + '*.egg')) + assert dest_path + assert os.path.exists(os.path.join(dest_path[0], pkgname, modulename)) + +def test_stevedore(install_context): + _install_one('stevedore', install_context, + 'stevedore', 'extension.py') + +@pytest.mark.xfail +def test_virtualenvwrapper(install_context): + _install_one('virtualenvwrapper', install_context, + 'virtualenvwrapper', 'hook_loader.py') + +@pytest.mark.xfail +def test_pbr(install_context): + _install_one('pbr', install_context, + 'pbr', 'core.py') + +@pytest.mark.xfail +def test_python_novaclient(install_context): + _install_one('python-novaclient', install_context, + 'novaclient', 'base.py') |
