From d966fd3ba18370b5bf34b67ff376d88fb6d3e65b Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Tue, 13 May 2025 21:42:56 +0100 Subject: [PATCH] Test swig runtime module contains expected names --- .../python/python_moduleimport_runme.py | 17 +++++++++++++++++ Examples/test-suite/python_moduleimport.i | 2 ++ 2 files changed, 19 insertions(+) diff --git a/Examples/test-suite/python/python_moduleimport_runme.py b/Examples/test-suite/python/python_moduleimport_runme.py index cdb860730..8e0aa6121 100644 --- a/Examples/test-suite/python/python_moduleimport_runme.py +++ b/Examples/test-suite/python/python_moduleimport_runme.py @@ -1,7 +1,24 @@ import python_moduleimport +# Test custom moduleimport in %module if python_moduleimport.simple_function(99) != 99: raise RuntimeError("simple_function") if python_moduleimport.extra_import_variable != "custom import of _python_moduleimport": raise RuntimeError("custom import") + + +# Test the swig runtime module contains the expected names/types +import importlib +swig_runtime_version = python_moduleimport.runtime_version() +swig_runtime_data = importlib.import_module("swig_runtime_data" + swig_runtime_version) # Equivalent to (for version 5): import swig_runtime_data5 as swig_runtime_data + +names = dir(swig_runtime_data) +expected_names = ("SwigPyObject", "SwigPyPacked", "SwigVarLink") +for name in expected_names: + if name not in names: + raise RuntimeError("{} not in {}".format(name, names)) + +cvar_type = type(python_moduleimport.cvar) +if cvar_type.__name__ != "SwigVarLink": + raise RuntimeError("cvar type name is incorrect: {}".format(cvar_type.__name__)) diff --git a/Examples/test-suite/python_moduleimport.i b/Examples/test-suite/python_moduleimport.i index f62547dcd..f0d203433 100644 --- a/Examples/test-suite/python_moduleimport.i +++ b/Examples/test-suite/python_moduleimport.i @@ -23,4 +23,6 @@ from $module import * %inline %{ int simple_function(int i) { return i; } +int globalvar = 99; +const char * runtime_version() { return SWIG_RUNTIME_VERSION; } %}