Boost logo

Boost :

Subject: Re: [boost] [Boost.Test] access to boost::unit_test::framework::master_test_suite().{argc, argv} outside from BOOST_TEST
From: Raffi Enficiaud (raffi.enficiaud_at_[hidden])
Date: 2017-04-03 06:47:41


Le 31/03/2017 à 21:22, Olaf Peter via Boost a écrit :
> 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

The datasets are creating static objects on file scope, that generate
the definition of the unit tests.

I believe you can achieve what you want here by loading the data from a
suite fixture associated to the dataset test case. Otherwise, bring the
topic to a trac issue.

Thanks,
Raffi


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