1 from __future__
import absolute_import
14 def find_module(self
, fullname
, path
=None):
15 if fullname
in ('gi._gi', 'gi._gi_cairo'):
19 def load_module(self
, name
):
20 if name
in sys
.modules
:
21 return sys
.modules
[name
]
22 fp
, pathname
, description
= imp
.find_module(name
.split('.')[-1])
24 module
= imp
.load_module(name
, fp
, pathname
, description
)
28 sys
.modules
[name
] = module
32 sys
.meta_path
.insert(0, GIImport())
35 def init_test_environ():
36 # this was renamed in Python 3, provide backwards compatible name
37 if sys
.version_info
[:2] == (2, 7):
38 unittest
.TestCase
.assertRaisesRegex
= unittest
.TestCase
.assertRaisesRegexp
40 if sys
.version_info
[0] == 3:
41 unittest
.TestCase
.assertRegexpMatches
= unittest
.TestCase
.assertRegex
42 unittest
.TestCase
.assertRaisesRegexp
= unittest
.TestCase
.assertRaisesRegex
44 def dbus_launch_session():
45 if os
.name
== "nt" or sys
.platform
== "darwin":
49 out
= subprocess
.check_output([
50 "dbus-daemon", "--session", "--fork", "--print-address=1",
52 except (subprocess
.CalledProcessError
, OSError):
55 if sys
.version_info
[0] == 3:
56 out
= out
.decode("utf-8")
57 addr
, pid
= out
.splitlines()
60 pid
, addr
= dbus_launch_session()
62 os
.environ
["DBUS_SESSION_BUS_ADDRESS"] = addr
63 atexit
.register(os
.kill
, pid
, signal
.SIGKILL
)
65 os
.environ
["DBUS_SESSION_BUS_ADDRESS"] = "."
67 tests_builddir
= os
.path
.abspath(os
.environ
.get('TESTS_BUILDDIR', os
.path
.dirname(__file__
)))
68 builddir
= os
.path
.dirname(tests_builddir
)
69 tests_srcdir
= os
.path
.abspath(os
.path
.dirname(__file__
))
70 srcdir
= os
.path
.dirname(tests_srcdir
)
72 sys
.path
.insert(0, os
.path
.join(builddir
, 'gi'))
73 sys
.path
.insert(0, tests_srcdir
)
74 sys
.path
.insert(0, srcdir
)
75 sys
.path
.insert(0, tests_builddir
)
76 sys
.path
.insert(0, builddir
)
78 # force untranslated messages, as we check for them in some tests
79 os
.environ
['LC_MESSAGES'] = 'C'
80 os
.environ
['G_DEBUG'] = 'fatal-warnings fatal-criticals'
81 if sys
.platform
== "darwin":
82 # gtk 3.22 has warnings and ciriticals on OS X, ignore for now
83 os
.environ
['G_DEBUG'] = ''
85 # make Gio able to find our gschemas.compiled in tests/. This needs to be set
86 # before importing Gio. Support a separate build tree, so look in build dir
88 os
.environ
['GSETTINGS_BACKEND'] = 'memory'
89 os
.environ
['GSETTINGS_SCHEMA_DIR'] = tests_builddir
90 os
.environ
['G_FILENAME_ENCODING'] = 'UTF-8'
92 # Force the default theme so broken themes don't affect the tests
93 os
.environ
['GTK_THEME'] = 'Adwaita'
96 gi
.require_version("GIRepository", "2.0")
97 from gi
.repository
import GIRepository
98 repo
= GIRepository
.Repository
.get_default()
99 repo
.prepend_library_path(os
.path
.join(tests_builddir
))
100 repo
.prepend_library_path(os
.path
.join(tests_builddir
, ".libs"))
101 repo
.prepend_search_path(tests_builddir
)
103 def try_require_version(namespace
, version
):
105 gi
.require_version(namespace
, version
)
107 # prevent tests from running with the wrong version
108 sys
.modules
["gi.repository." + namespace
] = None
111 try_require_version("Gtk", os
.environ
.get("TEST_GTK_VERSION", "3.0"))
112 try_require_version("Gdk", os
.environ
.get("TEST_GTK_VERSION", "3.0"))
113 try_require_version("GdkPixbuf", "2.0")
114 try_require_version("Pango", "1.0")
115 try_require_version("PangoCairo", "1.0")
116 try_require_version("Atk", "1.0")
119 gi
.require_versions({
120 "GIMarshallingTests": "1.0",
127 # It's disabled for stable releases by default, this makes sure it's
128 # always on for the tests.
129 warnings
.simplefilter('default', gi
.PyGIDeprecationWarning
)
134 __path__
= __import__('pkgutil').extend_path(__path__
, __name__
)