diff options
author | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2015-01-13 15:12:46 +0000 |
---|---|---|
committer | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2015-01-13 15:12:46 +0000 |
commit | d2c5957aa870b6bc29597d9686c8dd4d81c00831 (patch) | |
tree | bbbcb7a0bbaee437f6bd34423b565d4f263de67f | |
parent | 89922ad10a723bd25c646081f276b4bcf96f74d8 (diff) |
Moved to Jenkins friendly implementation
Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
-rw-r--r-- | test-definitions-ci.py | 208 |
1 files changed, 100 insertions, 108 deletions
diff --git a/test-definitions-ci.py b/test-definitions-ci.py index 8b8c98b..b7f4fc9 100644 --- a/test-definitions-ci.py +++ b/test-definitions-ci.py @@ -1,114 +1,106 @@ #!/usr/bin/python -# Usage ./lava-projectci.py <pep-ignore-options> import sys import os import subprocess import traceback import yaml -import unittest - -class YamlValidateTest(unittest.TestCase): - def runTest(self): - for root, dirs, files in os.walk('.'): - if not root.startswith("./.git"): - for name in files: - if name.endswith("yaml"): - try: - filename = root + "/" + name - with open(filename, "r") as f: - y = yaml.load(f.read()) - except: - result = [] - exc_type, exc_value, exc_traceback = sys.exc_info() - for line in traceback.format_exception_only(exc_type, exc_value): - result.append(' ' + line) - self.fail('\n'.join(result)) - - -#def publish_result(): -# result_message = '\n'.join(result_message_list) -# if debug: -# print result_message -# f = open('build-error.txt', 'w') -# f.write("\n\n") -# f.write(result_message) -# f.write("\n\n") -# f.close() -# sys.stderr.write(result_message) -# sys.stderr.write("\n") -# -#def pep8_check(ignore_options): -# cmd = 'pep8 --ignore %s .' % ignore_options -# try: -# output = subprocess.check_output(cmd, shell=True) -# if debug: -# print output -# message = '* PEP8 CHECK: [PASSED]: %s' % cmd -# result_message_list.append(message) -# except subprocess.CalledProcessError as e: -# message_list = [] -# message_list.append('* PEP8 CHECK: [FAILED]: %s' % cmd) -# message_list.append('* PEP8 CHECK: [OUTPUT]:') -# for line in e.output.splitlines(): -# message_list.append('* ' + line) -# message = '\n\n'.join(message_list) -# result_message_list.append(message) -# cmd_verbose = 'pep8 --ignore %s --show-source --show-pep8 .' % ignore_options -# subprocess.call(cmd_verbose, shell=True) -# publish_result() -# exit(1) - -#def validate_yaml(filename): -# with open(filename, "r") as f: -# try: -# y = yaml.load(f.read()) -# message = "* YAMLVALID: [PASSED]: " + filename -# result_message_list.append(message) -# except: -# message = "* YAMLVALID: [FAILED]: " + filename -# result_message_list.append(message) -# result_message_list.append("\n\n") -# exc_type, exc_value, exc_traceback = sys.exc_info() -# for line in traceback.format_exception_only(exc_type, exc_value): -# #result_message_list.append(' ' + line.replace("\"", "'")) -# result_message_list.append(' ' + line) -# publish_result() -# exit(1) - - -#def validate_shell(filename): -# cmd = 'checkbashisms %s 2>&1' % filename -# try: -# output = subprocess.check_output(cmd, shell=True) -# if debug: -# print output -# message = '* CHECKBASHISMS: [PASSED]: %s' % filename -# result_message_list.append(message) -# except subprocess.CalledProcessError as e: -# result_message_list.append('* CHECKBASHISMS: [WARNING]: %s' % filename) -# result_message_list.append('* CHECKBASHISMS: [OUTPUT]:') -# for line in e.output.splitlines(): -# #result_message_list.append(' ' + line.replace("\"", "'").replace("{","\\{").replace("}","\\}")) -# result_message_list.append(' ' + line) -# publish_result() -# exit(1) -# -#def run_unit_tests(): -# for root, dirs, files in os.walk('.'): -# if not root.startswith("./.git"): -# for name in files: -# if name.endswith("yaml"): -# validate_yaml(root + "/" + name) -# # disable checkbashisms for now -# #if name.endswith("sh"): -# # validate_shell(root + "/" + name) -# -#def main(ignore_options): -# # disable pep8 for now -# #pep8_check(ignore_options) -# run_unit_tests() -# publish_result() -# exit(0) - -#if __name__ == '__main__': -# main(sys.argv[1]) +import pep8 + + +def print_stderr(message): + sys.stderr.write(message) + sys.stderr.write("\n") + + +def publish_result(result_message_list): + result_message = '\n'.join(result_message_list) + f = open('build-error.txt', 'a') + f.write("\n\n") + f.write(result_message) + f.write("\n\n") + f.close() + print_stderr(result_message) + + +def pep8_check(filepath, ignore_options=None): + _fmt = "%(row)d:%(col)d: %(code)s %(text)s" + options = { + 'ignore': ignore_options, + "show_source": True} + pep8_checker = pep8.StyleGuide(options) + fchecker = pep8_checker.checker_class( + filepath, + options=pep8_checker.options) + fchecker.check_all() + if fchecker.report.file_errors > 0: + result_message_list = [] + result_message_list.append("* PEP8: [WARNING]: " + filepath) + fchecker.report.print_statistics() + for line_number, offset, code, text, doc in fchecker.report._deferred_print: + result_message_list.append( + _fmt % { + 'path': filepath, + 'row': fchecker.report.line_offset + line_number, + 'col': offset + 1, + 'code': code, 'text': text, + }) + publish_result(result_message_list) + + +def validate_yaml(filename): + with open(filename, "r") as f: + try: + y = yaml.load(f.read()) + message = "* YAMLVALID: [PASSED]: " + filename + print_stderr(message) + except: + message = "* YAMLVALID: [FAILED]: " + filename + result_message_list = [] + result_message_list.append(message) + result_message_list.append("\n\n") + exc_type, exc_value, exc_traceback = sys.exc_info() + for line in traceback.format_exception_only(exc_type, exc_value): + result_message_list.append(' ' + line) + publish_result(result_message_list) + exit(1) + + +def validate_shell(filename): + cmd = './checkbashisms %s 2>&1' % filename + try: + output = subprocess.check_output(cmd, shell=True) + message = '* CHECKBASHISMS: [PASSED]: %s' % filename + print_stderr(message) + except subprocess.CalledProcessError as e: + result_message_list = [] + result_message_list.append('* CHECKBASHISMS: [FAILED]: %s' % filename) + result_message_list.append('* CHECKBASHISMS: [OUTPUT]:') + for line in e.output.splitlines(): + result_message_list.append(' ' + line) + publish_result(result_message_list) + exit(1) + + +def run_unit_tests(ignore_options): + for root, dirs, files in os.walk('.'): + if not root.startswith("./.git"): + for name in files: + if name.endswith("yaml"): + validate_yaml(root + "/" + name) + if name.endswith("py"): + pep8_check(root + "/" + name, ignore_options) + # disable checkbashisms for now + #if name.endswith("sh"): + # validate_shell(root + "/" + name) + + +def main(ignore_options=None): + run_unit_tests(ignore_options) + exit(0) + + +if __name__ == '__main__': + if len(sys.argv) > 1: + main(sys.argv[1]) + else: + main() |