summaryrefslogtreecommitdiff
path: root/tests/run/c_file_validation.srctree
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/c_file_validation.srctree')
-rw-r--r--tests/run/c_file_validation.srctree72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/run/c_file_validation.srctree b/tests/run/c_file_validation.srctree
new file mode 100644
index 000000000..cceb014ac
--- /dev/null
+++ b/tests/run/c_file_validation.srctree
@@ -0,0 +1,72 @@
+"""
+PYTHON run_test.py
+"""
+
+######## run_test.py ########
+
+import os
+from collections import defaultdict
+from os.path import basename, splitext
+
+from Cython.Compiler.Options import CompilationOptions
+from Cython.Compiler.Main import compile as cython_compile
+from Cython.Compiler.Options import default_options
+
+
+def validate_file(filename):
+ module_name = basename(filename)
+ c_file = splitext(filename)[0] + '.c'
+
+ options = CompilationOptions(
+ default_options,
+ language_level="3",
+ evaluate_tree_assertions=True,
+ )
+ result = cython_compile(filename, options=options)
+ return result.num_errors
+
+
+counts = defaultdict(int)
+failed = False
+
+for filename in sorted(os.listdir(".")):
+ if "run_test" in filename:
+ continue
+
+ print("Testing '%s'" % filename)
+ num_errors = validate_file(filename)
+ print(num_errors, filename)
+ counts[num_errors] += 1
+
+ if '_ok' in filename:
+ if num_errors > 0:
+ failed = True
+ print("ERROR: Compilation failed: %s (%s errors)" % (filename, num_errors))
+ else:
+ if num_errors == 0:
+ failed = True
+ print("ERROR: Expected failure, but compilation succeeded: %s" % filename)
+
+assert counts == {0: 2, 1: 2}, counts
+assert not failed
+
+
+######## assert_ok.py ########
+
+# cython: test_assert_c_code_has = Generated by Cython
+# cython: test_assert_c_code_has = CYTHON_HEX_VERSION
+
+
+######## assert_missing.py ########
+
+# cython: test_assert_c_code_has = Generated by Python
+
+
+######## fail_if_ok.py ########
+
+# cython: test_fail_if_c_code_has = Generated by Python
+
+
+######## fail_if_found.py ########
+
+# cython: test_fail_if_c_code_has = Generated by Cython