Mercurial > kallithea
comparison pylons_app/lib/utils.py @ 491:fefffd6fd5f4 celery
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
cleaned up some codes that involves testing.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 21 Sep 2010 01:08:01 +0200 |
parents | 460ad816820d |
children | fb0c3af6031b |
comparison
equal
deleted
inserted
replaced
490:74b9bed279ae | 491:fefffd6fd5f4 |
---|---|
14 # | 14 # |
15 # You should have received a copy of the GNU General Public License | 15 # You should have received a copy of the GNU General Public License |
16 # along with this program; if not, write to the Free Software | 16 # along with this program; if not, write to the Free Software |
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
18 # MA 02110-1301, USA. | 18 # MA 02110-1301, USA. |
19 import shutil | |
20 | 19 |
21 """ | 20 """ |
22 Created on April 18, 2010 | 21 Created on April 18, 2010 |
23 Utilities for hg app | 22 Utilities for hg app |
24 @author: marcink | 23 @author: marcink |
30 from pylons_app.model.db import Repository, User, HgAppUi, HgAppSettings | 29 from pylons_app.model.db import Repository, User, HgAppUi, HgAppSettings |
31 from vcs.backends.base import BaseChangeset | 30 from vcs.backends.base import BaseChangeset |
32 from vcs.utils.lazy import LazyProperty | 31 from vcs.utils.lazy import LazyProperty |
33 import logging | 32 import logging |
34 import os | 33 import os |
35 from os.path import dirname as dn, join as jn | 34 |
36 import tarfile | |
37 log = logging.getLogger(__name__) | 35 log = logging.getLogger(__name__) |
38 | 36 |
39 | 37 |
40 def get_repo_slug(request): | 38 def get_repo_slug(request): |
41 return request.environ['pylons.routes_dict'].get('repo_name') | 39 return request.environ['pylons.routes_dict'].get('repo_name') |
365 return dict.__eq__(self, other) | 363 return dict.__eq__(self, other) |
366 | 364 |
367 def __ne__(self, other): | 365 def __ne__(self, other): |
368 return not self == other | 366 return not self == other |
369 | 367 |
370 def make_test_env(): | 368 |
371 """Makes a fresh database from base64+zlib dump and | 369 #=============================================================================== |
370 # TEST FUNCTIONS | |
371 #=============================================================================== | |
372 def create_test_index(repo_location, full_index): | |
373 """Makes default test index | |
374 @param repo_location: | |
375 @param full_index: | |
376 """ | |
377 from pylons_app.lib.indexers import daemon | |
378 from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon | |
379 from pylons_app.lib.indexers.pidlock import DaemonLock, LockHeld | |
380 from pylons_app.lib.indexers import IDX_LOCATION | |
381 import shutil | |
382 | |
383 if os.path.exists(IDX_LOCATION): | |
384 shutil.rmtree(IDX_LOCATION) | |
385 | |
386 try: | |
387 l = DaemonLock() | |
388 WhooshIndexingDaemon(repo_location=repo_location)\ | |
389 .run(full_index=full_index) | |
390 l.release() | |
391 except LockHeld: | |
392 pass | |
393 | |
394 def create_test_env(repos_test_path, config): | |
395 """Makes a fresh database and | |
372 install test repository into tmp dir | 396 install test repository into tmp dir |
373 """ | 397 """ |
374 new_db_dump = """ | 398 from pylons_app.lib.db_manage import DbManage |
375 eJztXN1vE8sVn9nxR+wAIXDpFiiXjSAXfEOc2ElwQkVLPjYf5NNOAklUydrYG3tv1t5ldx0nuUJV\noL | 399 import tarfile |
376 cPrVr1X7jSfUJ96nMfK1Xty23VqlWlPlRIlahUXbXqFUL0pTNjx5614xAoKEDmJ3t2zpkzM2fO\neHe+ | 400 import shutil |
377 zno+PqU5qrRmWDnFkXqAB0AIbkkSAKANf8+BKprwFzI0G28ECXQ+PufFEYT+Tehz6L/oaSnK\nwcFxGP | 401 from os.path import dirname as dn, join as jn, abspath |
378 igFQfHjuMg4CehH7UA9Af0Y2ShWdSPLmOSg+N9x7U9eKf9PiC2nIWm4mTtri4nZ3Z9DE/5\nfOD0+RZY | 402 |
379 VFdXFVstWHoXPOPFvDbKU3TdKCbNgp39GLZ5MPtKW5WtWKmstqFmtqVtzZRWt6NQRFjk\ngkhESJ6kbe | 403 log = logging.getLogger('TestEnvCreator') |
380 trim6rcFTAdcfuwqxhrNuprJLPqBnLKJhhSzWNpK1tq+aWkzXyN8wt3cjbScU0w7q2\nGqbyVSHYAXE5 | 404 # create logger |
381 kSv15RTMtOKo2YxUikjf+SgKg4Dc/38C6Dn6Gn2FnqDH6K+Y5ODgeGfhRRD6/ST0\n+Ujo9ZLQ4yEhQi | 405 log.setLevel(logging.DEBUG) |
382 QUBBJCeFy4BLywHaCfCEXM+AJHOWpx39sMrux4IbzQ3gMc1XaSlpop6IoVvRxV\nLke6L4/cmx7vjedG | 406 log.propagate = True |
383 4qmVmXvTW5nl7PDaSmFEXR6ejC+YVrpnsNi1fn17fHldj06p6YH84tzaGKBF\n5ZWcSq66Uorn8Iih5W | 407 # create console handler and set level to debug |
384 /ZBolqejhl5O57mkEPqf6sOFCq3lRsu2hYaayHrTplJeJD/Uu3p7u3Er19\nS4sb26PmemQiE54vLKfn | 408 ch = logging.StreamHandler() |
385 I8Wx2/Nd+XurmbH4TOpupHdk25I/sYbmCgDQstK0oHLdpWGmc1U3MqR6\nbICF123RHb/QDNpIm1rFnk | 409 ch.setLevel(logging.DEBUG) |
386 HaJiWd0/Llpgzq41lzIJMrjMXi2/JmdyGxMDKnjs1FR9WMcduMb3TZ\nfZuZTXVs1uiS53NxY9yan4Vw | 410 |
387 PDNICqEl3dKNlKJnDdshbYh2R7o7uwc6I1EpGr3RHbvREwn3D/T3\nd/fuBFAzaHdpUu7csi6Tw4ou94 | 411 # create formatter |
388 zOLt3JxTNZo7g8muvV1Lg6sNj/SX4dD7srqenpfCJ6d3g5vKRM\njq/Ob3VHIXgJXaKx8PWBvoHrvfdg | 412 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
389 MzhPVDl/vgek1TWloO927tbUdsqeNzfurK5Frq+v5NbHZ1bG\nCnZxdnxxbGStmOudnwub6+rQYNxZku | 413 |
390 Wh28Ph9Nos2C3EfblVvhJlyPjvRY+Z8f91dzUHB8fhYf/x\nv3T/PwL47v87+iX6I45ycHC8dWhFV6Br | 414 # add formatter to ch |
391 7ukVUQ/cYzroOYnaXZLoBGqD1TmW0IzOw/IUAJL9v6Dg\nA+jP6Ofo+yiBelFA+IvwC2EFMzmOCBJBD/ | 415 ch.setFormatter(formatter) |
392 huMZsJ41+MZjuqFVYKjpFUUo62oThqosyV8mpRKtg4\nUtScrJTNdCqmSeNGwZFIFqmcRTPydwIeMPwp | 416 |
393 W2ZOyRcU/SVLLWViym1v8oDOLrbcvJGvFpbWbGVV\nV9NhvweEZCyWslRcWVnINGzNMawtiXJxaRX5kM | 417 # add ch to logger |
394 8D+rqq8lZFtjaX+i2vB1zoxKL0dhrPSHSmj6u3\nFCzV4cH6fbuavSTFFEJp3KCUatsdqEa4aGkOqyel | 418 log.addHandler(ch) |
395 y8IhwQM6BhhhrE2akSVkWfQKxKJ9jGhN8/NG\nWZCM/0H0q5r9P/Q79FvM5ODgeOtBZvLBIAkDARI2Nb | 419 |
396 3E/h/O7wdDAAzBj+Cy8IXwpfAc/eZlat9R\noF+8eBE+bHXIgzSbIQcTyYJWiQjDCXlwQZYWBoemZKnC | 420 #PART ONE create db |
397 lq4GAwUtqaWliZkFeUxOSDOzC9LM4tTU\nNYmm2GqKPqEX5KWFMmtd3WLJDUUvqCyDjhKqNDQ7OyUPzh | 421 log.debug('making test db') |
398 DmXGJiejCxLE3Ky9JVWl2IsBdnJuKL\nMssZHpeHJymjXMjEjHS1+5oUCYWCoYjgE+WLEGj5tLpp39Px | 422 dbname = config['sqlalchemy.db1.url'].split('/')[-1] |
399 MzlJhjtKJytNSkYqUfRgHPlFUYQ/\nMKhZyPhm08DjMgdlUVPgSENj4DSyN1hp6u6Er8Kob3hplGEYrg | 423 dbmanage = DbManage(log_sql=True, dbname=dbname, tests=True) |
400 J2dxsrDLrZ6EpO6kYGlzCCdV2Y\nmJbrjVlS2G1Ohlc2aJ012TSqozuJLYpoiK0f8vjEm2Ij61MLJiP0 | 424 dbmanage.create_tables(override=True) |
401 4g15XywapRffzpTPL166BB8k\naQeZqpXTbBv/4Gwm6nd1FpNAuqxKNuo4RsLdf1W+buQzrjSXkV1VuO | 425 dbmanage.config_prompt(repos_test_path) |
402 zjTgmG+vw+ceJSo5Yzmicj\nDNFE7n8BfQnQ33DAwcHxLqMFLxHEs47mkIGYrKM+xAsBMYZXBnquvLDC | 426 dbmanage.create_default_user() |
403 D4Wsmne0FF3/kPm/gL6m\n8//DVp6Dg+PNo3b+7wOPAHgEH8F/CFfRT9GvD1u/vbFzv8kvdnTAhxF2nW | 427 dbmanage.admin_prompt() |
404 GrjqPlM3YNGdxrzbGb\nSOZuLN1o9uaScc3RXCnuVYhr+lZTi2sCd+C08iz4ZsAnxjtesAapZIrUMJpv | 428 dbmanage.create_permissions() |
405 Bl8me7SGcfxBqtkv\ntrfDzwLU+pWdJU212fgJl93ZFGJ06qPWwNg0rWLkuuVPwxm2RfcS2YVOWrVTlm | 429 dbmanage.populate_default_permissions() |
406 a61o6uXimr4bJ4\npfp67r6So7MJeWJshhRcWf1ICXlUTsgzw/L87vpuj4XRrubsOjN2zCdOtjfqJNac | |
407 yQhLtcSOHzhj\nlKVOlsb/fwL0FAccHBzvLQJIhHRpIJAYXRPQ8R+i3wP84eDgeNfRCX3gAoRjGyk7Sc | |
408 78BUDPZdlJ\n0ZphSbvJZPyH6D8Afzg4ON5/HEMX4O7tD0v3/3OAPxwcHEcG1f0/hJ4A9Az9C184ODje | |
409 Q/gQ+WcP\nKPgEevX5IL0GyPiP0Fdl/7/D1pKDg+PNYe/3f+j4/wSP/88OWz8ODo43Ab+H3O0CKl19Qu | |
410 kaoPN/\nD/gcgM+FD4W7ws8OW886PNg+UTp4jlX8aJOOQR0a2XhrnVftbkrFubZM7+dkewA/zgYS9a6x | |
411 1erq\nXWRr0thDZLdfJ3uU7PI+rXcMfYWT6Bq33WtSrVNprGW/Y2VXUyIsdSp28sAZoyx1+kGulXqTfx | |
412 aq\ndrduZOxK5Ex9RxN2pZcx8So9XEozKw4D1Vdn6v0RFLdfeolM0r/U2d9buqRbvekZ/iv0IpulqrYr | |
413 \nl9sRo+rBEAyR+x8/ADg4OI4gyPyf3/8cHEcTJf+fpwB/ODg4jgSaoBfQ/QB+/s/BcSRR3f+H6Bng\n | |
414 e/8cHEcHpf1/CI+jHwEP3AToLtx8e9/9e//w8Hun6bHGDz+tvE+3uwfOxsW69+nYYw2WfjPHGtX9\n5A | |
415 MdfNQo9P+eS7youNdyVuJq4ot2zRsdnLgLCYYip/b7w5jKqUX51IREv4F/FJ7YBy96ja963sJS\n34yd | |
416 OXDGKEud/R8efZUt\n | |
417 """ | |
418 newdb = open('test.db', 'wb') | |
419 newdb.write(new_db_dump.decode('base64').decode('zlib')) | |
420 newdb.close() | |
421 | |
422 | 430 |
423 #PART TWO make test repo | 431 #PART TWO make test repo |
432 log.debug('making test vcs repo') | |
424 if os.path.isdir('/tmp/vcs_test'): | 433 if os.path.isdir('/tmp/vcs_test'): |
425 shutil.rmtree('/tmp/vcs_test') | 434 shutil.rmtree('/tmp/vcs_test') |
426 | 435 |
427 cur_dir = dn(dn(os.path.abspath(__file__))) | 436 cur_dir = dn(dn(abspath(__file__))) |
428 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test.tar.gz")) | 437 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test.tar.gz")) |
429 tar.extractall('/tmp') | 438 tar.extractall('/tmp') |
430 tar.close() | 439 tar.close() |
431 | |
432 | |
433 |