Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

libs/python/test/Jamfile

#
# To run all tests quietly: jam test
# To run all tests with verbose output: jam -sPYTHON_TEST_ARGS=-v test
#
subproject libs/python/test ;

# bring in the rules for python and testing
import python ;

if [ check-python-config ]
{

# A bug in the Win32 intel compilers causes compilation of one of our
# tests to take forever when debug symbols are enabled. This rule
# turns them off when added to the requirements section
rule turn-off-intel-debug-symbols ( toolset variant : properties * )
{
    if $(NT) && [ MATCH (.*intel.*) : $(toolset) ]
    {
        properties = [ difference $(properties) : <debug-symbols>on ] <debug-symbols>off ;
    }
    return $(properties) ;
}

template py-unit-test
  :
  : $(PYTHON_PROPERTIES) <define>BOOST_PYTHON_SUPPRESS_REGISTRY_INITIALIZATION
    [ difference $(PYTHON_PROPERTIES) : <define>BOOST_PYTHON_DYNAMIC_LIB ] <define>BOOST_PYTHON_STATIC_LIB
      ;
  
# Convenience rule makes declaring tests faster
rule bpl-test ( name ? : files * : requirements * )
{
    files ?= $(name).py $(name).cpp ;

    local modules ;
    local py ;
    for local f in $(files)
    {
        if $(f:S) = .py
        {
            if $(py)
            {
                EXIT too many python drivers specified: "$(py)" "$(f)" ;
            }
            py = $(f) ;
        }
    }

    name ?= $(py:S=) ;

    for local f in $(files)
    {
        if $(f:S) != .py
        {
            local m = $(f:S=) ;

            if $(m) = $(py:S=)
            {
                m = $(name) ;

                if $(m) = $(py:S=)
                {
                    m = $(m)_ext ;
                }
            }
            extension $(m) : $(f) <template>../build/extension : $(requirements) ;
            modules += $(m) ;
        }
    }

    return [ boost-python-runtest $(name) : $(py) <pyd>$(modules) : $(requirements) : : -v ] ;
}

test-suite python
  :
   [
    run ../test/embedding.cpp <lib>../build/boost_python
      : # program args
      : # input files
      : # requirements
      $(PYTHON_PROPERTIES)
        <define>BOOST_PYTHON_STATIC_LIB
        <define>BOOST_PYTHON_STATIC_MODULE
        <library-path>$(PYTHON_LIB_PATH)
          <$(gcc-compilers)><debug-python><library-path>$(CYGWIN_PYTHON_DEBUG_DLL_PATH)
            <$(gcc-compilers)><*><library-path>$(CYGWIN_PYTHON_DLL_PATH)
              <find-library>$(PYTHON_EMBEDDED_LIBRARY)
  ]

[
bpl-test crossmod_exception
  : crossmod_exception.py crossmod_exception_a.cpp crossmod_exception_b.cpp
]

[ bpl-test injected ]
[ bpl-test properties ]
[ bpl-test return_arg ]
[ bpl-test staticmethod ]
[ bpl-test shared_ptr ]
[ bpl-test polymorphism ]
[ bpl-test polymorphism2 ]
[ bpl-test auto_ptr ]
[ bpl-test minimal ]
[ bpl-test args ]
[ bpl-test numpy ]
[ bpl-test enum ]
[ bpl-test exception_translator ]
[ bpl-test pearu1 : test_cltree.py cltree.cpp ]
[ bpl-test try : newtest.py m1.cpp m2.cpp ]
[ bpl-test const_argument ]

[ bpl-test keywords : keywords.cpp keywords_test.py ]

[ extension builtin_converters : test_builtin_converters.cpp <template>../build/extension ]
[ boost-python-runtest builtin_converters : test_builtin_converters.py <pyd>builtin_converters ]

[ bpl-test test_pointer_adoption ]
[ bpl-test operators ]
[ bpl-test callbacks ]
[ bpl-test defaults ]

[ bpl-test object ]
[ bpl-test list ]
[ bpl-test long ]
[ bpl-test dict ]
[ bpl-test tuple ]
[ bpl-test str ]
[ bpl-test slice ]

[ bpl-test virtual_functions ]
[ bpl-test back_reference ]
[ bpl-test implicit ]
[ bpl-test data_members ]

[ bpl-test ben_scott1 ]

[ bpl-test bienstman1 ]
[ bpl-test bienstman2 ]
[ bpl-test bienstman3 ]

[ bpl-test multi_arg_constructor
  : # files
  : # requirements
  turn-off-intel-debug-symbols ] # debug symbols slow the build down too much

[ bpl-test iterator : iterator.py iterator.cpp input_iterator.cpp ]

[ bpl-test extract ]

[ bpl-test opaque ]

[ bpl-test pickle1 ]
[ bpl-test pickle2 ]
[ bpl-test pickle3 ]
[ bpl-test pickle4 ]

[ bpl-test nested ]

[ bpl-test docstring ]

[ bpl-test vector_indexing_suite ]

[ extension map_indexing_suite_ext
    : map_indexing_suite.cpp int_map_indexing_suite.cpp <template>../build/extension ]
[ boost-python-runtest 
    map_indexing_suite : map_indexing_suite.py <pyd>map_indexing_suite_ext ]

# if $(TEST_BIENSTMAN_NON_BUGS)
# {
#     bpl-test bienstman4 ;
#     bpl-test bienstman5 ;
# }

# --- unit tests of library components ---

[ run indirect_traits_test.cpp ]
[ run destroy_test.cpp ]
[ run pointer_type_id_test.cpp  <lib>../../test/build/boost_test_exec_monitor <template>py-unit-test ]
[ run bases.cpp  <template>py-unit-test ]
[ run if_else.cpp ]
[ run pointee.cpp  <template>py-unit-test ]
[ run result.cpp ]

[ compile string_literal.cpp ]
[ compile borrowed.cpp  <template>py-unit-test ]
[ compile object_manager.cpp   <template>py-unit-test ]
[ compile copy_ctor_mutates_rhs.cpp   <template>py-unit-test ]

[ run upcast.cpp  <lib>../../test/build/boost_test_exec_monitor  <template>py-unit-test ]
  
[ compile select_holder.cpp <template>py-unit-test ]
  
[ run select_from_python_test.cpp ../src/converter/type_id.cpp
  <lib>../../test/build/boost_test_exec_monitor <template>py-unit-test ]

[ compile select_arg_to_python_test.cpp <template>py-unit-test ]

[ compile-fail ./raw_pyobject_fail1.cpp <template>py-unit-test ]
[ compile-fail ./raw_pyobject_fail2.cpp <template>py-unit-test ]
[ compile-fail ./as_to_python_function.cpp <template>py-unit-test ]
[ compile-fail ./object_fail1.cpp <template>py-unit-test ]
  ;
}