From bac455263145b1b112d7627205f4c8aa85601cb7 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 25 Jan 2011 04:55:52 -0500 Subject: automate template testing --- template_tests.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 template_tests.py (limited to 'template_tests.py') diff --git a/template_tests.py b/template_tests.py new file mode 100644 index 000000000..6860a8bcb --- /dev/null +++ b/template_tests.py @@ -0,0 +1,59 @@ +import httplib +import os +import pkg_resources +import shutil +import subprocess +import tempfile +import time + +class TemplateTest(object): + def make_venv(self, directory): + import virtualenv + import sys + 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, + unzip_setuptools=True, + use_distribute=False) + def install(self, tmpl_name): + try: + self.old_cwd = os.getcwd() + self.directory = tempfile.mkdtemp() + self.make_venv(self.directory) + os.chdir(pkg_resources.get_distribution('pyramid').location) + subprocess.check_call( + [os.path.join(self.directory, 'bin', 'python'), + 'setup.py', 'develop']) + os.chdir(self.directory) + + subprocess.check_call(['bin/paster', 'create', '-t', tmpl_name, + 'Dingle']) + os.chdir('Dingle') + py = os.path.join(self.directory, 'bin', 'python') + subprocess.check_call([py, 'setup.py', 'install']) + paster = os.path.join(self.directory, 'bin', 'paster') + proc = subprocess.Popen([paster, 'serve', 'development.ini']) + try: + time.sleep(5) + proc.poll() + if proc.returncode is not None: + raise RuntimeError('didnt start') + conn = httplib.HTTPConnection('localhost:6543') + conn.request('GET', '/') + resp = conn.getresponse() + assert(resp.status == 200) + finally: + proc.terminate() + finally: + shutil.rmtree(self.directory) + os.chdir(self.old_cwd) + +if __name__ == '__main__': + for name in ('pyramid_starter', 'pyramid_alchemy', 'pyramid_routesalchemy', + 'pyramid_zodb'): + test = TemplateTest() + test.install(name) + -- cgit v1.2.3 From 2fe4807c23fe7f9db0b1cd3d4137c591c844b4b6 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 25 Jan 2011 05:12:47 -0500 Subject: also run tests --- template_tests.py | 1 + 1 file changed, 1 insertion(+) (limited to 'template_tests.py') diff --git a/template_tests.py b/template_tests.py index 6860a8bcb..a6fba2639 100644 --- a/template_tests.py +++ b/template_tests.py @@ -34,6 +34,7 @@ class TemplateTest(object): os.chdir('Dingle') py = os.path.join(self.directory, 'bin', 'python') subprocess.check_call([py, 'setup.py', 'install']) + subprocess.check_call([py, 'setup.py', 'test']) paster = os.path.join(self.directory, 'bin', 'paster') proc = subprocess.Popen([paster, 'serve', 'development.ini']) try: -- cgit v1.2.3 From eb0079afa437b51f9f8df5a8c96a89182b88a075 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 30 Jan 2011 18:26:01 -0500 Subject: make function on 2.4 and 2.5 --- template_tests.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'template_tests.py') diff --git a/template_tests.py b/template_tests.py index a6fba2639..8e70e7eb3 100644 --- a/template_tests.py +++ b/template_tests.py @@ -1,3 +1,4 @@ +import sys import httplib import os import pkg_resources @@ -5,6 +6,15 @@ import shutil import subprocess import tempfile import time +import signal + +if not hasattr(subprocess, 'check_call'): + # 2.4 + def check_call(*arg, **kw): + returncode = subprocess.call(*arg, **kw) + if returncode: + raise ValueError(returncode) + subprocess.check_call = check_call class TemplateTest(object): def make_venv(self, directory): @@ -47,14 +57,23 @@ class TemplateTest(object): resp = conn.getresponse() assert(resp.status == 200) finally: - proc.terminate() + if hasattr(proc, 'terminate'): + # 2.6+ + proc.terminate() + else: + # 2.5 + os.kill(proc.pid, signal.SIGTERM) finally: shutil.rmtree(self.directory) os.chdir(self.old_cwd) +templates = ['pyramid_starter', 'pyramid_alchemy', 'pyramid_routesalchemy',] + +if sys.version_info >= (2, 5): + templates.append('pyramid_zodb') + if __name__ == '__main__': - for name in ('pyramid_starter', 'pyramid_alchemy', 'pyramid_routesalchemy', - 'pyramid_zodb'): + for name in templates: test = TemplateTest() test.install(name) -- cgit v1.2.3