import sys import os import shutil import subprocess import tempfile import time try: import http.client as httplib except ImportError: import httplib class TemplateTest(object): def make_venv(self, directory): # pragma: no cover import virtualenv from virtualenv import Logger logger = Logger([(Logger.level_for_integer(2), sys.stdout)]) virtualenv.logger = logger virtualenv.create_environment( directory, site_packages=False, clear=False ) def install(self, tmpl_name): # pragma: no cover try: self.old_cwd = os.getcwd() self.directory = tempfile.mkdtemp() self.make_venv(self.directory) here = os.path.abspath(os.path.dirname(__file__)) os.chdir(os.path.dirname(os.path.dirname(os.path.dirname(here)))) pip = os.path.join(self.directory, 'bin', 'pip') subprocess.check_call([pip, 'install', '-e', '.']) os.chdir(self.directory) subprocess.check_call(['bin/pcreate', '-s', tmpl_name, 'Dingle']) os.chdir('Dingle') subprocess.check_call([pip, 'install', '.[testing]']) if tmpl_name == 'alchemy': populate = os.path.join( self.directory, 'bin', 'initialize_Dingle_db' ) subprocess.check_call([populate, 'development.ini']) subprocess.check_call( [os.path.join(self.directory, 'bin', 'py.test')] ) pserve = os.path.join(self.directory, 'bin', 'pserve') for ininame, hastoolbar in ( ('development.ini', True), ('production.ini', False), ): proc = subprocess.Popen([pserve, ininame]) try: time.sleep(5) proc.poll() if proc.returncode is not None: raise RuntimeError('%s didnt start' % ininame) conn = httplib.HTTPConnection('localhost:6543') conn.request('GET', '/') resp = conn.getresponse() assert resp.status == 200, ininame data = resp.read() toolbarchunk = b'