From 82e5ba8ce6c5376b62fc59ecf87a43bd0e37db97 Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Tue, 15 Mar 2011 13:42:21 +0100 Subject: [PATCH] Add warning tag attribute in XML loggers. --- doc/changelog.txt | 3 +++ linkcheck/checker/urlbase.py | 4 ++-- linkcheck/logger/csvlog.py | 2 +- linkcheck/logger/customxml.py | 5 +++-- linkcheck/logger/html.py | 2 +- linkcheck/logger/sql.py | 2 +- linkcheck/logger/text.py | 3 ++- tests/checker/__init__.py | 2 +- 8 files changed, 14 insertions(+), 9 deletions(-) diff --git a/doc/changelog.txt b/doc/changelog.txt index e99fbeae..88cd5a1e 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,5 +1,8 @@ 6.6 "" (released xx.xx.2011) +Changes: +- logging: Add warning tag attribute in XML loggers. + 6.5 "The Abyss" (released 13.3.2011) diff --git a/linkcheck/checker/urlbase.py b/linkcheck/checker/urlbase.py index 435b4719..672cc370 100644 --- a/linkcheck/checker/urlbase.py +++ b/linkcheck/checker/urlbase.py @@ -1083,7 +1083,7 @@ class UrlBase (object): Indicates if URL data has been loaded from cache. - url_data.result: unicode Result string - - url_data.warnings: list of unicode + - url_data.warnings: list of tuples (tag, warning message) List of tagged warnings for this URL. - url_data.name: unicode string or None name of URL (eg. filename or link name) @@ -1116,7 +1116,7 @@ class UrlBase (object): extern=self.extern[0], cached=self.cached, result=self.result, - warnings=[x[1] for x in self.warnings], + warnings=self.warnings[:], name=self.name or u"", title=self.get_title(), parent_url=self.parent_url or u"", diff --git a/linkcheck/logger/csvlog.py b/linkcheck/logger/csvlog.py index 355cbec4..1e049710 100644 --- a/linkcheck/logger/csvlog.py +++ b/linkcheck/logger/csvlog.py @@ -88,7 +88,7 @@ class CSVLogger (Logger): for s in (url_data.base_url, url_data.parent_url, url_data.base_ref, url_data.result, - self.linesep.join(url_data.warnings), + self.linesep.join(x[1] for x in url_data.warnings), self.linesep.join(url_data.info), url_data.valid, url_data.url, url_data.line, url_data.column, diff --git a/linkcheck/logger/customxml.py b/linkcheck/logger/customxml.py index e94ef9f0..7e621892 100644 --- a/linkcheck/logger/customxml.py +++ b/linkcheck/logger/customxml.py @@ -71,8 +71,9 @@ class CustomXMLLogger (xmllog.XMLLogger): self.xml_endtag(u"infos") if url_data.warnings and self.has_part('warning'): self.xml_starttag(u"warnings") - for data in url_data.warnings: - self.xml_tag(u"warning", data) + for tag, data in url_data.warnings: + attrs = {"tag": tag} + self.xml_tag(u"warning", data, attrs) self.xml_endtag(u"warnings") if self.has_part("result"): attrs = {} diff --git a/linkcheck/logger/html.py b/linkcheck/logger/html.py index bd03d44d..32de3815 100644 --- a/linkcheck/logger/html.py +++ b/linkcheck/logger/html.py @@ -220,7 +220,7 @@ class HtmlLogger (Logger): def write_warning (self, url_data): """Write url_data.warnings.""" sep = u"
"+os.linesep - text = sep.join(cgi.escape(x) for x in url_data.warnings) + text = sep.join(cgi.escape(x[1]) for x in url_data.warnings) self.writeln(u'' + self.part("warning") + u'' + diff --git a/linkcheck/logger/sql.py b/linkcheck/logger/sql.py index f200bcce..2ef15e53 100644 --- a/linkcheck/logger/sql.py +++ b/linkcheck/logger/sql.py @@ -106,7 +106,7 @@ class SQLLogger (Logger): 'base_ref': sqlify((url_data.base_ref)), 'valid': intify(url_data.valid), 'result': sqlify(url_data.result), - 'warning': sqlify(os.linesep.join(url_data.warnings)), + 'warning': sqlify(os.linesep.join(x[1] for x in url_data.warnings)), 'info': sqlify(os.linesep.join(url_data.info)), 'url': sqlify(urlutil.url_quote(url_data.url)), 'line': url_data.line, diff --git a/linkcheck/logger/text.py b/linkcheck/logger/text.py index 4e02c7bd..a635be64 100644 --- a/linkcheck/logger/text.py +++ b/linkcheck/logger/text.py @@ -175,7 +175,8 @@ class TextLogger (Logger): def write_warning (self, url_data): """Write url_data.warning.""" self.write(self.part("warning") + self.spaces("warning")) - self.writeln(self.wrap(url_data.warnings, 65), color=self.colorwarning) + warning_msgs = [x[1] for x in url_data.warnings] + self.writeln(self.wrap(warning_msgs, 65), color=self.colorwarning) def write_result (self, url_data): """Write url_data.result.""" diff --git a/tests/checker/__init__.py b/tests/checker/__init__.py index 0b8a8cf6..fde50b00 100644 --- a/tests/checker/__init__.py +++ b/tests/checker/__init__.py @@ -79,7 +79,7 @@ class TestLogger (linkcheck.logger.Logger): "is located in" not in info: self.result.append(u"info %s" % info) if self.has_part('warning'): - for warning in url_data.warnings: + for tag, warning in url_data.warnings: self.result.append(u"warning %s" % warning) if self.has_part('result'): self.result.append(u"valid" if url_data.valid else u"error")