Boost logo

Boost :

Subject: [boost] [Boost.Test] access to boost::unit_test::framework::master_test_suite().{argc, argv} outside from BOOST_TEST
From: Olaf Peter (ope-devel_at_[hidden])
Date: 2017-03-31 19:22:34


Hello,

my test program uses boost.test datasets. I've wrote a filesystem loader
for the input and expected data. Now I run into the problem, that
boost::unit_test::framework::master_test_suite().{argc, argv} is only
setup inside the tests self. My loader isn't a test case ... I can check
it by using a simple mock, like

struct app_mock
{
     app_mock();

     int const argc;
     char** const argv;
};

app_mock::app_mock()
: argc(boost::unit_test::framework::master_test_suite().argc)
, argv(boost::unit_test::framework::master_test_suite().argv)
{ }

BOOST_AUTO_TEST_CASE( app_mocker )
{
     app_mock app;
     std::cout << "Count = " << app.argc << '\n';
     for(int i = 0; i != app.argc; i++)
         std::cout << "Arg = " << app.argv[i] << '\n';
}

$ my_test -- my_args

Count = 2

path/to/exe

my_args

these works, but as mentioned:

dataset_loader::dataset_loader(fs::path const& path)
{
     app_mock app;

     std::cout << "ARGC = " <<
boost::unit_test::framework::master_test_suite().argc << '\n';
     read_files(path);
}

is always zero.

How can I read the argc/argv values?

Thanks,

Olaf


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk