Accept both testurl.list and testurls.list as test url list file names. Output status for good compares, too.

- Legacy-Id: 303
This commit is contained in:
Henrik Levkowetz 2007-06-11 04:43:22 +00:00
parent 9b78963547
commit b42e0728c8
2 changed files with 30 additions and 20 deletions

View file

@ -51,6 +51,25 @@ def get_patterns(module):
all.append(item.regex.pattern + ".*" + sub) all.append(item.regex.pattern + ".*" + sub)
return all return all
def read_testurls(filename):
tuples = []
file = open(filename)
for line in file:
line = line.strip()
if line and not line.startswith('#'):
line = line.split("#", 1)[0]
urlspec = line.split()
if len(urlspec) == 2:
codes, testurl = urlspec
goodurl = None
elif len(urlspec) == 3:
codes, testurl, goodurl = urlspec
else:
raise ValueError("Expected 'HTTP_CODE TESTURL [GOODURL]' in %s line, found '%s'." % (filename, line))
codes = codes.split(",")
tuples += [ (codes, testurl, goodurl) ]
return tuples
class UrlTestCase(TestCase): class UrlTestCase(TestCase):
def setUp(self): def setUp(self):
from django.test.client import Client from django.test.client import Client
@ -61,24 +80,10 @@ class UrlTestCase(TestCase):
self.testurls = [] self.testurls = []
for root, dirs, files in os.walk(settings.BASE_DIR): for root, dirs, files in os.walk(settings.BASE_DIR):
if "testurl.list" in files: if "testurl.list" in files:
filename = root+"/testurl.list" # yes, this is non-portable self.testtuples += read_testurls(root+"/testurl.list")
file = open(filename) if "testurls.list" in files:
for line in file: self.testtuples += read_testurls(root+"/testurls.list")
line = line.strip() self.testurls = [ tuple[0] for tuple in self.testtuples ]
if line and not line.startswith('#'):
line = line.split("#", 1)[0]
urlspec = line.split()
if len(urlspec) == 2:
codes, testurl = urlspec
goodurl = None
elif len(urlspec) == 3:
codes, testurl, goodurl = urlspec
else:
raise ValueError("Expected 'HTTP_CODE TESTURL [GOODURL]' in %s line, found '%s'." % (filename, line))
codes = codes.split(",")
self.testtuples += [ (codes, testurl, goodurl) ]
self.testurls += [ testurl ]
#print "(%s, %s, %s)" % (code, testurl, goodurl)
# Use the default database for the url tests, instead of the test database # Use the default database for the url tests, instead of the test database
self.testdb = settings.DATABASE_NAME self.testdb = settings.DATABASE_NAME
connection.close() connection.close()
@ -136,7 +141,9 @@ class UrlTestCase(TestCase):
if goodhtml and response.content: if goodhtml and response.content:
testtext = reduce(response.content) testtext = reduce(response.content)
goodtext = reduce(goodhtml) goodtext = reduce(goodhtml)
if not testtext == goodtext: if testtext == goodtext:
print "OK cmp %s" % (url)
else:
diff = "\n".join(unified_diff(goodtext, testtext, url, master, lineterm=False)) diff = "\n".join(unified_diff(goodtext, testtext, url, master, lineterm=False))
dfile = "%s/../test/diff/%s" % (settings.BASE_DIR, url.replace("/", "_")) dfile = "%s/../test/diff/%s" % (settings.BASE_DIR, url.replace("/", "_"))
if os.path.exists(dfile): if os.path.exists(dfile):

View file

@ -27,7 +27,10 @@ def para(words, pre):
text = text.replace(entity, char) text = text.replace(entity, char)
if not pre: if not pre:
text = re.sub("[\r\n\t ]+", " ", text) text = re.sub("[\r\n\t ]+", " ", text)
text = textwrap.fill(text) try: # On OS-X / Python 2.5 textwrap can throw a runtime error
text = textwrap.fill(text)
except RuntimeError:
pass
return text return text
def render(node, encoding='latin-1', pre=False): def render(node, encoding='latin-1', pre=False):