[pypy-commit] pypy cppyy-dev: add test_regression file with regression tests

wlav pypy.commits at gmail.com
Thu Nov 7 18:56:16 EST 2019


Author: Wim Lavrijsen <WLavrijsen at lbl.gov>
Branch: cppyy-dev
Changeset: r97985:7c7fd9713e04
Date: 2019-11-06 19:06 -0800
http://bitbucket.org/pypy/pypy/changeset/7c7fd9713e04/

Log:	add test_regression file with regression tests

diff --git a/pypy/module/_cppyy/test/test_regression.py b/pypy/module/_cppyy/test/test_regression.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_cppyy/test/test_regression.py
@@ -0,0 +1,50 @@
+import py, os, sys
+from .support import setup_make
+
+from pypy.module._cppyy import interp_cppyy, executor
+
+
+class AppTestREGRESSION:
+    spaceconfig = dict(usemodules=['_cppyy', '_rawffi', 'itertools'])
+
+    def setup_class(cls):
+        cls.w_example01 = cls.space.appexec([], """():
+            import ctypes, _cppyy
+            _cppyy._post_import_startup()""")
+
+    def test01_dir(self):
+        """These dir() methods used to crash."""
+
+        import _cppyy as cppyy
+
+        cppyy.gbl.gInterpreter.Declare("namespace cppyy_regression_test { void iii() {}; }")
+
+        assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+        assert not '__abstractmethods__' in dir(cppyy.gbl.cppyy_regression_test)
+        assert '__class__' in dir(cppyy.gbl.cppyy_regression_test)
+        assert 'iii' in dir(cppyy.gbl.cppyy_regression_test)
+
+        assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+        assert cppyy.gbl.cppyy_regression_test.iii
+        assert 'iii' in cppyy.gbl.cppyy_regression_test.__dict__
+
+    def test02_default_template_arguments(self):
+        """Calling a templated method on a templated class with all defaults used to crash."""
+
+        import _cppyy as cppyy
+
+        cppyy.gbl.gInterpreter.Declare("""
+        template<typename T>
+        class AllDefault {
+        public:
+           AllDefault(int val) : m_t(val) {}
+           template<int aap=1, int noot=2>
+              int do_stuff() { return m_t+aap+noot; }
+
+        public:
+           T m_t;
+        };""")
+
+        a = cppyy.gbl.AllDefault[int](24)
+        a.m_t = 21;
+        assert a.do_stuff() == 24


More information about the pypy-commit mailing list