|
Boost Users : |
Subject: Re: [Boost-users] testing command-line interface using Boost.Test
From: Olaf Meeuwissen (olaf.meeuwissen_at_[hidden])
Date: 2011-10-03 02:02:06
Gennadiy Rozental <rogeeff_at_[hidden]> writes:
> Olaf Meeuwissen <olaf.meeuwissen <at> avasys.jp> writes:
>
>>
>> Gennadiy Rozental <rogeeff <at> gmail.com> writes:
>>
>> > Olaf Meeuwissen <olaf.meeuwissen <at> avasys.jp> writes:
>> >> My only problem now is that I have no clue how to get at or where to
>> >> look for the execution_monitor instance that I would need to change.
>> >
>> > You do not need execution_monitor instance. Yo ucan spacify runtime parameter
>> > using either environment variable or CLA --catch_system_error=no
>>
>> True, but I would like to do this only for those tests that need it.
>> That is, only for those tests that use the test fixture that provides
>> the my_system() functionality. So if I have
>
> 1) I'd personally split this module in two and run one with and another without
> catch_system_errors
I have considered that as well, but it seems a bit awkward to split
tests into two modules just because some of them for success and some of
them for failure. That said, even if I were to split them into two
modules, I'd still want a programmatic interface that allows me to set
this in the C++ sources. I'm using automake's `check` infra-structure
and specifying command-line arguments or environment variables on a per
module basis is a pain.
> 2) You can use boost::unit_test::unit_test_monitor singleton to manipulate these
> options at runtime. You'll have set and revert these values in fixture
I tried this but without any effect. Either alternative below in the
fixture's constructor yields the same result.
boost::unit_test::unit_test_monitor.p_catch_system_errors.set (true);
boost::unit_test::unit_test_monitor.p_catch_system_errors.set (false);
The results I'm getting for tests for the coreutils `false` and `true`
utilities look like:
Running 2 test cases...
Entering test suite "src::core"
Entering test case "test_false"
Running: false
unknown location(0): fatal error in "test_false": child has exited; pid: 12822; uid: 1000; exit value: 1
process.hh(117): last checkpoint: Running: false
Leaving test case "test_false"
Entering test case "test_true"
Running: true
core.cc(40): info: check run ("true", 0) passed
Leaving test case "test_true"
Leaving test suite "src::core"
Looks like something is catching and acting upon system errors before
unit_test_monitor gets a chance to do so. I think this happens in
execution_monitor::catch_signals() but am not sure.
Any hints would be appreciated. FTR, still using the Debian package for
1.46.1.
Thanks in advance,
-- Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION FSF Associate Member #1962 Help support software freedom http://www.fsf.org/jf?referrer=1962
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net