| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env python
- import sys
- import os
- import shutil
- import tempfile
- import subprocess
- from distutils.command.install import INSTALL_SCHEMES
- from string import Template
- from six.moves import urllib
- def _system_call(*args):
- assert subprocess.call(args) == 0
- def tempdir(func):
- def _tempdir(*args, **kwargs):
- test_dir = tempfile.mkdtemp()
- old_dir = os.getcwd()
- os.chdir(test_dir)
- try:
- return func(*args, **kwargs)
- finally:
- os.chdir(old_dir)
- shutil.rmtree(test_dir)
- return _tempdir
- SIMPLE_BUILDOUT = """\
- [buildout]
- parts = eggs
- [eggs]
- recipe = zc.recipe.egg
- eggs =
- extensions
- """
- BOOTSTRAP = 'http://downloads.buildout.org/1/bootstrap.py'
- PYVER = sys.version.split()[0][:3]
- _VARS = {'base': '.',
- 'py_version_short': PYVER}
- scheme = 'nt' if sys.platform == 'win32' else 'unix_prefix'
- PURELIB = INSTALL_SCHEMES[scheme]['purelib']
- @tempdir
- def test_virtualenv():
- """virtualenv with setuptools"""
- purelib = os.path.abspath(Template(PURELIB).substitute(**_VARS))
- _system_call('virtualenv', '--no-site-packages', '.')
- _system_call('bin/easy_install', 'setuptools==dev')
- # linux specific
- site_pkg = os.listdir(purelib)
- site_pkg.sort()
- assert 'setuptools' in site_pkg[0]
- easy_install = os.path.join(purelib, 'easy-install.pth')
- with open(easy_install) as f:
- res = f.read()
- assert 'setuptools' in res
- @tempdir
- def test_full():
- """virtualenv + pip + buildout"""
- _system_call('virtualenv', '--no-site-packages', '.')
- _system_call('bin/easy_install', '-q', 'setuptools==dev')
- _system_call('bin/easy_install', '-qU', 'setuptools==dev')
- _system_call('bin/easy_install', '-q', 'pip')
- _system_call('bin/pip', 'install', '-q', 'zc.buildout')
- with open('buildout.cfg', 'w') as f:
- f.write(SIMPLE_BUILDOUT)
- with open('bootstrap.py', 'w') as f:
- f.write(urllib.request.urlopen(BOOTSTRAP).read())
- _system_call('bin/python', 'bootstrap.py')
- _system_call('bin/buildout', '-q')
- eggs = os.listdir('eggs')
- eggs.sort()
- assert len(eggs) == 3
- assert eggs[1].startswith('setuptools')
- del eggs[1]
- assert eggs == ['extensions-0.3-py2.6.egg',
- 'zc.recipe.egg-1.2.2-py2.6.egg']
- if __name__ == '__main__':
- test_virtualenv()
- test_full()
|