summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilosz Wasilewski <milosz.wasilewski@linaro.org>2015-01-13 15:12:46 +0000
committerMilosz Wasilewski <milosz.wasilewski@linaro.org>2015-01-13 15:12:46 +0000
commitd2c5957aa870b6bc29597d9686c8dd4d81c00831 (patch)
treebbbcb7a0bbaee437f6bd34423b565d4f263de67f
parent89922ad10a723bd25c646081f276b4bcf96f74d8 (diff)
Moved to Jenkins friendly implementation
Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
-rw-r--r--test-definitions-ci.py208
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()