From b05db3495c36ec5e46158f3bc3f7911280bc4fb7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 25 Nov 2013 13:05:48 +0100 Subject: [PATCH] [IMP] in crawler testing, indicate at which page the failed url was found bzr revid: xmo@openerp.com-20131125120548-0s7xnhszd48e1u9v --- addons/website/static/src/js/website.editor.js | 1 - addons/website/tests/cases.py | 5 ++++- addons/website/tests/test_requests.py | 18 +++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 339aedcc27c..f3344c36e78 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -898,7 +898,6 @@ minimumInputLength: 1, placeholder: _t("New or existing page"), query: function (q) { - // FIXME: out-of-order, abort self.fetch_pages(q.term).then(function (results) { var rs = _.map(results, function (r) { return { id: r.url, text: r.name, }; diff --git a/addons/website/tests/cases.py b/addons/website/tests/cases.py index 246fe6f2320..3e777293ff9 100644 --- a/addons/website/tests/cases.py +++ b/addons/website/tests/cases.py @@ -6,10 +6,11 @@ class URLCase(unittest2.TestCase): URLCase moved out of test_requests, otherwise discovery attempts to instantiate and run it """ - def __init__(self, user, url, result): + def __init__(self, user, url, source, result): super(URLCase, self).__init__() self.user = user self.url = url + self.source = source self.result = result @property @@ -17,6 +18,8 @@ class URLCase(unittest2.TestCase): return self.user or "Anonymous Coward" def __str__(self): + if self.source: + return "%s (from %s, as %s)" % (self.url, self.source, self.username) return "%s (as %s)" % (self.url, self.username) __repr__ = __str__ diff --git a/addons/website/tests/test_requests.py b/addons/website/tests/test_requests.py index 8af4bb7de60..49158b920db 100644 --- a/addons/website/tests/test_requests.py +++ b/addons/website/tests/test_requests.py @@ -80,13 +80,13 @@ class CrawlSuite(unittest2.TestSuite): assert auth.getcode() < 400, "Auth failure %d" % auth.getcode() def _wrapped_run(self, result, debug=False): - paths = collections.deque(['/']) + paths = [URL('/')] seen = set(paths) while paths: - url = paths.popleft() - r = self._request(url) - cases.URLCase(self.user, url, r).run(result) + url = paths.pop(0) + r = self._request(url.url) + url.to_case(self.user, r).run(result) if r.info().gettype() != 'text/html': continue @@ -110,7 +110,15 @@ class CrawlSuite(unittest2.TestSuite): (parts.scheme and parts.scheme not in ('http', 'https')): continue - paths.append(href) + paths.append(URL(href, url.url)) + +class URL(object): + def __init__(self, url, source=None): + self.url = url + self.source = source + + def to_case(self, user, result): + return cases.URLCase(user, self.url, self.source, result) def load_tests(loader, base, _): base.addTest(CrawlSuite())