8
8
exit_status = 0
9
9
success_count = 0
10
10
fail_count = 0
11
+ skip_count = 0
11
12
12
13
build_format = '| {:22} | {:30} | {:9} '
13
14
build_separator = '-' * 80
14
15
15
- all_boards = [ 'metro_m0' , 'metro_m4' ]
16
+ default_boards = [ 'metro_m0' , 'metro_m4' , 'circuitplayground_m0' ]
16
17
17
18
build_boards = []
18
19
19
20
# build all variants if input not existed
20
21
if len (sys .argv ) > 1 :
21
- if (sys .argv [1 ] in all_boards ):
22
- build_boards .append (sys .argv [1 ])
23
- else :
24
- print ('\033 [31INTERNAL ERR\033 [0m - invalid variant name "{}"' .format (sys .argv [1 ]))
25
- sys .exit (- 1 )
22
+ build_boards .append (sys .argv [1 ])
26
23
else :
27
- build_boards = all_boards
24
+ build_boards = default_boards
28
25
29
26
def errorOutputFilter (line ):
30
27
if len (line ) == 0 :
@@ -36,7 +33,7 @@ def errorOutputFilter(line):
36
33
37
34
38
35
def build_examples (variant ):
39
- global exit_status , success_count , fail_count , build_format , build_separator
36
+ global exit_status , success_count , fail_count , skip_count , build_format , build_separator
40
37
41
38
print ('\n ' )
42
39
print (build_separator )
@@ -50,12 +47,13 @@ def build_examples(variant):
50
47
for sketch in glob .iglob ('libraries/**/*.ino' , recursive = True ):
51
48
start_time = time .monotonic ()
52
49
53
- # skip if example contains: ".skip" or ".skip.variant "
54
- # however ".build.variant" file can overwrite ".skip", used to build a specific variant only
50
+ # Skip if contains: ".board.test. skip" or ".all.test.skip "
51
+ # Skip if not contains: ".board.test.only" for a specific board
55
52
sketchdir = os .path .dirname (sketch )
56
- if ( (os .path .exists (sketchdir + '/.skip' ) or os .path .exists (sketchdir + '/.skip.' + variant )) and
57
- not os .path .exists (sketchdir + '/.build.' + variant )):
58
- success = "skipped"
53
+ if os .path .exists (sketchdir + '/.all.test.skip' ) or os .path .exists (sketchdir + '/.' + variant + '.test.skip' ):
54
+ success = "\033 [33mskipped\033 [0m "
55
+ elif glob .glob (sketchdir + "/.*.test.only" ) and not os .path .exists (sketchdir + '/.build.' + variant ):
56
+ success = "\033 [33mskipped\033 [0m "
59
57
else :
60
58
# TODO - preferably, would have STDERR show up in **both** STDOUT and STDERR.
61
59
# preferably, would use Python logging handler to get both distinct outputs and one merged output
@@ -87,15 +85,16 @@ def build_examples(variant):
87
85
88
86
print ((build_format + '| {:5.2f}s |' ).format (sketch .split (os .path .sep )[1 ], os .path .basename (sketch ), success , build_duration ))
89
87
90
- if success != "skipped " :
88
+ if success != "\033 [33mskipped \033 [0m " :
91
89
if build_result .returncode != 0 :
92
90
print (build_result .stdout .decode ("utf-8" ))
93
91
if (build_result .stderr ):
94
92
print (build_result .stderr .decode ("utf-8" ))
95
93
if len (warningLines ) != 0 :
96
94
for line in warningLines :
97
95
print (line )
98
-
96
+ else :
97
+ skip_count += 1
99
98
100
99
build_time = time .monotonic ()
101
100
@@ -104,7 +103,7 @@ def build_examples(variant):
104
103
105
104
print (build_separator )
106
105
build_time = time .monotonic () - build_time
107
- print ("Build Summary: {} \033 [32msucceeded\033 [0m, {} \033 [31mfailed\033 [0m and took {:.2f}s" .format (success_count , fail_count , build_time ))
106
+ print ("Build Summary: {} \033 [32msucceeded\033 [0m, {} \033 [31mfailed\033 [0m, {} \033 [33mskipped \033 [0m and took {:.2f}s" .format (success_count , fail_count , skip_count , build_time ))
108
107
print (build_separator )
109
108
110
109
sys .exit (exit_status )
0 commit comments