functions: revert the function init order to make pylint happy again. See #217
[pygobject.git] / tests / __init__.py
blob1611db33962e99c6a3bc4a8bd4468bc4d6d57242
1 from __future__ import absolute_import
3 import os
4 import sys
5 import unittest
6 import signal
7 import subprocess
8 import atexit
9 import warnings
10 import imp
13 class GIImport:
14 def find_module(self, fullname, path=None):
15 if fullname in ('gi._gi', 'gi._gi_cairo'):
16 return self
17 return None
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])
23 try:
24 module = imp.load_module(name, fp, pathname, description)
25 finally:
26 if fp:
27 fp.close()
28 sys.modules[name] = module
29 return 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":
46 return (-1, "")
48 try:
49 out = subprocess.check_output([
50 "dbus-daemon", "--session", "--fork", "--print-address=1",
51 "--print-pid=1"])
52 except (subprocess.CalledProcessError, OSError):
53 return (-1, "")
54 else:
55 if sys.version_info[0] == 3:
56 out = out.decode("utf-8")
57 addr, pid = out.splitlines()
58 return int(pid), addr
60 pid, addr = dbus_launch_session()
61 if pid >= 0:
62 os.environ["DBUS_SESSION_BUS_ADDRESS"] = addr
63 atexit.register(os.kill, pid, signal.SIGKILL)
64 else:
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
87 # first.
88 os.environ['GSETTINGS_BACKEND'] = 'memory'
89 os.environ['GSETTINGS_SCHEMA_DIR'] = tests_builddir
90 os.environ['G_FILENAME_ENCODING'] = 'UTF-8'
92 import gi
93 gi.require_version("GIRepository", "2.0")
94 from gi.repository import GIRepository
95 repo = GIRepository.Repository.get_default()
96 repo.prepend_library_path(os.path.join(tests_builddir))
97 repo.prepend_library_path(os.path.join(tests_builddir, ".libs"))
98 repo.prepend_search_path(tests_builddir)
100 def try_require_version(namespace, version):
101 try:
102 gi.require_version(namespace, version)
103 except ValueError:
104 # prevent tests from running with the wrong version
105 sys.modules["gi.repository." + namespace] = None
107 # Optional
108 try_require_version("Gtk", os.environ.get("TEST_GTK_VERSION", "3.0"))
109 try_require_version("Gdk", os.environ.get("TEST_GTK_VERSION", "3.0"))
110 try_require_version("GdkPixbuf", "2.0")
111 try_require_version("Pango", "1.0")
112 try_require_version("PangoCairo", "1.0")
113 try_require_version("Atk", "1.0")
115 # Required
116 gi.require_versions({
117 "GIMarshallingTests": "1.0",
118 "Regress": "1.0",
119 "GLib": "2.0",
120 "Gio": "2.0",
121 "GObject": "2.0",
124 # It's disabled for stable releases by default, this makes sure it's
125 # always on for the tests.
126 warnings.simplefilter('default', gi.PyGIDeprecationWarning)
129 init_test_environ()
131 __path__ = __import__('pkgutil').extend_path(__path__, __name__)