Mercurial > p > roundup > code
annotate test/__init__.py @ 1797:c1eec970d5c0
Optimize mailgw and cgi tests...
...by creating an empty instance before the tests start (only if
needed). In setUp(), this instance is then copied to another directory
for the actual tests.
On my system, this about halved the execution time for test_cgi (33s -> 14s)
and test_mailgw (40s -> 25s).
| author | Johannes Gijsbers <jlgijsbers@users.sourceforge.net> |
|---|---|
| date | Sun, 07 Sep 2003 20:37:33 +0000 |
| parents | 9b910e8d987d |
| children | f63aa57386b0 |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
205
diff
changeset
|
17 # |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
18 # $Id: __init__.py,v 1.19 2003-09-07 20:37:33 jlgijsbers Exp $ |
|
92
fa44da8d9df2
moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
20 import os, tempfile, unittest, shutil, errno |
|
753
938edfdeac6e
Sorry about this huge checkin!
Richard Jones <richard@users.sourceforge.net>
parents:
613
diff
changeset
|
21 import roundup.roundupdb |
|
938edfdeac6e
Sorry about this huge checkin!
Richard Jones <richard@users.sourceforge.net>
parents:
613
diff
changeset
|
22 roundup.roundupdb.SENDMAILDEBUG=os.environ['SENDMAILDEBUG']=tempfile.mktemp() |
|
92
fa44da8d9df2
moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
24 from roundup import init |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
25 |
|
613
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
26 # figure all the modules available |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
27 dir = os.path.split(__file__)[0] |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
28 test_mods = {} |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
29 for file in os.listdir(dir): |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
30 if file.startswith('test_') and file.endswith('.py'): |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
31 name = file[5:-3] |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
32 test_mods[name] = __import__(file[:-3], globals(), locals(), []) |
|
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
33 all_tests = test_mods.keys() |
|
92
fa44da8d9df2
moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
35 dirname = '_empty_instance' |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
36 def create_empty_instance(): |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
37 remove_empty_instance() |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
38 init.install(dirname, 'templates/classic') |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
39 init.write_select_db(dirname, 'anydbm') |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
40 init.initialise(dirname, 'sekrit') |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
41 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
42 def remove_empty_instance(): |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
43 try: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
44 shutil.rmtree(dirname) |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
45 except OSError, error: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
46 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
47 |
|
613
d77b82588bf0
Fixed the unit tests for the mailgw re: the x-roundup-name header.
Richard Jones <richard@users.sourceforge.net>
parents:
564
diff
changeset
|
48 def go(tests=all_tests): |
|
1797
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
49 try: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
50 l = [] |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
51 needs_instance = 0 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
52 for name in tests: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
53 mod = test_mods[name] |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
54 if hasattr(mod, 'NEEDS_INSTANCE'): |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
55 needs_instance = 1 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
56 l.append(test_mods[name].suite()) |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
57 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
58 if needs_instance: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
59 create_empty_instance() |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
60 |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
61 suite = unittest.TestSuite(l) |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
62 runner = unittest.TextTestRunner() |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
63 runner.run(suite) |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
64 finally: |
|
c1eec970d5c0
Optimize mailgw and cgi tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1090
diff
changeset
|
65 remove_empty_instance() |
|
92
fa44da8d9df2
moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
127
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
110
diff
changeset
|
67 # vim: set filetype=python ts=4 sw=4 et si |
