[predef] Using predef-require with OR conditions
In a jamfile I would like to use predef-require in OR situatuations so that if any particular predef-definition is true my unit testing rule occurs, else it does not occur: import ../libs/predef/check/predef : require : predef-require ; run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n || other_predef_definiion ; The typical use case for this is to have a unit test for particular version(s) of a compiler or for all other versions of other compilers. Is this possible ?
On Sun, May 3, 2015 at 4:55 PM, Edward Diener
In a jamfile I would like to use predef-require in OR situatuations so that if any particular predef-definition is true my unit testing rule occurs, else it does not occur:
import ../libs/predef/check/predef : require : predef-require ;
run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n || other_predef_definiion ;
The typical use case for this is to have a unit test for particular version(s) of a compiler or for all other versions of other compilers.
Is this possible ?
It is possible, and it came up when I first introduced the feature, with some basic De Morgan's application: run some_test.cpp : : : [ predef-require "BOOST_COMP_SOME_COMPILER < n.n.n" "other_predef_def_negated" ] ; HTH -- -- Rene Rivera -- Grafik - Don't Assume Anything -- Robot Dreams - http://robot-dreams.net -- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail
On 5/3/2015 9:29 PM, Rene Rivera wrote:
On Sun, May 3, 2015 at 4:55 PM, Edward Diener
wrote: In a jamfile I would like to use predef-require in OR situatuations so that if any particular predef-definition is true my unit testing rule occurs, else it does not occur:
import ../libs/predef/check/predef : require : predef-require ;
run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n || other_predef_definiion ;
The typical use case for this is to have a unit test for particular version(s) of a compiler or for all other versions of other compilers.
Is this possible ?
It is possible, and it came up when I first introduced the feature, with some basic De Morgan's application:
run some_test.cpp : : : [ predef-require "BOOST_COMP_SOME_COMPILER < n.n.n" "other_predef_def_negated" ] ;
I do not see how this can work. Let's say I want to run some_test.cpp when either BOOST_COMP_SOME_COMPILER is version n.n.n or above OR when BOOST_COMP_SOME_COMPILER is not being used at all, ie. BOOST_COMP_SOME_COMPILER is equal to 0. How can that be done ?
On Sun, May 3, 2015 at 9:41 PM, Edward Diener
On 5/3/2015 9:29 PM, Rene Rivera wrote:
On Sun, May 3, 2015 at 4:55 PM, Edward Diener
wrote: In a jamfile I would like to use predef-require in OR situatuations so
that if any particular predef-definition is true my unit testing rule occurs, else it does not occur:
import ../libs/predef/check/predef : require : predef-require ;
run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n || other_predef_definiion ;
The typical use case for this is to have a unit test for particular version(s) of a compiler or for all other versions of other compilers.
Is this possible ?
It is possible, and it came up when I first introduced the feature, with some basic De Morgan's application:
run some_test.cpp : : : [ predef-require "BOOST_COMP_SOME_COMPILER < n.n.n" "other_predef_def_negated" ] ;
I do not see how this can work. Let's say I want to run some_test.cpp when either BOOST_COMP_SOME_COMPILER is version n.n.n or above OR when BOOST_COMP_SOME_COMPILER is not being used at all, ie. BOOST_COMP_SOME_COMPILER is equal to 0. How can that be done ?
Oops. I forgot that you would need to use the check rule, not the require rule: [ predef-check "BCSC != 0" "BCSC < n.n.n" : <build>no ] Which says: when BCSC is not 0 *and* BCSC < n.n.n, do not build/run. And hence, by De Morgan's, also says: when BCSC is 0 *or* BCSC >= n.n.n, build/run it. HTH -- -- Rene Rivera -- Grafik - Don't Assume Anything -- Robot Dreams - http://robot-dreams.net -- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail
On 5/4/2015 12:43 AM, Rene Rivera wrote:
On Sun, May 3, 2015 at 9:41 PM, Edward Diener
wrote: On 5/3/2015 9:29 PM, Rene Rivera wrote:
On Sun, May 3, 2015 at 4:55 PM, Edward Diener
wrote: In a jamfile I would like to use predef-require in OR situatuations so
that if any particular predef-definition is true my unit testing rule occurs, else it does not occur:
import ../libs/predef/check/predef : require : predef-require ;
run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n || other_predef_definiion ;
The typical use case for this is to have a unit test for particular version(s) of a compiler or for all other versions of other compilers.
Is this possible ?
It is possible, and it came up when I first introduced the feature, with some basic De Morgan's application:
run some_test.cpp : : : [ predef-require "BOOST_COMP_SOME_COMPILER < n.n.n" "other_predef_def_negated" ] ;
I do not see how this can work. Let's say I want to run some_test.cpp when either BOOST_COMP_SOME_COMPILER is version n.n.n or above OR when BOOST_COMP_SOME_COMPILER is not being used at all, ie. BOOST_COMP_SOME_COMPILER is equal to 0. How can that be done ?
Oops. I forgot that you would need to use the check rule, not the require rule:
[ predef-check "BCSC != 0" "BCSC < n.n.n" : <build>no ]
Which says: when BCSC is not 0 *and* BCSC < n.n.n, do not build/run. And hence, by De Morgan's, also says: when BCSC is 0 *or* BCSC >= n.n.n, build/run it.
I can understand that. Thanks !
participants (2)
-
Edward Diener
-
Rene Rivera