aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual_test.py')
-rw-r--r--tests/manual_test.py108
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/manual_test.py b/tests/manual_test.py
new file mode 100644
index 00000000..44cf2d06
--- /dev/null
+++ b/tests/manual_test.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+import sys
+
+if sys.version_info[0] >= 3:
+ raise NotImplementedError('Py3 not supported in this test yet')
+
+import os
+import shutil
+import tempfile
+from distutils.command.install import INSTALL_SCHEMES
+from string import Template
+from urllib2 import urlopen
+
+try:
+ import subprocess
+ def _system_call(*args):
+ assert subprocess.call(args) == 0
+except ImportError:
+ # Python 2.3
+ def _system_call(*args):
+ # quoting arguments if windows
+ if sys.platform == 'win32':
+ def quote(arg):
+ if ' ' in arg:
+ return '"%s"' % arg
+ return arg
+ args = [quote(arg) for arg in args]
+ assert os.system(' '.join(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}
+
+if sys.platform == 'win32':
+ PURELIB = INSTALL_SCHEMES['nt']['purelib']
+else:
+ PURELIB = INSTALL_SCHEMES['unix_prefix']['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(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()