aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-05-19 12:26:24 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-07 09:17:40 -0700
commita2fc2e216581309c8e3a9e4fb60fa30c6921d5f8 (patch)
treed5ad4b06ab54225883322cb7c07da2a1b3b2fa1f
parent74ed27f776f0c3180ca105862f3370614849680c (diff)
downloadmeson-a2fc2e216581309c8e3a9e4fb60fa30c6921d5f8.zip
meson-a2fc2e216581309c8e3a9e4fb60fa30c6921d5f8.tar.gz
meson-a2fc2e216581309c8e3a9e4fb60fa30c6921d5f8.tar.bz2
cython: Add a test for generated files
-rw-r--r--test cases/cython/2 generated sources/configure.pyx.in2
-rw-r--r--test cases/cython/2 generated sources/g.in2
-rw-r--r--test cases/cython/2 generated sources/gen.py14
-rwxr-xr-xtest cases/cython/2 generated sources/generator.py12
-rw-r--r--test cases/cython/2 generated sources/meson.build61
-rw-r--r--test cases/cython/2 generated sources/test.py13
6 files changed, 104 insertions, 0 deletions
diff --git a/test cases/cython/2 generated sources/configure.pyx.in b/test cases/cython/2 generated sources/configure.pyx.in
new file mode 100644
index 0000000..1c44f6d
--- /dev/null
+++ b/test cases/cython/2 generated sources/configure.pyx.in
@@ -0,0 +1,2 @@
+cpdef func():
+ return "Hello, World!"
diff --git a/test cases/cython/2 generated sources/g.in b/test cases/cython/2 generated sources/g.in
new file mode 100644
index 0000000..1c44f6d
--- /dev/null
+++ b/test cases/cython/2 generated sources/g.in
@@ -0,0 +1,2 @@
+cpdef func():
+ return "Hello, World!"
diff --git a/test cases/cython/2 generated sources/gen.py b/test cases/cython/2 generated sources/gen.py
new file mode 100644
index 0000000..5c0a82d
--- /dev/null
+++ b/test cases/cython/2 generated sources/gen.py
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: Apache-2.0
+
+import argparse
+import textwrap
+
+parser = argparse.ArgumentParser()
+parser.add_argument('output')
+args = parser.parse_args()
+
+with open(args.output, 'w') as f:
+ f.write(textwrap.dedent('''\
+ cpdef func():
+ return "Hello, World!"
+ '''))
diff --git a/test cases/cython/2 generated sources/generator.py b/test cases/cython/2 generated sources/generator.py
new file mode 100755
index 0000000..77de855
--- /dev/null
+++ b/test cases/cython/2 generated sources/generator.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: Apache-2.0
+
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('input')
+parser.add_argument('output')
+args = parser.parse_args()
+
+with open(args.input, 'r') as i, open(args.output, 'w') as o:
+ o.write(i.read())
diff --git a/test cases/cython/2 generated sources/meson.build b/test cases/cython/2 generated sources/meson.build
new file mode 100644
index 0000000..c9a9b6a
--- /dev/null
+++ b/test cases/cython/2 generated sources/meson.build
@@ -0,0 +1,61 @@
+project(
+ 'generated cython sources',
+ ['cython'],
+)
+
+py_mod = import('python')
+py3 = py_mod.find_installation('python3')
+py3_dep = py3.dependency(required : false)
+if not py3_dep.found()
+ error('MESON_SKIP_TEST: Python library not found.')
+endif
+
+ct = custom_target(
+ 'ct',
+ input : 'gen.py',
+ output : 'ct.pyx',
+ command : [py3, '@INPUT@', '@OUTPUT@'],
+)
+
+ct_ext = py3.extension_module('ct', ct, dependencies : py3_dep)
+
+test(
+ 'custom target',
+ py3,
+ args : [files('test.py'), 'ct'],
+ env : ['PYTHONPATH=' + meson.current_build_dir()]
+)
+
+cf = configure_file(
+ input : 'configure.pyx.in',
+ output : 'cf.pyx',
+ copy : true,
+)
+
+cf_ext = py3.extension_module('cf', cf, dependencies : py3_dep)
+
+test(
+ 'configure file',
+ py3,
+ args : [files('test.py'), 'cf'],
+ env : ['PYTHONPATH=' + meson.current_build_dir()]
+)
+
+gen = generator(
+ find_program('generator.py'),
+ arguments : ['@INPUT@', '@OUTPUT@'],
+ output : '@BASENAME@.pyx',
+)
+
+g_ext = py3.extension_module(
+ 'g',
+ gen.process('g.in'),
+ dependencies : py3_dep,
+)
+
+test(
+ 'generator',
+ py3,
+ args : [files('test.py'), 'g'],
+ env : ['PYTHONPATH=' + meson.current_build_dir()]
+)
diff --git a/test cases/cython/2 generated sources/test.py b/test cases/cython/2 generated sources/test.py
new file mode 100644
index 0000000..307283f
--- /dev/null
+++ b/test cases/cython/2 generated sources/test.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: Apache-2.0
+
+import argparse
+import importlib
+
+parser = argparse.ArgumentParser()
+parser.add_argument('mod')
+args = parser.parse_args()
+
+mod = importlib.import_module(args.mod)
+
+assert mod.func() == 'Hello, World!'