Le 27/01/2010 17:34, David Abrahams a écrit :
I'm not sure exactly what "enable the unit tests" means in this case.
Can you be explicit and/or preferably provide an illustrative patch?
As I'm a complete bjam noob, I made an attempt that is certainly clumsy
and/or inelegant.
The idea would be to conditionally compile/run the test, the condition
being the current toolset is in a given set of toolsets (currently only
'msvc' toolset).
In the attached patch, I conditionnally define
'BOOST_PYTHON_TEST_ENABLE' on 'msvc' toolset, and I modified the tests
to use calling conventions only if 'BOOST_PYTHON_TEST_ENABLE' if defined.
I suppose that there's a way to instruct bjam to conditionally
compile/run a test, that would be more clear, and would prevent to
change the tests.
What do you think ?
Cheers,
Nicolas.
Index: calling_conventions.cpp
===================================================================
--- calling_conventions.cpp (revision 59329)
+++ calling_conventions.cpp (working copy)
@@ -79,52 +79,60 @@
namespace BOOST_PP_CAT(test, TESTED_CALLING_CONVENTION) {
- long TESTED_CALLING_CONVENTION f_0()
+# if defined(BOOST_PYTHON_TEST_ENABLE)
+# define ACTUAL_CALLING_CONVENTION TESTED_CALLING_CONVENTION
+# else
+ // we explicitly revert calling convention to default, as we are testing an
+ // unsupported compiler
+# define ACTUAL_CALLING_CONVENTION
+# endif // defined(BOOST_PYTHON_TEST_ENABLE)
+
+ long ACTUAL_CALLING_CONVENTION f_0()
{
return 17041L;
}
- long TESTED_CALLING_CONVENTION f_1(long a)
+ long ACTUAL_CALLING_CONVENTION f_1(long a)
{
return a;
}
- long TESTED_CALLING_CONVENTION f_2(long a, long b)
+ long ACTUAL_CALLING_CONVENTION f_2(long a, long b)
{
return a + 10 * b;
}
- long TESTED_CALLING_CONVENTION f_3(long a, long b, long c)
+ long ACTUAL_CALLING_CONVENTION f_3(long a, long b, long c)
{
return a + 10 * b + 100 * c;
}
- long TESTED_CALLING_CONVENTION f_4(long a, long b, long c, long d)
+ long ACTUAL_CALLING_CONVENTION f_4(long a, long b, long c, long d)
{
return a + 10 * b + 100 * c + 1000 * d;
}
- long TESTED_CALLING_CONVENTION f_5(long a, long b, long c, long d, long e)
+ long ACTUAL_CALLING_CONVENTION f_5(long a, long b, long c, long d, long e)
{
return a + 10 * b + 100 * c + 1000 * d + 10000 * e;
}
- long TESTED_CALLING_CONVENTION f_6(long a, long b, long c, long d, long e,
long f)
+ long ACTUAL_CALLING_CONVENTION f_6(long a, long b, long c, long d, long e,
long f)
{
return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f;
}
- long TESTED_CALLING_CONVENTION f_7(long a, long b, long c, long d, long e,
long f, long g)
+ long ACTUAL_CALLING_CONVENTION f_7(long a, long b, long c, long d, long e,
long f, long g)
{
return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f +
1000000 * g;
}
- long TESTED_CALLING_CONVENTION f_8(long a, long b, long c, long d, long e,
long f, long g, long h)
+ long ACTUAL_CALLING_CONVENTION f_8(long a, long b, long c, long d, long e,
long f, long g, long h)
{
return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f +
1000000 * g + 10000000 * h;
}
- long TESTED_CALLING_CONVENTION f_9(long a, long b, long c, long d, long e,
long f, long g, long h, long i)
+ long ACTUAL_CALLING_CONVENTION f_9(long a, long b, long c, long d, long e,
long f, long g, long h, long i)
{
return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f +
1000000 * g + 10000000 * h + 100000000 * i;
}
Index: calling_conventions_mf.cpp
===================================================================
--- calling_conventions_mf.cpp (revision 59329)
+++ calling_conventions_mf.cpp (working copy)
@@ -79,38 +79,46 @@
namespace BOOST_PP_CAT(test, TESTED_CALLING_CONVENTION) {
+# if defined(BOOST_PYTHON_TEST_ENABLE)
+# define ACTUAL_CALLING_CONVENTION TESTED_CALLING_CONVENTION
+# else
+ // we explicitly revert calling convention to default, as we are testing an
+ // unsupported compiler
+# define ACTUAL_CALLING_CONVENTION
+# endif // defined(BOOST_PYTHON_TEST_ENABLE)
+
struct X
{
mutable unsigned int hash;
X(): hash(0) {}
- void TESTED_CALLING_CONVENTION f0() { f1(17); }
- void TESTED_CALLING_CONVENTION g0() const { g1(17); }
+ void ACTUAL_CALLING_CONVENTION f0() { f1(17); }
+ void ACTUAL_CALLING_CONVENTION g0() const { g1(17); }
- void TESTED_CALLING_CONVENTION f1(int a1) { hash = (hash * 17041 + a1) %
32768; }
- void TESTED_CALLING_CONVENTION g1(int a1) const { hash = (hash * 17041 +
a1 * 2) % 32768; }
+ void ACTUAL_CALLING_CONVENTION f1(int a1) { hash = (hash * 17041 + a1) %
32768; }
+ void ACTUAL_CALLING_CONVENTION g1(int a1) const { hash = (hash * 17041 +
a1 * 2) % 32768; }
- void TESTED_CALLING_CONVENTION f2(int a1, int a2) { f1(a1); f1(a2); }
- void TESTED_CALLING_CONVENTION g2(int a1, int a2) const { g1(a1); g1(a2); }
+ void ACTUAL_CALLING_CONVENTION f2(int a1, int a2) { f1(a1); f1(a2); }
+ void ACTUAL_CALLING_CONVENTION g2(int a1, int a2) const { g1(a1); g1(a2); }
- void TESTED_CALLING_CONVENTION f3(int a1, int a2, int a3) { f2(a1, a2);
f1(a3); }
- void TESTED_CALLING_CONVENTION g3(int a1, int a2, int a3) const { g2(a1,
a2); g1(a3); }
+ void ACTUAL_CALLING_CONVENTION f3(int a1, int a2, int a3) { f2(a1, a2);
f1(a3); }
+ void ACTUAL_CALLING_CONVENTION g3(int a1, int a2, int a3) const { g2(a1,
a2); g1(a3); }
- void TESTED_CALLING_CONVENTION f4(int a1, int a2, int a3, int a4) { f3(a1,
a2, a3); f1(a4); }
- void TESTED_CALLING_CONVENTION g4(int a1, int a2, int a3, int a4) const {
g3(a1, a2, a3); g1(a4); }
+ void ACTUAL_CALLING_CONVENTION f4(int a1, int a2, int a3, int a4) { f3(a1,
a2, a3); f1(a4); }
+ void ACTUAL_CALLING_CONVENTION g4(int a1, int a2, int a3, int a4) const {
g3(a1, a2, a3); g1(a4); }
- void TESTED_CALLING_CONVENTION f5(int a1, int a2, int a3, int a4, int a5)
{ f4(a1, a2, a3, a4); f1(a5); }
- void TESTED_CALLING_CONVENTION g5(int a1, int a2, int a3, int a4, int a5)
const { g4(a1, a2, a3, a4); g1(a5); }
+ void ACTUAL_CALLING_CONVENTION f5(int a1, int a2, int a3, int a4, int a5)
{ f4(a1, a2, a3, a4); f1(a5); }
+ void ACTUAL_CALLING_CONVENTION g5(int a1, int a2, int a3, int a4, int a5)
const { g4(a1, a2, a3, a4); g1(a5); }
- void TESTED_CALLING_CONVENTION f6(int a1, int a2, int a3, int a4, int a5,
int a6) { f5(a1, a2, a3, a4, a5); f1(a6); }
- void TESTED_CALLING_CONVENTION g6(int a1, int a2, int a3, int a4, int a5,
int a6) const { g5(a1, a2, a3, a4, a5); g1(a6); }
+ void ACTUAL_CALLING_CONVENTION f6(int a1, int a2, int a3, int a4, int a5,
int a6) { f5(a1, a2, a3, a4, a5); f1(a6); }
+ void ACTUAL_CALLING_CONVENTION g6(int a1, int a2, int a3, int a4, int a5,
int a6) const { g5(a1, a2, a3, a4, a5); g1(a6); }
- void TESTED_CALLING_CONVENTION f7(int a1, int a2, int a3, int a4, int a5,
int a6, int a7) { f6(a1, a2, a3, a4, a5, a6); f1(a7); }
- void TESTED_CALLING_CONVENTION g7(int a1, int a2, int a3, int a4, int a5,
int a6, int a7) const { g6(a1, a2, a3, a4, a5, a6); g1(a7); }
+ void ACTUAL_CALLING_CONVENTION f7(int a1, int a2, int a3, int a4, int a5,
int a6, int a7) { f6(a1, a2, a3, a4, a5, a6); f1(a7); }
+ void ACTUAL_CALLING_CONVENTION g7(int a1, int a2, int a3, int a4, int a5,
int a6, int a7) const { g6(a1, a2, a3, a4, a5, a6); g1(a7); }
- void TESTED_CALLING_CONVENTION f8(int a1, int a2, int a3, int a4, int a5,
int a6, int a7, int a8) { f7(a1, a2, a3, a4, a5, a6, a7); f1(a8); }
- void TESTED_CALLING_CONVENTION g8(int a1, int a2, int a3, int a4, int a5,
int a6, int a7, int a8) const { g7(a1, a2, a3, a4, a5, a6, a7); g1(a8); }
+ void ACTUAL_CALLING_CONVENTION f8(int a1, int a2, int a3, int a4, int a5,
int a6, int a7, int a8) { f7(a1, a2, a3, a4, a5, a6, a7); f1(a8); }
+ void ACTUAL_CALLING_CONVENTION g8(int a1, int a2, int a3, int a4, int a5,
int a6, int a7, int a8) const { g7(a1, a2, a3, a4, a5, a6, a7); g1(a8); }
};
} // namespace BOOST_PP_CAT(test, TESTED_CALLING_CONVENTION)
Index: Jamfile.v2
===================================================================
--- Jamfile.v2 (revision 59329)
+++ Jamfile.v2 (working copy)
@@ -184,8 +184,18 @@
# bpl-test bienstman5 ;
# }
-[ bpl-test calling_conventions ]
-[ bpl-test calling_conventions_mf ]
+[ bpl-test calling_conventions
+ : # files
+ : # requirements
+ # additional calling conventions are currently only tests on msvc compilers
+ <toolset>msvc:<define>BOOST_PYTHON_TEST_ENABLE
+]
+[ bpl-test calling_conventions_mf
+ : # files
+ : # requirements
+ # additional calling conventions are currently only tests on msvc compilers
+ <toolset>msvc:<define>BOOST_PYTHON_TEST_ENABLE
+]
# --- unit tests of library components ---
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig