From 8ff20e3127b7df3dcfac603c39934f789e356148 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 4 Jun 2007 19:26:16 +0000 Subject: [PATCH] Expanded the test code which finds urlpatterns to extract all URLs specified in the various Django apps of the site. Also fixed the documentation of the TemplatedForm factory to be more correct. - Legacy-Id: 227 --- ietf/tests.py | 26 +++++++++++++++++++++++--- ietf/utils/templated_form.py | 7 +++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/ietf/tests.py b/ietf/tests.py index 52b9c2a2e..73ca4b567 100644 --- a/ietf/tests.py +++ b/ietf/tests.py @@ -3,13 +3,33 @@ import re import django.test.simple from django.test import TestCase -from ietf.urls import urlpatterns import ietf.settings +import ietf.urls def run_tests(module_list, verbosity=1, extra_tests=[]): module_list.append(ietf.tests) return django.test.simple.run_tests(module_list, verbosity, extra_tests) +def get_patterns(module): + all = [] + try: + patterns = module.urlpatterns + except AttributeError: + patterns = [] + for item in patterns: + try: + subpatterns = get_patterns(item.urlconf_module) + except: + subpatterns = [""] + for sub in subpatterns: + if not sub: + all.append(item.regex.pattern) + elif sub.startswith("^"): + all.append(item.regex.pattern + sub[1:]) + else: + all.append(item.regex.pattern + ".*" + sub) + return all + class UrlTestCase(TestCase): def setUp(self): from django.test.client import Client @@ -38,7 +58,7 @@ class UrlTestCase(TestCase): def testCoverage(self): covered = [] - patterns = [pattern.regex.pattern for pattern in urlpatterns] + patterns = get_patterns(ietf.urls) for code, testurl, goodurl in self.testurls: for pattern in patterns: if re.match(pattern, testurl[1:]): @@ -48,7 +68,7 @@ class UrlTestCase(TestCase): #self.assertEqual(set(patterns), set(covered), "Not all the #application URLs has test cases. The missing are: %s" % (list(set(patterns) - set(covered)))) if not set(patterns) == set(covered): - print "Not all the application URLs has test cases. The missing are: %s" % (list(set(patterns) - set(covered))) + print "Not all the application URLs has test cases. The missing are: %s" % ("\n ".join(list(set(patterns) - set(covered)))) def testUrls(self): for code, testurl, goodurl in self.testurls: diff --git a/ietf/utils/templated_form.py b/ietf/utils/templated_form.py index 15cc15bb6..e09e64478 100644 --- a/ietf/utils/templated_form.py +++ b/ietf/utils/templated_form.py @@ -3,14 +3,13 @@ from django.utils.html import escape def makeTemplatedForm(template=None): """Create a form class which formats its fields using the provided template - The template is provided with a dictionary containing the following keys, value + The template is provided with a dictionary containing the following key-value pairs: "label": field label, if any, "errors": list of errors, if any, - "field": widget rendering for an unbound form / field value for a bound form, + "text": widget rendering for an unbound form / field value for a bound form, "help_text": field help text, if any - """ from django.template import loader import django.newforms as forms @@ -18,7 +17,7 @@ def makeTemplatedForm(template=None): class TemplatedForm(forms.BaseForm): _template = template def __getitem__(self, name): - "Returns a BoundField with the given name." + "Returns a rendered field with the given name." #syslog.syslog("FormattingForm.__getitem__(%s)" % (name, )) try: field = self.fields[name]