Skip to content
Snippets Groups Projects
Commit 28ff8ceb authored by René Kijewski's avatar René Kijewski
Browse files

Merge pull request #1085 from Kijewski/compile_test-process-indicator

Add process indicator to compile_test.py
parents 5d7f7dd6 d16b8190
No related branches found
No related tags found
No related merge requests found
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
from __future__ import print_function from __future__ import print_function
from itertools import groupby, ifilter, imap from itertools import groupby
from os import devnull, environ, listdir from os import devnull, environ, listdir
from os.path import abspath, dirname, isdir, join from os.path import abspath, dirname, isdir, join
from subprocess import PIPE, Popen from subprocess import PIPE, Popen
from sys import exit from sys import exit, stdout
riotbase = environ.get('RIOTBASE') or abspath(join(dirname(abspath(__file__)), '../' * 3)) riotbase = environ.get('RIOTBASE') or abspath(join(dirname(abspath(__file__)), '../' * 3))
...@@ -39,25 +39,39 @@ for folder in ('examples', 'tests'): ...@@ -39,25 +39,39 @@ for folder in ('examples', 'tests'):
if not isdir(join(riotbase, folder, application)): if not isdir(join(riotbase, folder, application)):
continue continue
print('\tBuilding application: \033[1;34m{}\033[0m'.format(application)) stdout.write('\tBuilding application: \033[1;34m{}\033[0m '.format(application))
stdout.flush()
try: try:
subprocess = Popen(('make', 'buildtest'), subprocess = Popen(('make', 'buildtest'),
bufsize=1,
stdin=null,
stdout=PIPE, stdout=PIPE,
stderr=null, stderr=null,
cwd=join(riotbase, folder, application)) cwd=join(riotbase, folder, application))
lines = imap(str.rstrip, subprocess.stdout)
lines = ifilter(bool, lines) def lines(readline, prefix):
lines = imap(lambda s: s.split(' .. '), lines) while 1:
lines = ifilter(lambda t: len(t) == 2, lines) result = readline()
lines = imap(lambda (board, outcome): (outcome, board[len('Building for '):]), lines) if not result:
break
elif not result.startswith(prefix):
continue
result = result[len(prefix):].rstrip().split(' .. ')[::-1]
if len(result) == 2:
stdout.write('.')
stdout.flush()
yield result
lines = lines(subprocess.stdout.readline, 'Building for ')
lines = groupby(sorted(lines), lambda (outcome, board): outcome) lines = groupby(sorted(lines), lambda (outcome, board): outcome)
for group, results in lines: for group, results in lines:
print('\t\t{}: {}'.format(group, ', '.join(sorted(board for outcome, board in results)))) print('\n\t\t{}: {}'.format(group, ', '.join(sorted(board for outcome, board in results))))
returncode = subprocess.wait() returncode = subprocess.wait()
(failed if returncode else success).append(application) (failed if returncode else success).append(application)
except Exception, e: except Exception, e:
print('\t\tException: {}'.format(e)) print('\n\t\tException: {}'.format(e))
exceptions.append(application) exceptions.append(application)
finally: finally:
try: try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment