Made Boost unit testing framework work and added a test.

pull/34/head
Jussi Pakkanen 10 years ago
parent 9b79c635f8
commit ed160fbbe4
  1. 14
      dependencies.py
  2. 3
      test cases/frameworks/1 boost/meson.build
  3. 10
      test cases/frameworks/1 boost/unit_test.cpp

@ -266,6 +266,11 @@ class ExternalLibrary(Dependency):
return []
class BoostDependency(Dependency):
# Some boost libraries have different names for
# their sources and libraries. This dict maps
# between the two.
name2lib = {'test' : 'unit_test_framework'}
def __init__(self, kwargs):
Dependency.__init__(self)
self.name = 'boost'
@ -372,12 +377,21 @@ class BoostDependency(Dependency):
# pkg-config returns.
args.append('-L' + os.path.join(self.boost_root, 'lib'))
for module in self.requested_modules:
module = BoostDependency.name2lib.get(module, module)
if module in self.lib_modules or module in self.lib_modules_mt:
linkcmd = '-lboost_' + module
args.append(linkcmd)
# FIXME a hack, but Boost's testing framework has a lot of
# different options and it's hard to determine what to do
# without feedback from actual users. Update this
# as we get more bug reports.
if module == 'unit_testing_framework':
args.append('-lboost_test_exec_monitor')
elif module + '-mt' in self.lib_modules_mt:
linkcmd = '-lboost_' + module + '-mt'
args.append(linkcmd)
if module == 'unit_testing_framework':
args.append('-lboost_test_exec_monitor-mt')
return args
def get_sources(self):

@ -10,9 +10,12 @@ endif
nolinkdep = dependency('boost', modules: 'utility')
linkdep = dependency('boost', modules : ['thread', 'system'])
testdep = dependency('boost', modules : 'test')
nolinkexe = executable('nolinkedexe', 'nolinkexe.cc', dependencies : nolinkdep)
linkexe = executable('linkedexe', 'linkexe.cc', dependencies : linkdep)
unitexe = executable('utf', 'unit_test.cpp', dependencies: testdep)
test('Boost nolinktext', nolinkexe)
test('Boost linktext', linkexe)
test('Boost UTF test', unitexe)

@ -0,0 +1,10 @@
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "MesonTest"
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(m_test) {
int x = 2+2;
BOOST_CHECK(true);
BOOST_CHECK_EQUAL(x, 4);
}
Loading…
Cancel
Save