[gtk/wip.win32.fixes: 1/2] testsuite: Fix introspection test on Windows




commit a11ac9a351acfb3d5b8e7ed071beea02332b55d0
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Mon Apr 25 15:28:44 2022 +0800

    testsuite: Fix introspection test on Windows
    
    ...when we are using Python 3.8.x or later.  Python 3.8.x or later on Windows
    require one to call os.add_dll_directory() on every directory that contains
    dependent non-system DLLs of a module that are not bundled/installed with the
    module.
    
    Since we are very likely running programs that rely on dependent items in
    %PATH%, make things easier for people by calling os.add_dll_directory() on
    all the valid paths in %PATH% in api.py, so that the test will run
    successfully on Windows with Python 3.8.x or later.

 testsuite/introspection/api.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)
---
diff --git a/testsuite/introspection/api.py b/testsuite/introspection/api.py
index c35b2b7448..e9bd6a8868 100755
--- a/testsuite/introspection/api.py
+++ b/testsuite/introspection/api.py
@@ -1,6 +1,19 @@
 #! /usr/bin/env python3
 
+import os
 import sys
+
+# Python 3.8.x or later on Windows require os.add_dll_directory()
+# to be called on every directory that contains the required
+# non-bundled, non-system DLLs of a module so that the module can
+# be loaded successfully by Python.  Make things easiler for people
+# by calling os.add_dll_directory() on the valid paths in %PATH%.
+if hasattr(os, 'add_dll_directory'):
+    paths = os.environ['PATH'].split(os.pathsep)
+    for path in paths:
+        if path != '' and os.path.isdir (path):
+            os.add_dll_directory(path)
+
 import gi
 
 gi.require_version('Gtk', '4.0')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]