Wrote in the missing functionality to the new testlist.py.

This commit is contained in:
Pietro Gagliardi 2020-02-16 13:48:20 -05:00
parent cfc4b60ea1
commit f95c87dc96
1 changed files with 49 additions and 4 deletions

View File

@ -47,6 +47,15 @@ class listCommand:
print('Test' + x)
command.register(listCommand)
headerHeader = '''// Generated by testlist.py; do not edit
struct testingprivCase {
const char *name;
void (*f)(void);
};
extern const struct testingprivCase testingprivCases[];
extern const size_t testingprivNumCases;'''
headerEntryFmt = 'extern void testingprivImplName(Test{})(void);'
class headerCommand:
filename = None
@ -66,13 +75,49 @@ class headerCommand:
return args[1:]
def run(self, casenames):
# TODO
raise NotImplementedError
with open(self.filename, 'wt') as f:
print(headerHeader, file = f)
for x in casenames:
print(headerEntryFmt.format(x), file = f)
command.register(headerCommand)
sourceHeader = '''// Generated by testlist.py; do not edit
#include "test.h"
const struct testingprivCase testingprivCases[] = {'''
sourceEntryFmt = ' {{ "Test{0}", testingprivImplName(Test{0}) }},'
sourceFooter = '''}};
const size_t testingprivNumCases = {};'''
class sourceCommand:
filename = None
@classmethod
def name(cls):
return 'source'
@classmethod
def usageString(cls):
return 'source source-file [source-files...]'
def processArgs(self, args):
if len(args) < 1:
errf('error: output filename missing')
return None
self.filename = args[0]
return args[1:]
def run(self, casenames):
with open(self.filename, 'wt') as f:
print(sourceHeader, file = f)
for x in casenames:
print(sourceEntryFmt.format(x), file = f)
print(sourceFooter.format(len(casenames)), file = f)
command.register(sourceCommand)
commands = [
listCommand,
headerCommand,
sourceCommand,
]
def usage():
@ -96,7 +141,7 @@ def main():
cmdtype = cmd
break
if cmdtype is None:
errf('error: unknown command {}', cmdname)
errf('error: unknown command {!r}', cmdname)
usage()
cmd = cmdtype()
@ -109,6 +154,6 @@ def main():
match = r.match(line)
if match is not None:
casenames.append(match.group(1))
cmd.run(casenames)
cmd.run(sorted(casenames))
main()