diff options
Diffstat (limited to 'import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py')
-rw-r--r-- | import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py new file mode 100644 index 000000000..0820f82e2 --- /dev/null +++ b/import-layers/yocto-poky/bitbake/lib/toaster/contrib/tts/urlcheck.py @@ -0,0 +1,53 @@ +from __future__ import print_function +import sys + +import httplib2 +import config +import urllist + + +config.logger.info("Testing %s with %s", config.TOASTER_BASEURL, config.W3C_VALIDATOR) + +def validate_html5(url): + http_client = httplib2.Http(None) + status = "Failed" + errors = -1 + warnings = -1 + + urlrequest = config.W3C_VALIDATOR+url + + # pylint: disable=broad-except + # we disable the broad-except because we want to actually catch all possible exceptions + try: + resp, _ = http_client.request(urlrequest, "HEAD") + if resp['x-w3c-validator-status'] != "Abort": + status = resp['x-w3c-validator-status'] + errors = int(resp['x-w3c-validator-errors']) + warnings = int(resp['x-w3c-validator-warnings']) + + if status == 'Invalid': + config.logger.warn("Failed %s is %s\terrors %s warnings %s (check at %s)", url, status, errors, warnings, urlrequest) + else: + config.logger.debug("OK! %s", url) + + except Exception as exc: + config.logger.warn("Failed validation call: %s", exc) + return (status, errors, warnings) + + +def print_validation(url): + status, errors, warnings = validate_html5(url) + config.logger.error("url %s is %s\terrors %s warnings %s (check at %s)", url, status, errors, warnings, config.W3C_VALIDATOR+url) + + +def main(): + print("Testing %s with %s" % (config.TOASTER_BASEURL, config.W3C_VALIDATOR)) + + if len(sys.argv) > 1: + print_validation(sys.argv[1]) + else: + for url in urllist.URLS: + print_validation(config.TOASTER_BASEURL+url) + +if __name__ == "__main__": + main() |