35
35
36
36
37
37
class ProgenBuildTest ():
38
- def __init__ (self , desired_ides , tests , targets ):
38
+ def __init__ (self , desired_ides , tests , targets , clean = False ):
39
39
#map of targets and the ides that can build programs for them
40
40
self .target_ides = {}
41
41
for target in targets :
@@ -47,6 +47,8 @@ def __init__(self, desired_ides, tests, targets):
47
47
if len (self .target_ides [target ]) == 0 :
48
48
del self .target_ides [target ]
49
49
50
+ self .clean = clean
51
+
50
52
successes , failures = self ._generate_and_build (tests )
51
53
print_results (successes , failures )
52
54
@@ -62,7 +64,7 @@ def get_pgen_targets(ides):
62
64
return targs
63
65
64
66
@staticmethod
65
- def handle_build_log (tool , project_dir , target , test ):
67
+ def handle_project_files (tool , project_dir , target , test , clean = False ):
66
68
log = ''
67
69
new_dir = os .path .dirname (project_dir )
68
70
if tool == 'uvision' or tool == 'uvision5' :
@@ -74,15 +76,25 @@ def handle_build_log(tool, project_dir, target, test):
74
76
print f .read ()
75
77
except :
76
78
print ("No log file found" )
77
- log_name = "_" .join ([test , target , tool ])+ ".txt"
78
79
79
- os .rename (log , log_name )
80
+ test_prefix = "_" .join ([test , target , tool ])
81
+ log_name = os .path .join (new_dir ,test_prefix + "_log.txt" )
82
+ project_files_dir = os .path .join (os .path .dirname (project_dir ),test_prefix )
83
+
80
84
#check if a log already exists for this platform+test+ide
81
- if os .path .exists (os . path . join ( new_dir , log_name ) ):
85
+ if os .path .exists (log_name ):
82
86
#delete it if so
83
- os .remove (os .path .join (new_dir ,log_name ))
84
- shutil .move (log_name , new_dir )
85
- shutil .rmtree (project_dir , ignore_errors = True )
87
+ os .remove (log_name )
88
+ os .rename (log , log_name )
89
+
90
+ if clean :
91
+ shutil .rmtree (project_dir , ignore_errors = True )
92
+ return
93
+
94
+ #check if project files exist
95
+ if not clean and os .path .exists (project_files_dir ):
96
+ shutil .rmtree (project_files_dir , ignore_errors = True )
97
+ os .rename (project_dir , project_files_dir )
86
98
87
99
def _generate_and_build (self , tests ):
88
100
@@ -103,7 +115,7 @@ def _generate_and_build(self, tests):
103
115
else :
104
116
failures .append ("%s::%s\t %s for %s" % (mcu , ide , report ['errormsg' ], project_name ))
105
117
106
- ProgenBuildTest .handle_build_log (ide , project_temp , mcu , project_name )
118
+ ProgenBuildTest .handle_project_files (ide , project_temp , mcu , project_name , self . clean )
107
119
return successes , failures
108
120
109
121
@@ -131,6 +143,12 @@ def _generate_and_build(self, tests):
131
143
help = "generate project for the given MCUs (%s)" % '\n ' .join (accepted_targets ),
132
144
default = accepted_targets )
133
145
146
+ parser .add_argument ("-c" , "--clean" ,
147
+ dest = "clean" ,
148
+ action = "store_true" ,
149
+ help = "clean up the exported project files" ,
150
+ default = False )
151
+
134
152
options = parser .parse_args ()
135
153
136
154
tests = options .tests
@@ -146,6 +164,6 @@ def _generate_and_build(self, tests):
146
164
if any (ide not in accepted_ides for ide in ides ):
147
165
args_error (parser , "[ERROR] ide must be in %s" % ', ' .join (accepted_ides ))
148
166
149
- b = ProgenBuildTest (ides , tests , targets )
167
+ b = ProgenBuildTest (ides , tests , targets , options . clean )
150
168
151
169
0 commit comments