swig/Examples/test-suite/python
Thomas Maslach de6b433cb1 Fix Python crash when using -threads iterating containers
Also fixes li_std_vector_enum testcase when run with -threads.

Patch supplied on swig-devel mailing list on 12 Sep with details...

==============================================
I just wanted to mention that I found a crash issue in bug..

I am using SWIG 2.0.11 with python and have –threads enabled.  I have a C++ std::vector that I instantiate in SWIG with %template.  I also have a method in a class that returns this vector.  I also include std_vector.i, btw..

When I iterate like so:

children = Action.getActionList()
for child in children:
  pass

Everything is fine..

When I iterate like this:

for child in Action.getActionList()
  pass

Product crashes.

The problem is the following.  This code gets called first:

SWIGINTERN PyObject *_wrap_delete_SwigPyIterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
  PyObject *resultobj = 0;
  swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  PyObject * obj0 = 0 ;

  if(!PyArg_UnpackTuple(args,(char *)"delete_SwigPyIterator",1,1,&obj0)) SWIG_fail;
  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_DISOWN |  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SwigPyIterator" "', argument " "1"" of type '" "swig::SwigPyIterator *""'");
  }
  arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1);
  {
    SWIG_PYTHON_THREAD_BEGIN_ALLOW;
    delete arg1;
    SWIG_PYTHON_THREAD_END_ALLOW;
  }
  resultobj = SWIG_Py_Void();
  return resultobj;
fail:
  return NULL;
}

Note the SWIG_PYTHON_THREAD_BEGIN_ALLOW/END_ALLOW. In between those two statements, we delete arg1.  That in turn will eventually end up in this code:

namespace swig {
  class SwigPtr_PyObject {
  protected:
    PyObject *_obj;

  public:
    … snip! …
    ~SwigPtr_PyObject()
    {
      Py_XDECREF(_obj);
    }

Uh-oh!  We call Py_XDECREF when we aren’t supposed to because we are in a SWIG_PYTHON_THREAD_BEGIN_ALLOW/END_ALLOW section!

This takes care of the issue:

namespace swig {
  class SwigPtr_PyObject {
  protected:
    PyObject *_obj;

  public:
    … snip! …
    ~SwigPtr_PyObject()
    {
      SWIG_PYTHON_THREAD_BEGIN_BLOCK;
      Py_XDECREF(_obj);
      SWIG_PYTHON_THREAD_END_BLOCK;
    }

There are several other methods in this class that use the Python API, but don’t have the BEGIN/END block defined.  I’m not sure if they are required for all of them, but I believe they are..

I have attached a modified pyclasses.swg with what I believe are the correct changes.  This code is from 2.0.11, but as far as I can tell, it’s the same as what is in 3.0.2…

Apologies for not doing more here (making/running tests, getting it in the code repository, etc..), but I’m under some pressure to get some unrelated things done…
2014-09-23 22:33:25 +01:00
..
Makefile.in Check multi-module examples. Dont use sed. 2014-06-10 08:59:55 +02:00
README Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
abstract_access_runme.py Added test case just to check a few things with protected/private virtual methods 2003-12-09 17:50:29 +00:00
abstract_typedef2_runme.py Now, this is a real broken case 2003-02-21 09:12:45 +00:00
abstract_typedef_runme.py The great merge 2002-11-30 22:01:28 +00:00
abstract_virtual_runme.py Added test that shows a problem in the 'abstract detection method' when virtual base classes are used (in different order) 2003-02-21 21:03:05 +00:00
argcargvtest_runme.py A slew of changes based on William Fulton's code review. 2011-03-29 06:57:02 +00:00
array_member_runme.py new test 2003-05-29 18:30:10 +00:00
arrays_global_runme.py fix arrays_global and add more vector tests 2004-08-25 05:36:02 +00:00
autodoc_runme.py Fix Python version checking in Python tests 2013-05-24 18:57:26 +01:00
callback_runme.py fixes for python 2.1 2006-02-23 09:08:49 +00:00
char_binary_runme.py Added some missing multi-argument typemaps: (char *STRING, size_t LENGTH) and (char *STRING, int LENGTH) - Java patch is from Volker Grabsch. Elements of the primitive_types.i testcase for this moved into char_binary.i. Documentation for this enhanced. 2011-01-14 19:06:43 +00:00
class_ignore_runme.py The great merge 2002-11-30 22:01:28 +00:00
class_scope_weird_runme.py added more cases 2005-10-17 13:43:35 +00:00
compactdefaultargs_runme.py test compactdefaultargs feature 2005-09-30 21:32:12 +00:00
complextest_runme.py fix range problem for complex<float>, found by szabi@mplayerhq.hu 2004-03-29 21:37:09 +00:00
constover_runme.py The great merge 2002-11-30 22:01:28 +00:00
constructor_copy_runme.py generate implicit copyctor, add -nocopyctor, and clarify the -nodefault, -nodefaultctor, -nodefautldtor options 2005-12-22 06:26:26 +00:00
constructor_rename_runme.py fix regression of Python constructor renaming introduced by py3k work 2010-04-25 14:07:14 +00:00
contract_runme.py Patch #1992756 from Colin McDonald - %contract not working for classes in namespace 2009-01-10 01:15:03 +00:00
cpp11_alternate_function_syntax_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_decltype_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_function_objects_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_initializer_list_extend_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_initializer_list_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_null_pointer_constant_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_raw_string_literals_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_result_of_runme.py C++11 result_of testcase 2014-03-14 01:57:16 +00:00
cpp11_rvalue_reference_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_thread_local_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp11_type_traits_runme.py Add metaprogramming type_traits example in C++11 documentation 2014-03-14 01:57:16 +00:00
cpp11_uniform_initialization_runme.py Rename all C++0x to C++11 and cpp0x to cpp11 2013-10-07 20:37:00 +01:00
cpp_enum_runme.py fix anon enums 2004-05-28 02:10:02 +00:00
cpp_namespace_runme.py Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
cpp_static_runme.py Fix SF#2552048. Remove the 'self' parameter in Python proxy code for static member function. 2009-01-31 13:38:39 +00:00
default_arg_values_runme.py Fix SF #3194294 - corner case bug when 'NULL' is used as the default value for a primitive type parameter in a method declaration. 2011-03-09 22:31:08 +00:00
default_args_runme.py fixes for python 2.1 2006-02-23 09:08:49 +00:00
default_constructor_runme.py Final merge from trunk 2011-04-03 07:37:35 +00:00
director_abstract_runme.py fixes for python 2.1 2006-02-23 09:13:16 +00:00
director_alternating_runme.py [D] Fixed a bug in the loop breaking code for directors leading to a superclass implementation erroneously being called. 2011-01-08 21:05:49 +00:00
director_basic_runme.py change runtime examples to run with old python versions 2006-01-11 23:06:15 +00:00
director_classic_runme.py Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
director_default_runme.py added missing test 2004-11-08 06:12:07 +00:00
director_detect_runme.py change runtime examples to run with old python versions 2006-01-11 23:13:23 +00:00
director_enum_runme.py add tests for director+enums 2004-10-08 09:15:38 +00:00
director_exception_runme.py Final merge from trunk 2011-04-03 07:37:35 +00:00
director_extend_runme.py #1506840 testcase - directors with virtual extended methods 2006-09-23 00:00:58 +00:00
director_finalizer_runme.py add support for multi-inheritance at the python side and performance tunings 2005-11-07 12:40:16 +00:00
director_frob_runme.py also, change the module name to director_frob 2004-01-22 00:52:06 +00:00
director_nested_runme.py fixes for python 2.1 2006-02-23 09:08:49 +00:00
director_profile_runme.py add director profile test 2005-11-21 20:28:18 +00:00
director_protected_runme.py Any 'using' statements in the protected section of a class were previously ignored with dirprot mode, certainly with Java and C#. Also directors - a call to a method being defined in the base class, not overridden in a subcalss, but again overridden in a class derived from the first subclass was not being dispatched correcly to the most derived class - affecting non-scripting languages. Fix for C# is based on recent fix for D. 2011-02-01 07:02:50 +00:00
director_stl_runme.py new tests for string and directors+containers 2004-03-18 21:30:24 +00:00
director_string_runme.py remove debug 2006-05-05 23:24:58 +00:00
director_thread_runme.py Fix problem caused by thread not properly terminated in director_thread test. This was cause crash in Python 3 2009-03-19 16:56:01 +00:00
director_unroll_runme.py fix comparison 2005-11-21 20:31:55 +00:00
director_wstring_runme.py add the runtime case 2005-10-21 11:01:40 +00:00
disown_runme.py add support for accessing 'self.thisown' 2005-12-09 01:12:26 +00:00
dynamic_cast_runme.py The great merge 2002-11-30 22:01:28 +00:00
empty_runme.py massive typemap unification 2005-10-18 13:24:15 +00:00
enum_forward_runme.py Fix C enum forward declarations in some target languages (notably Java) 2012-05-01 18:44:22 +00:00
enum_template_runme.py strange cache effect, disable by now, see enum_template.i 2004-10-06 08:26:58 +00:00
enums_runme.py fix my perl keyword warning 2010-05-07 18:13:15 +00:00
exception_order_runme.py Final merge from trunk 2011-04-03 07:37:35 +00:00
extend_placement_runme.py default args added to test 2004-10-16 20:48:10 +00:00
extend_template_ns_runme.py The great merge 2002-11-30 22:01:28 +00:00
extend_template_runme.py The great merge 2002-11-30 22:01:28 +00:00
extend_variable_runme.py add Luigi's static patch for extended variables 2005-10-18 14:04:14 +00:00
extern_c_runme.py Fix #2310483 - function pointer typedef within extern C block. 2009-11-14 15:55:23 +00:00
file_test_runme.py Fix Python version checking in Python tests 2013-05-24 18:57:26 +01:00
friends_runme.py These is the current tests for the friend function support. 2003-12-20 07:46:27 +00:00
funcptr_cpp_runme.py Fix wrapping of function pointers and member function pointers when the function returns by reference 2010-07-16 18:45:22 +00:00
fvirtual_runme.py variable name changes to remove php keywords 2008-06-24 20:11:46 +00:00
global_functions_runme.py Add testcase and info on python -builtin missing argument count check 2014-03-01 16:44:01 +00:00
global_namespace_runme.py Fix unary scope operator (::) (global scope) regression introduced in 2.0.0. The mangled symbol names were incorrect, sometimes resulting in types being incorrectly treated as opaque types. 2010-10-13 05:48:59 +00:00
global_ns_arg_runme.py Rename symbol in test case as the name is clashing in some way with new versions of Octave (3.2.4) 2011-02-19 16:20:38 +00:00
global_vars_runme.py Add runtime test for commit 7a96fba836 2014-03-31 19:29:19 +01:00
grouping_runme.py This commit contains all changes to the regression tests which 2011-01-30 04:13:58 +00:00
hugemod.pl Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
iadd_runme.py remove svn:executable property 2010-07-16 17:39:11 +00:00
implicittest_runme.py %implicitconv is improved for overloaded functions. 2013-08-28 20:30:46 +01:00
import_nomodule_runme.py fix memory leaks 2005-12-16 01:21:59 +00:00
import_stl_runme.py new %import test for vector 2011-04-11 21:28:06 +00:00
imports_runme.py fix import order 2005-08-23 10:41:29 +00:00
inctest_runme.py Added test for %import 2003-12-11 21:33:34 +00:00
inherit_missing_runme.py fix memory leaks 2005-12-16 01:21:59 +00:00
inout_runme.py add callback and inout tests 2004-10-02 01:33:38 +00:00
inplaceadd_runme.py fixes and more cases, as usual 2005-10-31 10:11:29 +00:00
input_runme.py fix typecheck for INPUT* type 2004-12-20 10:19:54 +00:00
keyword_rename_runme.py Added a test case for keyword renaming. 2008-06-07 11:20:07 +00:00
kwargs_feature_runme.py Rename python_kwargs testcase to kwargs_feature. Add kwargs_feature to Ruby and fix Ruby warnings when using kwargs feature. Add %kwargs macro for Ruby 2011-06-13 17:38:08 +00:00
langobj_runme.py fix memory PyObject * typemaps to avoid memory leaks with iterators 2006-01-11 23:05:12 +00:00
li_attribute_runme.py Add %attributeval and %attributestring to attribute.swg library 2009-02-13 22:42:45 +00:00
li_attribute_template_runme.py Add test case for attributes with moderately complex templates 2013-05-25 00:44:36 +01:00
li_boost_shared_ptr_bits_runme.py Fix #3024875 - shared_ptr of classes with non-public destructors. This also fixes the 'unref' feature when used on classes with non-public destructors. 2010-07-07 18:19:01 +00:00
li_boost_shared_ptr_runme.py add test for inheritance of 3 classes deep which exposes a problem in the python shared_ptr wrappers. Manually added the %types for now. 2008-12-06 17:10:53 +00:00
li_boost_shared_ptr_template_runme.py Remove run tests which should have been done in rev 12953 (reverting %shared_ptr fixes with typedef) 2012-04-14 17:01:39 +00:00
li_carrays_runme.py finishing the first stage of the typemap unification scheme, fixing issues with gcc and valgrind 2005-10-20 09:47:56 +00:00
li_cdata_runme.py Fix memmove regression 2009-09-11 18:53:14 +00:00
li_cmalloc_runme.py add more cases 2005-10-19 10:56:37 +00:00
li_cpointer_runme.py add more cases 2005-10-19 10:56:37 +00:00
li_cstring_runme.py massive typemap unification 2005-10-18 13:24:15 +00:00
li_cwstring_runme.py adding test for binary buffer 2005-09-06 06:31:25 +00:00
li_factory_runme.py fix for python 2.1 2006-03-05 06:36:55 +00:00
li_implicit_runme.py massive typemap unification 2005-10-18 13:24:15 +00:00
li_std_auto_ptr_runme.py Add std_auto_ptr.i defining typemaps for returning std::auto_ptr<>. 2013-12-03 23:45:20 +01:00
li_std_carray_runme.py change runtime examples to run with old python versions 2006-01-11 23:06:15 +00:00
li_std_containers_int_runme.py Fix Python version checking in Python tests 2013-05-24 18:57:26 +01:00
li_std_except_as_class_runme.py added python test case li_std_except_as_class for SF bug 1295 2013-01-04 15:43:44 +01:00
li_std_map_member_runme.py Bug 1498929: Access to member fields of map elements. 2011-04-25 21:12:33 +00:00
li_std_map_runme.py std::map improvements based on patch from Yuval Baror 2009-05-22 06:10:52 +00:00
li_std_pair_extra_runme.py modify test-suite (barring python atm) to not rely on the -I path to find the input .i file - removes the new warning 125 and sets up the test-suite for testing with ccache. This change required the use of -outcurrentdir and moving the .i files from the language subdirectories to the directory above along with some .i file name changes. 2008-11-26 21:35:15 +00:00
li_std_pair_using_runme.py Fix using declarations and templates. %template was putting the 2012-08-04 20:24:22 +00:00
li_std_set_runme.py A slew of changes based on William Fulton's code review. 2011-03-29 06:57:02 +00:00
li_std_stream_runme.py change runtime examples to run with old python versions 2006-01-11 23:06:15 +00:00
li_std_string_extra_runme.py Final merge from trunk 2011-04-03 07:37:35 +00:00
li_std_vector_enum_runme.py Fix #3475492 - iterating through std::vector wrappers of enumerations. 2012-03-13 07:10:24 +00:00
li_std_vector_extra_runme.py Change in default behaviour wrapping C++ bool for Python. 2014-03-08 12:04:19 +00:00
li_std_vector_ptr_runme.py UTL - Fix some incorrect acceptance of types in the STL, eg a double * element passed into a vector<int *> constructor would be accepted, but the ensuing behaviour was undefined. Now the type conversion correctly raises an exception 2008-11-28 23:35:46 +00:00
li_std_vector_runme.py Fix some scope and symbol lookup problems when template default parameters are being used with typedef - add the fully expanded template into the c symbol table and scope table. 2011-07-01 22:59:55 +00:00
li_std_wstream_runme.py change runtime examples to run with old python versions 2006-01-11 23:06:15 +00:00
li_std_wstring_runme.py SWIG_AsWCharPtrAndSize improper operation if cptr NULL 2013-07-02 18:58:56 +01:00
member_pointer_runme.py Fix wrapping of function pointers and member function pointers when the function returns by reference 2010-07-16 18:45:22 +00:00
memberin_extend_c_runme.py Change %extend example which said that char arrays were problematic to wrap, when in fact they are not 2009-12-02 22:16:48 +00:00
minherit_runme.py The great merge 2002-11-30 22:01:28 +00:00
mod_runme.py avoid cast list elements, add more debug info, add Rubin's multi-module 'mod'example 2006-01-20 18:59:06 +00:00
multi_import_runme.py Added test suite entry for Bug #1735931 2007-10-12 17:04:24 +00:00
namespace_class_runme.py Further fixes when using type() when using -builtin to include module name 2014-03-01 23:26:27 +00:00
namespace_typemap_runme.py The great merge 2002-11-30 22:01:28 +00:00
namespace_virtual_method_runme.py new tests 2003-04-23 18:00:17 +00:00
naturalvar_runme.py add the 'naturalvar' option/mode/feature, to allow member variables to be treated in a natural way, as the global ones. This mean use the const SWIGTYPE &(C++)/SWIGTYPE(C) typemaps instead of the plain SWIGTYPE * typemap for the set/get methods. 2005-12-27 21:48:56 +00:00
nested_workaround_runme.py Nested class improvements - Fixed inconsistency in handling C++ nested classes - sometimes they were treated as forward declarations, other times as if C nested struct was parsed. Added the nestedworkaround feature for C++ nested class handling. Document improved nested class handling. Numerous C and C++ nested struct/class/union test cases added. 2009-11-11 00:30:34 +00:00
operbool_runme.py Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
overload_bool_runme.py Change in default behaviour wrapping C++ bool for Python. 2014-03-08 12:04:19 +00:00
overload_complicated_runme.py remove svn:executable property 2010-07-16 17:39:11 +00:00
overload_copy_runme.py The great merge 2002-11-30 22:01:28 +00:00
overload_extend_runme.py more cases, and C/C++ compatibility 2004-10-06 17:32:03 +00:00
overload_extendc_runme.py default args in C code test added 2004-10-20 21:06:10 +00:00
overload_numeric_runme.py Infinity is now by default an acceptable value for type 'float'. 2013-09-12 07:28:12 +01:00
overload_rename_runme.py added more test cases and broken ones 2004-11-15 18:45:28 +00:00
overload_simple_runme.py fix overload + protected member issue reported by Colin McDonald 2006-02-20 16:52:28 +00:00
overload_subtype_runme.py The great merge 2002-11-30 22:01:28 +00:00
overload_template_fast_runme.py Fix for r11557 rename of max to maximum 2009-08-17 23:07:16 +00:00
overload_template_runme.py Rename max() to maximum() as max() is a built-in function in PHP. 2009-08-14 01:33:23 +00:00
pointer_reference_runme.py Fix typecheck typemaps for SWIGTYPE *const& 2011-01-30 00:42:27 +00:00
preproc_defined_runme.py Fix preprocessor breakages introduced in rev 12441 which was fixing defined() being expanded outside of #if and #elif preprocessor directives 2011-02-12 23:27:50 +00:00
preproc_include_runme.py Fix regression introduced in swig-2.0.2 where filenames with spaces were not found when used with %include and %import 2011-03-17 07:33:05 +00:00
preproc_runme.py fix macro with empy args 2004-11-18 00:25:23 +00:00
primitive_ref_runme.py Change in default behaviour wrapping C++ bool for Python. 2014-03-08 12:04:19 +00:00
primitive_types_runme.py Don't accept strings too long to fit in char[N] with trailing NUL. 2013-12-23 21:13:25 +00:00
profiletest_runme.py fix run test compile for the moment 2006-01-15 08:26:35 +00:00
profiletestc_runme.py add support for multi-inheritance at the python side and performance tunings 2005-11-07 12:40:16 +00:00
python_abstractbase_runme3.py Add discard and add methods to std::set and std::multiset wrappers so that pyabc.i can be used ensuring MutableSet is a valid abstract base class 2012-08-15 22:36:15 +00:00
python_append_runme.py Improve testing of %pythonprepend and %pythonappend 2013-07-02 20:00:17 +01:00
python_nondynamic_runme.py Final merge from trunk 2011-04-03 07:37:35 +00:00
python_overload_simple_cast_runme.py modifying build system not to rely on the -I path to find the input files avoiding warning 125: move python .i files up one directory, some files have been renamed - prepended with python 2008-11-26 22:50:35 +00:00
python_pybuf_runme3.py modifying build system not to rely on the -I path to find the input files avoiding warning 125: move python .i files up one directory, some files have been renamed - prepended with python 2008-11-26 22:50:35 +00:00
python_richcompare_runme.py Added test case for python richcompare operators. 2011-03-31 03:55:42 +00:00
python_threads_runme.py Fix Python crash when using -threads iterating containers 2014-09-23 22:33:25 +01:00
python_varargs_typemap_runme.py Fix vararg documentation for Python 3 2013-05-24 23:02:34 +01:00
pythonswig.supp Add partialcheck make targets. Also add RUNTOOL, COMPILETOOL and SWIGTOOL variables for invoking tools when running tests, compiling or invoking swig 2008-05-20 21:27:22 +00:00
refcount_runme.py Fix %newobject when used in conjunction with %feature(ref). The code from the ref feature was not always being generated for the function specified by %newobject. Documentation for ref and unref moved from Python to the C++ chapter. 2011-08-23 19:29:10 +00:00
reference_global_vars_runme.py Change in default behaviour wrapping C++ bool for Python. 2014-03-08 12:04:19 +00:00
rename_pcre_encoder_runme.py Add support for case conversion characters in regex substitutions. 2013-10-15 07:17:56 +01:00
rename_predicates_runme.py Add %$isextendmember for %rename of members added via %extend 2014-02-18 23:21:46 +00:00
rename_scope_runme.py add test for rename 2006-02-17 20:46:13 +00:00
rename_strip_encoder_runme.py Add the strip encoder patch from Anatoly Techtonik #2130016 2008-11-01 22:52:26 +00:00
ret_by_value_runme.py add runme test 2004-10-02 02:31:30 +00:00
return_const_value_runme.py several fixes, see CHANGES.current 10/04/2004 2004-10-05 00:19:26 +00:00
smart_pointer_const_overload_runme.py Apply patch #3066958 from Mikael Johansson to fix default smart pointer handling when the smart pointer contains both a const and non-const operator->. 2010-10-03 13:12:00 +00:00
smart_pointer_extend_runme.py more smart pointers + extend fixes 2005-01-04 09:41:05 +00:00
smart_pointer_member_runme.py more smart_pointer fixes + cases 2004-12-07 23:32:11 +00:00
smart_pointer_multi_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_multi_typedef_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_not_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_overload_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_rename_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_simple_runme.py The great merge 2002-11-30 22:01:28 +00:00
smart_pointer_templatevariables_runme.py Fix template member variables wrapped by a smart pointer bug reported by Robert Lupton 2008-01-17 00:29:02 +00:00
smart_pointer_typedef_runme.py The great merge 2002-11-30 22:01:28 +00:00
sneaky1_runme.py fix for perl keyword 2006-03-07 23:05:11 +00:00
special_variable_macros_runme.py Support $descriptor() macro in fragments 2013-04-18 23:04:07 +01:00
static_const_member_2_runme.py fix bug #1174705 2005-11-27 02:15:26 +00:00
std_containers_runme.py Change in default behaviour wrapping C++ bool for Python. 2014-03-08 12:04:19 +00:00
struct_initialization_runme.py Fix parsing of struct declaration and initialization 2009-11-17 18:45:53 +00:00
struct_rename_runme.py new test 2003-09-01 17:54:18 +00:00
struct_value_runme.py The great merge 2002-11-30 22:01:28 +00:00
swigobject_runme.py Fixes to support Python 3.0.1 and higher. 2009-03-02 17:56:29 +00:00
template_construct_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_default_arg_runme.py more examples, and fixes 2004-10-18 02:08:55 +00:00
template_extend1_runme.py new tests 2003-02-18 21:25:31 +00:00
template_extend2_runme.py new tests 2003-02-18 21:25:31 +00:00
template_inherit_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_matrix_runme.py add more template+namespaces+matrix cases 2005-03-08 06:46:15 +00:00
template_ns4_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_ns_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_opaque_runme.py add template_opaque 2004-05-28 02:13:30 +00:00
template_ref_type_runme.py new test 2003-06-03 19:08:09 +00:00
template_rename_runme.py fixes for %templates/%rename/%features + templates 2006-02-05 20:25:43 +00:00
template_static_runme.py fixes for python 2.1 2006-02-23 09:08:49 +00:00
template_tbase_template_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_type_namespace_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_typedef_cplx2_runme.py Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
template_typedef_cplx3_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_typedef_cplx4_runme.py The great merge 2002-11-30 22:01:28 +00:00
template_typedef_cplx_runme.py Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken. 2008-09-11 17:18:07 +00:00
template_typedef_import_runme.py Python: cleanup in the template_typedef_import testcase 2009-08-06 19:57:55 +00:00
template_typedef_runme.py Fix ~15 tests, minor doc fixes, improve STL support. 2008-03-05 04:35:34 +00:00
template_typemaps_typedef2_runme.py Fix scoping of forward class declarations nested within a class (for C++). Also fix %template and resolution of template parameters that are typedefs. 2011-07-26 19:34:23 +00:00
template_typemaps_typedef_runme.py Fix scoping of forward class declarations nested within a class (for C++). Also fix %template and resolution of template parameters that are typedefs. 2011-07-26 19:34:23 +00:00
threads_exception_runme.py Fix erratically failing threads_exception python test 2013-03-26 20:57:41 +00:00
typedef_class_runme.py new test 2003-05-28 17:30:04 +00:00
typedef_inherit_runme.py The great merge 2002-11-30 22:01:28 +00:00
typedef_scope_runme.py The great merge 2002-11-30 22:01:28 +00:00
typedef_typedef_runme.py Fix typedef_typedef test 2014-02-06 19:31:31 +00:00
typemap_arrays_runme.py Fix expansion in array typemaps 2010-12-14 21:38:36 +00:00
typemap_delete_runme.py Fix typemap delete regression introduced in rev 11838 2010-05-03 22:58:27 +00:00
typemap_namespace_runme.py The great merge 2002-11-30 22:01:28 +00:00
typemap_ns_using_runme.py The great merge 2002-11-30 22:01:28 +00:00
typemap_out_optimal_runme.py add test for optimal attribute in out typemap 2009-04-30 06:12:32 +00:00
typemap_qualifier_strip_runme.py Typemap matching rules enhancement for non-default typemaps. Previously all qualifiers were stripped in one step, now they are stripped one at a time starting with the left most qualifier. 2010-05-02 21:35:02 +00:00
typename_runme.py Change test to fail rather than print a message 2011-06-10 22:48:32 +00:00
types_directive_runme.py Additions to %types so that a user can specify the code to go into the casting / conversion function 2008-01-31 22:48:24 +00:00
unicode_strings_runme.py unicode_strings test: manually check values instead of using assert 2014-05-24 18:00:04 -04:00
unions_runme.py The great merge 2002-11-30 22:01:28 +00:00
using1_runme.py The great merge 2002-11-30 22:01:28 +00:00
using2_runme.py The great merge 2002-11-30 22:01:28 +00:00
using_composition_runme.py Fix using statements for overloaded methods 2007-11-30 22:34:50 +00:00
using_extend_runme.py fix using + extend as reported by William 2006-02-22 01:21:43 +00:00
using_inherit_runme.py Fix using statements for overloaded methods 2007-11-30 22:34:50 +00:00
using_private_runme.py using for method with default args test added 2004-10-07 19:57:13 +00:00
using_protected_runme.py The great merge 2002-11-30 22:01:28 +00:00
varargs_overload_runme.py Merge from trunk. 2011-03-28 22:18:07 +00:00
varargs_runme.py %varargs - better documentation and remove additional argument generation which didn't work properly as a sentinel 2011-05-14 00:13:43 +00:00
virtual_derivation_runme.py added test for simple virtual derivation, where ruby fails 2004-01-22 06:23:57 +00:00
virtual_poly_runme.py added a reference polymorphic return type case, and 2003-12-24 06:53:47 +00:00
voidtest_runme.py add test for 'void *' argument 2006-02-04 00:34:12 +00:00
wrapmacro_runme.py PHP: fix for the wrapmacro testcase 2009-08-04 09:32:12 +00:00

README

See ../README for common README file.

Any testcases which have _runme.py (or _runme3.py for Python 3) appended after the testcase name will be detected and run.

If you intend to write a testcase for both Python 2.x and 3.x, do *not* directly put the _runme3.py in this directory. Just write Python 2.x's _runme.py testcase and it will be automatically converted to Python 3 code during test.

You can run make with PY3=y to run test case with Python 3.x, eg.
  $ make voidtest.cpptest PY3=y