waf: Fix test module dependency check

This commit is contained in:
Chris Johns 2020-09-30 15:31:23 +10:00
parent 90a9fd66e0
commit d164b840c3
3 changed files with 22 additions and 11 deletions

View File

@ -608,13 +608,15 @@ class TestFragementComposer(BuildSystemComposer):
configTest=None,
runTest=True,
netTest=False,
extraLibs=[]):
extraLibs=[],
modules=[]):
self.testName = testName
self.fileFragments = fileFragments
self.configTest = configTest
self.runTest = runTest
self.netTest = netTest
self.extraLibs = extraLibs
self.modules = modules
def __str__(self):
return 'TEST: ' + self.testName
@ -625,7 +627,8 @@ class TestFragementComposer(BuildSystemComposer):
'files': self.fileFragments,
'run': self.runTest,
'net': self.netTest,
'libs': self.extraLibs
'libs': self.extraLibs,
'modules': self.modules,
}
@ -636,7 +639,8 @@ class TestIfHeaderComposer(TestFragementComposer):
fileFragments,
runTest=True,
netTest=False,
extraLibs=[]):
extraLibs=[],
modules=[]):
if headers is not list:
headers = [headers]
self.headers = headers
@ -645,7 +649,8 @@ class TestIfHeaderComposer(TestFragementComposer):
'header',
runTest=runTest,
netTest=netTest,
extraLibs=extraLibs)
extraLibs=extraLibs,
modules=modules)
def compose(self, path):
r = TestFragementComposer.compose(self, path)
@ -660,7 +665,8 @@ class TestIfLibraryComposer(TestFragementComposer):
fileFragments,
runTest=True,
netTest=False,
extraLibs=[]):
extraLibs=[],
modules=[]):
if libraries is not list:
libraries = [libraries]
self.libraries = libraries
@ -669,7 +675,8 @@ class TestIfLibraryComposer(TestFragementComposer):
'library',
runTest=runTest,
netTest=netTest,
extraLibs=extraLibs)
extraLibs=extraLibs,
modules=modules)
def compose(self, path):
r = TestFragementComposer.compose(self, path)
@ -990,12 +997,11 @@ class Module(object):
NoConverter(), assertSourceFile,
sourceFileBuildComposer)
def addTest(self, testFragementComposer, dependencies=[]):
def addTest(self, testFragementComposer):
self.files += [
File('user', testFragementComposer.testName, PathComposer(),
NoConverter(), NoConverter(), testFragementComposer)
]
self.dependencies += dependencies
def addDependency(self, dep):
if not isinstance(dep, str):

View File

@ -5333,8 +5333,8 @@ class tests(builder.Module):
def generate(self):
mm = self.manager
self.addTest(mm.generator['test']('epoch01', ['test_main'], extraLibs = ['rtemstest']))
self.addTest(mm.generator['test']('nfs01', ['test_main'], netTest = True),
['nfsv2'])
self.addTest(mm.generator['test']('nfs01', ['test_main'],
netTest = True, modules = ['nfsv2']))
self.addTest(mm.generator['test']('foobarclient', ['test_main'],
runTest = False, netTest = True))
self.addTest(mm.generator['test']('foobarserver', ['test_main'],

View File

@ -561,13 +561,18 @@ class Builder(builder.ModuleManager):
tests = []
if 'tests' in self.data:
tests = self.data['tests']['user']
enabled_modules = self.getEnabledModules()
for testName in sorted(tests):
test = tests[testName]['all']
test_source = []
libs = ['bsd', 'm', 'z', 'rtemstest']
for cfg in test:
build_test = True
if cfg != 'default':
for mod in test[cfg]['modules']:
if mod not in enabled_modules:
build_test = False
break
if build_test and cfg != 'default':
for c in cfg.split(' '):
if not bld.env['HAVE_%s' % (c)]:
build_test = False