Rtos API example

Committer:
marcozecchini
Date:
Sat Feb 23 12:13:36 2019 +0000
Revision:
0:9fca2b23d0ba
final commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcozecchini 0:9fca2b23d0ba 1 """A test that all code scores above a 9.25 in pylint"""
marcozecchini 0:9fca2b23d0ba 2
marcozecchini 0:9fca2b23d0ba 3 import subprocess
marcozecchini 0:9fca2b23d0ba 4 import re
marcozecchini 0:9fca2b23d0ba 5 import os.path
marcozecchini 0:9fca2b23d0ba 6
marcozecchini 0:9fca2b23d0ba 7 SCORE_REGEXP = re.compile(
marcozecchini 0:9fca2b23d0ba 8 r'^Your\ code\ has\ been\ rated\ at\ (\-?[0-9\.]+)/10')
marcozecchini 0:9fca2b23d0ba 9
marcozecchini 0:9fca2b23d0ba 10 TOOLS_ROOT = os.path.dirname(os.path.dirname(__file__))
marcozecchini 0:9fca2b23d0ba 11
marcozecchini 0:9fca2b23d0ba 12
marcozecchini 0:9fca2b23d0ba 13 def parse_score(pylint_output):
marcozecchini 0:9fca2b23d0ba 14 """Parse the score out of pylint's output as a float If the score is not
marcozecchini 0:9fca2b23d0ba 15 found, return 0.0.
marcozecchini 0:9fca2b23d0ba 16 """
marcozecchini 0:9fca2b23d0ba 17 for line in pylint_output.splitlines():
marcozecchini 0:9fca2b23d0ba 18 match = re.match(SCORE_REGEXP, line)
marcozecchini 0:9fca2b23d0ba 19 if match:
marcozecchini 0:9fca2b23d0ba 20 return float(match.group(1))
marcozecchini 0:9fca2b23d0ba 21 return 0.0
marcozecchini 0:9fca2b23d0ba 22
marcozecchini 0:9fca2b23d0ba 23 def execute_pylint(filename):
marcozecchini 0:9fca2b23d0ba 24 """Execute a pylint process and collect it's output
marcozecchini 0:9fca2b23d0ba 25 """
marcozecchini 0:9fca2b23d0ba 26 process = subprocess.Popen(
marcozecchini 0:9fca2b23d0ba 27 ["pylint", filename],
marcozecchini 0:9fca2b23d0ba 28 stdout=subprocess.PIPE,
marcozecchini 0:9fca2b23d0ba 29 stderr=subprocess.PIPE
marcozecchini 0:9fca2b23d0ba 30 )
marcozecchini 0:9fca2b23d0ba 31 stout, sterr = process.communicate()
marcozecchini 0:9fca2b23d0ba 32 status = process.poll()
marcozecchini 0:9fca2b23d0ba 33 return status, stout, sterr
marcozecchini 0:9fca2b23d0ba 34
marcozecchini 0:9fca2b23d0ba 35 FILES = ["build_api.py", "config.py", "colorize.py", "detect_targets.py",
marcozecchini 0:9fca2b23d0ba 36 "hooks.py", "libraries.py", "memap.py", "options.py", "paths.py",
marcozecchini 0:9fca2b23d0ba 37 "targets.py", "test/pylint.py"]
marcozecchini 0:9fca2b23d0ba 38
marcozecchini 0:9fca2b23d0ba 39 if __name__ == "__main__":
marcozecchini 0:9fca2b23d0ba 40 for python_module in FILES:
marcozecchini 0:9fca2b23d0ba 41 _, stdout, stderr = execute_pylint(os.path.join(TOOLS_ROOT,
marcozecchini 0:9fca2b23d0ba 42 python_module))
marcozecchini 0:9fca2b23d0ba 43 score = parse_score(stdout)
marcozecchini 0:9fca2b23d0ba 44 if score < 9.25:
marcozecchini 0:9fca2b23d0ba 45 print(stdout)
marcozecchini 0:9fca2b23d0ba 46
marcozecchini 0:9fca2b23d0ba 47
marcozecchini 0:9fca2b23d0ba 48