diff options
author | Armin Rigo <arigo@tunes.org> | 2021-12-28 14:33:19 +0100 |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2021-12-28 14:33:19 +0100 |
commit | 3a5b3cab927dbf83012e9e6173c81375e36fda41 (patch) | |
tree | e2ebfd98eb91046b82d70f620a4a1c355d6d3022 /testing/embedding | |
parent | a333c4996bb4436d34a0dd04d46632402c66a866 (diff) | |
download | cffi-3a5b3cab927dbf83012e9e6173c81375e36fda41.tar.gz |
Test and fix for the case where ffi.embedding_api() is called but
does not list any `extern "Python"` function
Diffstat (limited to 'testing/embedding')
-rw-r--r-- | testing/embedding/empty-test.c | 11 | ||||
-rw-r--r-- | testing/embedding/empty.py | 9 | ||||
-rw-r--r-- | testing/embedding/test_basic.py | 3 |
3 files changed, 22 insertions, 1 deletions
diff --git a/testing/embedding/empty-test.c b/testing/embedding/empty-test.c new file mode 100644 index 0000000..b00dd50 --- /dev/null +++ b/testing/embedding/empty-test.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +void initialize_my_empty_cffi(void); + +int main(void) +{ + initialize_my_empty_cffi(); + printf("OK\n"); + return 0; +} + diff --git a/testing/embedding/empty.py b/testing/embedding/empty.py index aa8d830..1093505 100644 --- a/testing/embedding/empty.py +++ b/testing/embedding/empty.py @@ -4,7 +4,14 @@ ffi = cffi.FFI() ffi.embedding_api("") -ffi.set_source("_empty_cffi", "") +ffi.set_source("_empty_cffi", """ +void initialize_my_empty_cffi(void) { + if (cffi_start_python() != 0) { + printf("oops, cffi_start_python() returned non-0\\n"); + abort(); + } +} +""") fn = ffi.compile(verbose=True) print('FILENAME: %s' % (fn,)) diff --git a/testing/embedding/test_basic.py b/testing/embedding/test_basic.py index 8d2e776..b29afd2 100644 --- a/testing/embedding/test_basic.py +++ b/testing/embedding/test_basic.py @@ -180,6 +180,9 @@ if sys.platform == 'win32': class TestBasic(EmbeddingTests): def test_empty(self): empty_cffi = self.prepare_module('empty') + self.compile('empty-test', [empty_cffi]) + output = self.execute('empty-test') + assert output == 'OK\n' def test_basic(self): add1_cffi = self.prepare_module('add1') |