Mercurial > hg > simpypi
diff tests/test_wsgi.txt @ 59:26139fb1de98
move to a more appropriate name
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Thu, 01 Mar 2012 15:39:26 -0800 |
parents | tests/doctest.txt@6bfe6c59b64a |
children | 83327bc715be |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_wsgi.txt Thu Mar 01 15:39:26 2012 -0800 @@ -0,0 +1,114 @@ +Test simpypi +============ + +Test the WSGI app with mock requests from ``paste.fixture.TestApp``. + +The obligatory imports:: + + >>> import os + >>> import pkginfo + >>> import shutil + >>> import simpypi + >>> import subprocess + >>> import tarfile + >>> import tempfile + >>> from paste.fixture import TestApp + +The directory is initially empty:: + + >>> os.listdir(directory) + [] + +Make a test application:: + + >>> app = simpypi.SimPyPI(directory) + >>> testapp = TestApp(app) + +Upload a package:: + + >>> field = 'package' + >>> filename = 'HelloWorld-0.0.tar.gz' + >>> contents = file(os.path.join(here, filename)).read() + >>> response = testapp.post('/', upload_files=[(field, filename, contents)]) + +Ensure that package is in the right place:: + + >>> os.listdir(directory) + ['HelloWorld'] + >>> os.listdir(os.path.join(directory, 'HelloWorld')) + ['HelloWorld-0.0.tar.gz'] + +Ensure the package is what you expect it to be:: + + >>> path = os.path.join(directory, 'HelloWorld', 'HelloWorld-0.0.tar.gz') + >>> sdist = pkginfo.sdist.SDist(path) + >>> sdist.name + 'HelloWorld' + >>> sdist.version + '0.0' + >>> sdist.home_page + 'http://helloworld.example.com/' + >>> sdist.author + 'Jeff Hammel' + +Unpack the archive and ensure the files are there:: + + >>> tmpdir = tempfile.mkdtemp() + >>> archive = tarfile.TarFile.open(path) + >>> for member in archive.getmembers(): + ... archive.extract(member, path=tmpdir) + >>> os.listdir(tmpdir) + ['HelloWorld-0.0'] + >>> srcdir = os.path.join(tmpdir, 'HelloWorld-0.0') + >>> os.path.exists(os.path.join(srcdir, 'setup.py')) + True + >>> 'helloworld' in os.listdir(srcdir) + True + >>> os.listdir(os.path.join(srcdir, 'helloworld')) + ['__init__.py'] + +Install the package and inspect the installation:: + + >>> python = create_virtualenv(tmpdir) + +You should not be able to import ``helloworld`` yet:: + + >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + >>> code + 1 + +But after installation you should:: + + >>> subprocess.call([python, 'setup.py', 'install'], cwd=srcdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + 0 + >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + >>> code + 0 + >>> process = subprocess.Popen([python, '-c', 'import helloworld; print helloworld.hello'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + >>> stdout, stderr = process.communicate() + >>> process.returncode + 0 + >>> stdout + 'Hello, world!\n' + >>> shutil.rmtree(tmpdir) + +Upload the same package but with the wrong name:: + + >>> shutil.rmtree(os.path.join(directory, 'HelloWorld')) + >>> os.listdir(directory) + [] + >>> response = testapp.post('/', upload_files=[(field, 'MisleadingName.tar.gz', contents)]) + >>> os.listdir(directory) + ['HelloWorld'] + >>> os.listdir(os.path.join(directory, 'HelloWorld')) + ['HelloWorld-0.0.tar.gz'] + >>> shutil.rmtree(os.path.join(directory, 'HelloWorld')) + >>> os.listdir(directory) + [] + >>> filename = 'MisleadingFilename.tar.gz' + >>> contents = file(os.path.join(here, filename)).read() + >>> response = testapp.post('/', upload_files=[(field, filename, contents)]) + >>> os.listdir(directory) + ['HelloWorld'] + >>> os.listdir(os.path.join(directory, 'HelloWorld')) + ['HelloWorld-0.0.tar.gz']