You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2018/04/21 16:15:03 UTC
[2/4] qpid-site git commit: QPID-8154: Signal test failure when there
are broken links
QPID-8154: Signal test failure when there are broken links
Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/bc2504fc
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/bc2504fc
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/bc2504fc
Branch: refs/heads/asf-site
Commit: bc2504fc2fd740e4c21d8a7d815219d2a1650e78
Parents: a559fe7
Author: Justin Ross <jr...@apache.org>
Authored: Sat Apr 21 09:01:44 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Sat Apr 21 09:01:44 2018 -0700
----------------------------------------------------------------------
python/transom.py | 40 +++++++++++++++++++++++-----------------
scripts/check-links | 16 +++++++++++++---
2 files changed, 36 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/bc2504fc/python/transom.py
----------------------------------------------------------------------
diff --git a/python/transom.py b/python/transom.py
index da94802..3c3f8e7 100644
--- a/python/transom.py
+++ b/python/transom.py
@@ -6,9 +6,9 @@
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -65,7 +65,7 @@ class Transom:
self.template_content = None
self.config_env = None
-
+
extras = {
"code-friendly": True,
"footnotes": True,
@@ -94,7 +94,7 @@ class Transom:
if not _is_file(self.template_path):
raise Exception("No template found")
-
+
self.template_content = _read_file(self.template_path)
init_globals = {"site_url": self.site_url}
@@ -189,7 +189,7 @@ class Transom:
if name == "transom":
continue
-
+
self.traverse_output_files(path, files)
def check_links(self, internal=True, external=False):
@@ -202,17 +202,17 @@ class Transom:
errors_by_link = _defaultdict(list)
links = self.filter_links(self.links)
- for link in links:
+ for i, link in enumerate(links):
if internal and link.startswith(self.site_url):
if link[len(self.site_url):].startswith("/transom"):
continue
-
+
if link not in self.link_targets:
errors_by_link[link].append("Link has no target")
if external and not link.startswith(self.site_url):
code, error = self.check_external_link(link)
-
+
if code >= 400:
msg = "HTTP error code {}".format(code)
errors_by_link[link].append(msg)
@@ -221,6 +221,10 @@ class Transom:
errors_by_link[link].append(error.message)
_sys.stdout.write(".")
+
+ if (i + 1) % 100 == 0:
+ _sys.stdout.write("\n")
+
_sys.stdout.flush()
print()
@@ -234,6 +238,8 @@ class Transom:
for source in self.links[link]:
print(" Source: {}".format(source))
+ return len(errors_by_link)
+
def filter_links(self, links):
config_path = _join(self.input_dir, "_transom_ignore_links")
@@ -253,7 +259,7 @@ class Transom:
return filter(retain, links)
return links
-
+
def check_external_link(self, link):
sock, code, error = None, None, None
@@ -366,7 +372,7 @@ class _File(object):
if token[:2] != "{{" or token[-2:] != "}}":
out.append(token)
continue
-
+
token_content = token[2:-2]
if page_vars and token_content in page_vars:
@@ -375,7 +381,7 @@ class _File(object):
expr = token_content
env = self.site.config_env
-
+
try:
result = eval(expr, env)
except Exception as e:
@@ -415,7 +421,7 @@ class _Page(_File):
self.title = None
self.attributes = dict()
-
+
self.site.pages.append(self)
def init(self):
@@ -429,13 +435,13 @@ class _Page(_File):
super(_Page, self).init()
self.template_content = self.site.template_content
-
+
input_dir, name = _split(self.input_path)
template_path = _join(input_dir, "_transom_template.html")
if _is_file(template_path):
self.template_content = _read_file(template_path)
-
+
def load_input(self):
self.site.info("Loading {}", self)
self.content = _read_file(self.input_path)
@@ -532,7 +538,7 @@ class _Page(_File):
return
self.site.info("Finding links in {}", self)
-
+
try:
root = self.parse_xml(self.content)
except Exception as e:
@@ -626,7 +632,7 @@ def _write_file(path, content):
with _open_file(path, "w") as file:
return file.write(content)
-
+
# Adapted from http://stackoverflow.com/questions/22078621/python-how-to-copy-files-fast
_read_flags = _os.O_RDONLY
@@ -635,7 +641,7 @@ _eof = b""
def _copy_file(src, dst):
_make_dir(_split(dst)[0])
-
+
try:
fin = _os.open(src, _read_flags)
fout = _os.open(dst, _write_flags)
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/bc2504fc/scripts/check-links
----------------------------------------------------------------------
diff --git a/scripts/check-links b/scripts/check-links
index c0a4521..d43225d 100755
--- a/scripts/check-links
+++ b/scripts/check-links
@@ -7,9 +7,9 @@
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,6 +18,8 @@
# under the License.
#
+from __future__ import print_function
+
import sys
from transom import *
@@ -29,4 +31,12 @@ external = bool(int(external))
transom = Transom(site_url, input_dir, output_dir)
transom.init()
-transom.check_links(internal=internal, external=external)
+
+link_errors = transom.check_links(internal=internal, external=external)
+
+if link_errors == 0:
+ print("PASSED")
+else:
+ print("FAILED")
+
+sys.exit(link_errors)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org