Skip to content

Commit 9e9fe0a

Browse files
committed
Creates directory of ide project files and option to clean
1 parent 3337e63 commit 9e9fe0a

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

tools/test/export/build_test.py

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636

3737
class ProgenBuildTest():
38-
def __init__(self, desired_ides, tests, targets):
38+
def __init__(self, desired_ides, tests, targets, clean=False):
3939
#map of targets and the ides that can build programs for them
4040
self.target_ides = {}
4141
for target in targets:
@@ -47,6 +47,8 @@ def __init__(self, desired_ides, tests, targets):
4747
if len(self.target_ides[target]) == 0:
4848
del self.target_ides[target]
4949

50+
self.clean = clean
51+
5052
successes, failures = self._generate_and_build(tests)
5153
print_results(successes, failures)
5254

@@ -62,7 +64,7 @@ def get_pgen_targets(ides):
6264
return targs
6365

6466
@staticmethod
65-
def handle_build_log(tool, project_dir, target, test):
67+
def handle_project_files(tool, project_dir, target, test, clean=False):
6668
log = ''
6769
new_dir = os.path.dirname(project_dir)
6870
if tool == 'uvision' or tool == 'uvision5':
@@ -74,15 +76,25 @@ def handle_build_log(tool, project_dir, target, test):
7476
print f.read()
7577
except:
7678
print("No log file found")
77-
log_name = "_".join([test, target, tool])+".txt"
7879

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+
8084
#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):
8286
#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)
8698

8799
def _generate_and_build(self, tests):
88100

@@ -103,7 +115,7 @@ def _generate_and_build(self, tests):
103115
else:
104116
failures.append("%s::%s\t%s for %s" % (mcu, ide, report['errormsg'], project_name))
105117

106-
ProgenBuildTest.handle_build_log(ide, project_temp, mcu, project_name)
118+
ProgenBuildTest.handle_project_files(ide, project_temp, mcu, project_name, self.clean)
107119
return successes, failures
108120

109121

@@ -131,6 +143,12 @@ def _generate_and_build(self, tests):
131143
help="generate project for the given MCUs (%s)" % '\n '.join(accepted_targets),
132144
default = accepted_targets)
133145

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+
134152
options = parser.parse_args()
135153

136154
tests = options.tests
@@ -146,6 +164,6 @@ def _generate_and_build(self, tests):
146164
if any(ide not in accepted_ides for ide in ides):
147165
args_error(parser, "[ERROR] ide must be in %s" % ', '.join(accepted_ides))
148166

149-
b = ProgenBuildTest(ides, tests, targets)
167+
b = ProgenBuildTest(ides, tests, targets, options.clean)
150168

151169

0 commit comments

Comments
 (0)