You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					84 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					84 lines
				
				2.4 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"""passlib.tests.tox_support - helper script for tox tests"""
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# init script env
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								import os, sys
							 | 
						||
| 
								 | 
							
								root_dir = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)
							 | 
						||
| 
								 | 
							
								sys.path.insert(0, root_dir)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# imports
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# core
							 | 
						||
| 
								 | 
							
								import re
							 | 
						||
| 
								 | 
							
								import logging; log = logging.getLogger(__name__)
							 | 
						||
| 
								 | 
							
								# site
							 | 
						||
| 
								 | 
							
								# pkg
							 | 
						||
| 
								 | 
							
								from passlib.utils.compat import print_
							 | 
						||
| 
								 | 
							
								# local
							 | 
						||
| 
								 | 
							
								__all__ = [
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# main
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								TH_PATH = "passlib.tests.test_handlers"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def do_hash_tests(*args):
							 | 
						||
| 
								 | 
							
								    """return list of hash algorithm tests that match regexes"""
							 | 
						||
| 
								 | 
							
								    if not args:
							 | 
						||
| 
								 | 
							
								        print(TH_PATH)
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								    suffix = ''
							 | 
						||
| 
								 | 
							
								    args = list(args)
							 | 
						||
| 
								 | 
							
								    while True:
							 | 
						||
| 
								 | 
							
								        if args[0] == "--method":
							 | 
						||
| 
								 | 
							
								            suffix = '.' + args[1]
							 | 
						||
| 
								 | 
							
								            del args[:2]
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            break
							 | 
						||
| 
								 | 
							
								    from passlib.tests import test_handlers
							 | 
						||
| 
								 | 
							
								    names = [TH_PATH + ":" + name + suffix for name in dir(test_handlers)
							 | 
						||
| 
								 | 
							
								             if not name.startswith("_") and any(re.match(arg,name) for arg in args)]
							 | 
						||
| 
								 | 
							
								    print_("\n".join(names))
							 | 
						||
| 
								 | 
							
								    return not names
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def do_preset_tests(name):
							 | 
						||
| 
								 | 
							
								    """return list of preset test names"""
							 | 
						||
| 
								 | 
							
								    if name == "django" or name == "django-hashes":
							 | 
						||
| 
								 | 
							
								        do_hash_tests("django_.*_test", "hex_md5_test")
							 | 
						||
| 
								 | 
							
								        if name == "django":
							 | 
						||
| 
								 | 
							
								            print_("passlib.tests.test_ext_django")
							 | 
						||
| 
								 | 
							
								    else:
							 | 
						||
| 
								 | 
							
								        raise ValueError("unknown name: %r" % name)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def do_setup_gae(path, runtime):
							 | 
						||
| 
								 | 
							
								    """write fake GAE ``app.yaml`` to current directory so nosegae will work"""
							 | 
						||
| 
								 | 
							
								    from passlib.tests.utils import set_file
							 | 
						||
| 
								 | 
							
								    set_file(os.path.join(path, "app.yaml"), """\
							 | 
						||
| 
								 | 
							
								application: fake-app
							 | 
						||
| 
								 | 
							
								version: 2
							 | 
						||
| 
								 | 
							
								runtime: %s
							 | 
						||
| 
								 | 
							
								api_version: 1
							 | 
						||
| 
								 | 
							
								threadsafe: no
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								handlers:
							 | 
						||
| 
								 | 
							
								- url: /.*
							 | 
						||
| 
								 | 
							
								  script: dummy.py
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								libraries:
							 | 
						||
| 
								 | 
							
								- name: django
							 | 
						||
| 
								 | 
							
								  version: "latest"
							 | 
						||
| 
								 | 
							
								""" % runtime)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def main(cmd, *args):
							 | 
						||
| 
								 | 
							
								    return globals()["do_" + cmd](*args)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								    import sys
							 | 
						||
| 
								 | 
							
								    sys.exit(main(*sys.argv[1:]) or 0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 | 
						||
| 
								 | 
							
								# eof
							 | 
						||
| 
								 | 
							
								#=============================================================================
							 |