Mercurial > hg > simpypi
comparison 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 |
comparison
equal
deleted
inserted
replaced
58:cd88f80d1ab1 | 59:26139fb1de98 |
---|---|
1 Test simpypi | |
2 ============ | |
3 | |
4 Test the WSGI app with mock requests from ``paste.fixture.TestApp``. | |
5 | |
6 The obligatory imports:: | |
7 | |
8 >>> import os | |
9 >>> import pkginfo | |
10 >>> import shutil | |
11 >>> import simpypi | |
12 >>> import subprocess | |
13 >>> import tarfile | |
14 >>> import tempfile | |
15 >>> from paste.fixture import TestApp | |
16 | |
17 The directory is initially empty:: | |
18 | |
19 >>> os.listdir(directory) | |
20 [] | |
21 | |
22 Make a test application:: | |
23 | |
24 >>> app = simpypi.SimPyPI(directory) | |
25 >>> testapp = TestApp(app) | |
26 | |
27 Upload a package:: | |
28 | |
29 >>> field = 'package' | |
30 >>> filename = 'HelloWorld-0.0.tar.gz' | |
31 >>> contents = file(os.path.join(here, filename)).read() | |
32 >>> response = testapp.post('/', upload_files=[(field, filename, contents)]) | |
33 | |
34 Ensure that package is in the right place:: | |
35 | |
36 >>> os.listdir(directory) | |
37 ['HelloWorld'] | |
38 >>> os.listdir(os.path.join(directory, 'HelloWorld')) | |
39 ['HelloWorld-0.0.tar.gz'] | |
40 | |
41 Ensure the package is what you expect it to be:: | |
42 | |
43 >>> path = os.path.join(directory, 'HelloWorld', 'HelloWorld-0.0.tar.gz') | |
44 >>> sdist = pkginfo.sdist.SDist(path) | |
45 >>> sdist.name | |
46 'HelloWorld' | |
47 >>> sdist.version | |
48 '0.0' | |
49 >>> sdist.home_page | |
50 'http://helloworld.example.com/' | |
51 >>> sdist.author | |
52 'Jeff Hammel' | |
53 | |
54 Unpack the archive and ensure the files are there:: | |
55 | |
56 >>> tmpdir = tempfile.mkdtemp() | |
57 >>> archive = tarfile.TarFile.open(path) | |
58 >>> for member in archive.getmembers(): | |
59 ... archive.extract(member, path=tmpdir) | |
60 >>> os.listdir(tmpdir) | |
61 ['HelloWorld-0.0'] | |
62 >>> srcdir = os.path.join(tmpdir, 'HelloWorld-0.0') | |
63 >>> os.path.exists(os.path.join(srcdir, 'setup.py')) | |
64 True | |
65 >>> 'helloworld' in os.listdir(srcdir) | |
66 True | |
67 >>> os.listdir(os.path.join(srcdir, 'helloworld')) | |
68 ['__init__.py'] | |
69 | |
70 Install the package and inspect the installation:: | |
71 | |
72 >>> python = create_virtualenv(tmpdir) | |
73 | |
74 You should not be able to import ``helloworld`` yet:: | |
75 | |
76 >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
77 >>> code | |
78 1 | |
79 | |
80 But after installation you should:: | |
81 | |
82 >>> subprocess.call([python, 'setup.py', 'install'], cwd=srcdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
83 0 | |
84 >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
85 >>> code | |
86 0 | |
87 >>> process = subprocess.Popen([python, '-c', 'import helloworld; print helloworld.hello'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
88 >>> stdout, stderr = process.communicate() | |
89 >>> process.returncode | |
90 0 | |
91 >>> stdout | |
92 'Hello, world!\n' | |
93 >>> shutil.rmtree(tmpdir) | |
94 | |
95 Upload the same package but with the wrong name:: | |
96 | |
97 >>> shutil.rmtree(os.path.join(directory, 'HelloWorld')) | |
98 >>> os.listdir(directory) | |
99 [] | |
100 >>> response = testapp.post('/', upload_files=[(field, 'MisleadingName.tar.gz', contents)]) | |
101 >>> os.listdir(directory) | |
102 ['HelloWorld'] | |
103 >>> os.listdir(os.path.join(directory, 'HelloWorld')) | |
104 ['HelloWorld-0.0.tar.gz'] | |
105 >>> shutil.rmtree(os.path.join(directory, 'HelloWorld')) | |
106 >>> os.listdir(directory) | |
107 [] | |
108 >>> filename = 'MisleadingFilename.tar.gz' | |
109 >>> contents = file(os.path.join(here, filename)).read() | |
110 >>> response = testapp.post('/', upload_files=[(field, filename, contents)]) | |
111 >>> os.listdir(directory) | |
112 ['HelloWorld'] | |
113 >>> os.listdir(os.path.join(directory, 'HelloWorld')) | |
114 ['HelloWorld-0.0.tar.gz'] |