Allowed empty suites in test.py/bench.py

This happens when you need to comment out an entire suite due to
temporary changes.
This commit is contained in:
Christopher Haster
2023-02-20 13:43:30 -06:00
parent b887365fcb
commit a20625be7c
2 changed files with 47 additions and 45 deletions
+22 -21
View File
@@ -171,7 +171,7 @@ class BenchSuite:
# sort in case toml parsing did not retain order # sort in case toml parsing did not retain order
case_linenos.sort() case_linenos.sort()
cases = config.pop('cases') cases = config.pop('cases', {})
for (lineno, name), (nlineno, _) in it.zip_longest( for (lineno, name), (nlineno, _) in it.zip_longest(
case_linenos, case_linenos[1:], case_linenos, case_linenos[1:],
fillvalue=(float('inf'), None)): fillvalue=(float('inf'), None)):
@@ -209,7 +209,7 @@ class BenchSuite:
args=args)) args=args))
# combine per-case defines # combine per-case defines
self.defines = set.union(*( self.defines = set.union(set(), *(
set(case.defines) for case in self.cases)) set(case.defines) for case in self.cases))
for k in config.keys(): for k in config.keys():
@@ -425,26 +425,27 @@ def compile(bench_paths, **args):
f.writeln(4*' '+'},') f.writeln(4*' '+'},')
f.writeln(4*' '+'.define_count = ' f.writeln(4*' '+'.define_count = '
'BENCH_IMPLICIT_DEFINE_COUNT+%d,' % len(suite.defines)) 'BENCH_IMPLICIT_DEFINE_COUNT+%d,' % len(suite.defines))
f.writeln(4*' '+'.cases = (const struct bench_case[]){') if suite.cases:
for case in suite.cases: f.writeln(4*' '+'.cases = (const struct bench_case[]){')
# create case structs for case in suite.cases:
f.writeln(8*' '+'{') # create case structs
f.writeln(12*' '+'.name = "%s",' % case.name) f.writeln(8*' '+'{')
f.writeln(12*' '+'.path = "%s",' % case.path) f.writeln(12*' '+'.name = "%s",' % case.name)
f.writeln(12*' '+'.flags = 0,') f.writeln(12*' '+'.path = "%s",' % case.path)
f.writeln(12*' '+'.permutations = %d,' f.writeln(12*' '+'.flags = 0,')
% len(case.permutations)) f.writeln(12*' '+'.permutations = %d,'
if case.defines: % len(case.permutations))
f.writeln(12*' '+'.defines ' if case.defines:
'= (const bench_define_t*)__bench__%s__defines,' f.writeln(12*' '+'.defines '
'= (const bench_define_t*)__bench__%s__defines,'
% (case.name))
if suite.if_ is not None or case.if_ is not None:
f.writeln(12*' '+'.filter = __bench__%s__filter,'
% (case.name))
f.writeln(12*' '+'.run = __bench__%s__run,'
% (case.name)) % (case.name))
if suite.if_ is not None or case.if_ is not None: f.writeln(8*' '+'},')
f.writeln(12*' '+'.filter = __bench__%s__filter,' f.writeln(4*' '+'},')
% (case.name))
f.writeln(12*' '+'.run = __bench__%s__run,'
% (case.name))
f.writeln(8*' '+'},')
f.writeln(4*' '+'},')
f.writeln(4*' '+'.case_count = %d,' % len(suite.cases)) f.writeln(4*' '+'.case_count = %d,' % len(suite.cases))
f.writeln('};') f.writeln('};')
f.writeln() f.writeln()
+25 -24
View File
@@ -174,7 +174,7 @@ class TestSuite:
# sort in case toml parsing did not retain order # sort in case toml parsing did not retain order
case_linenos.sort() case_linenos.sort()
cases = config.pop('cases') cases = config.pop('cases', {})
for (lineno, name), (nlineno, _) in it.zip_longest( for (lineno, name), (nlineno, _) in it.zip_longest(
case_linenos, case_linenos[1:], case_linenos, case_linenos[1:],
fillvalue=(float('inf'), None)): fillvalue=(float('inf'), None)):
@@ -214,7 +214,7 @@ class TestSuite:
args=args)) args=args))
# combine per-case defines # combine per-case defines
self.defines = set.union(*( self.defines = set.union(set(), *(
set(case.defines) for case in self.cases)) set(case.defines) for case in self.cases))
# combine other per-case things # combine other per-case things
@@ -436,29 +436,30 @@ def compile(test_paths, **args):
f.writeln(4*' '+'},') f.writeln(4*' '+'},')
f.writeln(4*' '+'.define_count = ' f.writeln(4*' '+'.define_count = '
'TEST_IMPLICIT_DEFINE_COUNT+%d,' % len(suite.defines)) 'TEST_IMPLICIT_DEFINE_COUNT+%d,' % len(suite.defines))
f.writeln(4*' '+'.cases = (const struct test_case[]){') if suite.cases:
for case in suite.cases: f.writeln(4*' '+'.cases = (const struct test_case[]){')
# create case structs for case in suite.cases:
f.writeln(8*' '+'{') # create case structs
f.writeln(12*' '+'.name = "%s",' % case.name) f.writeln(8*' '+'{')
f.writeln(12*' '+'.path = "%s",' % case.path) f.writeln(12*' '+'.name = "%s",' % case.name)
f.writeln(12*' '+'.flags = %s,' f.writeln(12*' '+'.path = "%s",' % case.path)
% (' | '.join(filter(None, [ f.writeln(12*' '+'.flags = %s,'
'TEST_REENTRANT' if case.reentrant else None])) % (' | '.join(filter(None, [
or 0)) 'TEST_REENTRANT' if case.reentrant else None]))
f.writeln(12*' '+'.permutations = %d,' or 0))
% len(case.permutations)) f.writeln(12*' '+'.permutations = %d,'
if case.defines: % len(case.permutations))
f.writeln(12*' '+'.defines ' if case.defines:
'= (const test_define_t*)__test__%s__defines,' f.writeln(12*' '+'.defines '
'= (const test_define_t*)__test__%s__defines,'
% (case.name))
if suite.if_ is not None or case.if_ is not None:
f.writeln(12*' '+'.filter = __test__%s__filter,'
% (case.name))
f.writeln(12*' '+'.run = __test__%s__run,'
% (case.name)) % (case.name))
if suite.if_ is not None or case.if_ is not None: f.writeln(8*' '+'},')
f.writeln(12*' '+'.filter = __test__%s__filter,' f.writeln(4*' '+'},')
% (case.name))
f.writeln(12*' '+'.run = __test__%s__run,'
% (case.name))
f.writeln(8*' '+'},')
f.writeln(4*' '+'},')
f.writeln(4*' '+'.case_count = %d,' % len(suite.cases)) f.writeln(4*' '+'.case_count = %d,' % len(suite.cases))
f.writeln('};') f.writeln('};')
f.writeln() f.writeln()