add test for __debug__ and asserts with Python's -O/-OO options
authorStefan Behnel <stefan_ml@behnel.de>
Thu, 29 Aug 2013 19:55:05 +0000 (21:55 +0200)
committerStefan Behnel <stefan_ml@behnel.de>
Thu, 29 Aug 2013 19:55:05 +0000 (21:55 +0200)
tests/run/__debug__.srctree [new file with mode: 0644]

diff --git a/tests/run/__debug__.srctree b/tests/run/__debug__.srctree
new file mode 100644 (file)
index 0000000..2eb0fc4
--- /dev/null
@@ -0,0 +1,65 @@
+"""
+PYTHON setup.py build_ext -i
+PYTHON debug_test.py
+PYTHON -O debug_test.py
+PYTHON -OO debug_test.py
+"""
+
+######## setup.py ########
+
+from distutils.core import setup
+from Cython.Build import cythonize
+
+setup(ext_modules = cythonize('debug_test_cython.pyx'))
+
+######## debug_test.py ########
+
+if __debug__:
+    DBG = True
+else:
+    DBG = False
+
+import sys
+if DBG == sys.flags.optimize:
+    raise RuntimeError(
+        "PYTHON: unexpected debug value %s, expected %s" % (
+        DBG, sys.flags.optimize))
+
+ASSERT_CALLED = False
+def sideeffect():
+    global ASSERT_CALLED
+    ASSERT_CALLED = True
+    return True
+
+assert sideeffect()
+if ASSERT_CALLED and sys.flags.optimize:
+    raise RuntimeError("Assert called in optimised Python run")
+
+import debug_test_cython
+if debug_test_cython.DBG == sys.flags.optimize:
+    raise RuntimeError(
+        "CYTHON: unexpected debug value %s, expected %s" % (
+        debug_test_cython.DBG, sys.flags.optimize))
+
+
+######## debug_test_cython.pyx ########
+
+if __debug__:
+    DBG = True
+else:
+    DBG = False
+
+ASSERT_CALLED = False
+def sideeffect():
+    global ASSERT_CALLED
+    ASSERT_CALLED = True
+    return True
+
+import sys
+if DBG == sys.flags.optimize:
+    raise RuntimeError("Unexpected debug value %s, expected %s" % (
+                       DBG, sys.flags.optimize))
+
+assert sideeffect()
+if ASSERT_CALLED and sys.flags.optimize:
+    raise RuntimeError("Assert called in optimised Python run")