90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #! /usr/bin/env python
 | |
| 
 | |
| # Hi There!
 | |
| # You may be wondering what this giant blob of binary data here is, you might
 | |
| # even be worried that we're up to something nefarious (good for you for being
 | |
| # paranoid!). This is a base64 encoding of a zip file, this zip file contains
 | |
| # a fully functional basic pytest script.
 | |
| #
 | |
| # Pytest is a thing that tests packages, pytest itself is a package that some-
 | |
| # one might want to install, especially if they're looking to run tests inside
 | |
| # some package they want to install. Pytest has a lot of code to collect and
 | |
| # execute tests, and other such sort of "tribal knowledge" that has been en-
 | |
| # coded in its code base. Because of this we basically include a basic copy
 | |
| # of pytest inside this blob. We do this  because it let's you as a maintainer
 | |
| # or application developer who wants people who don't deal with python much to
 | |
| # easily run tests without installing the complete pytest package.
 | |
| #
 | |
| # If you're wondering how this is created: you can create it yourself if you
 | |
| # have a complete pytest installation by using this command on the command-
 | |
| # line: ``py.test --genscript=runtests.py``.
 | |
| 
 | |
| sources = """
 | |
| @SOURCES@"""
 | |
| 
 | |
| import sys
 | |
| import base64
 | |
| import zlib
 | |
| 
 | |
| class DictImporter(object):
 | |
|     def __init__(self, sources):
 | |
|         self.sources = sources
 | |
| 
 | |
|     def find_module(self, fullname, path=None):
 | |
|         if fullname == "argparse" and sys.version_info >= (2,7):
 | |
|             # we were generated with <python2.7 (which pulls in argparse)
 | |
|             # but we are running now on a stdlib which has it, so use that.
 | |
|             return None
 | |
|         if fullname in self.sources:
 | |
|             return self
 | |
|         if fullname + '.__init__' in self.sources:
 | |
|             return self
 | |
|         return None
 | |
| 
 | |
|     def load_module(self, fullname):
 | |
|         # print "load_module:",  fullname
 | |
|         from types import ModuleType
 | |
|         try:
 | |
|             s = self.sources[fullname]
 | |
|             is_pkg = False
 | |
|         except KeyError:
 | |
|             s = self.sources[fullname + '.__init__']
 | |
|             is_pkg = True
 | |
| 
 | |
|         co = compile(s, fullname, 'exec')
 | |
|         module = sys.modules.setdefault(fullname, ModuleType(fullname))
 | |
|         module.__file__ = "%s/%s" % (__file__, fullname)
 | |
|         module.__loader__ = self
 | |
|         if is_pkg:
 | |
|             module.__path__ = [fullname]
 | |
| 
 | |
|         do_exec(co, module.__dict__) # noqa
 | |
|         return sys.modules[fullname]
 | |
| 
 | |
|     def get_source(self, name):
 | |
|         res = self.sources.get(name)
 | |
|         if res is None:
 | |
|             res = self.sources.get(name + '.__init__')
 | |
|         return res
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     try:
 | |
|         import pkg_resources  # noqa
 | |
|     except ImportError:
 | |
|         sys.stderr.write("ERROR: setuptools not installed\n")
 | |
|         sys.exit(2)
 | |
|     if sys.version_info >= (3, 0):
 | |
|         exec("def do_exec(co, loc): exec(co, loc)\n")
 | |
|         import pickle
 | |
|         sources = sources.encode("ascii") # ensure bytes
 | |
|         sources = pickle.loads(zlib.decompress(base64.decodebytes(sources)))
 | |
|     else:
 | |
|         import cPickle as pickle
 | |
|         exec("def do_exec(co, loc): exec co in loc\n")
 | |
|         sources = pickle.loads(zlib.decompress(base64.decodestring(sources)))
 | |
| 
 | |
|     importer = DictImporter(sources)
 | |
|     sys.meta_path.insert(0, importer)
 | |
|     entry = "@ENTRY@"
 | |
|     do_exec(entry, locals()) # noqa
 |