[pygobject] tests: Make test suite run on macOS
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] tests: Make test suite run on macOS
- Date: Fri, 24 Mar 2017 07:56:03 +0000 (UTC)
commit 23deef70102657e75e07e54b4378c20214c867f3
Author: Christoph Reiter <creiter src gnome org>
Date: Wed Mar 22 14:07:49 2017 +0100
tests: Make test suite run on macOS
* Skip all tests which fail, crash or hang.
* Disable D-Bus in case dbus-run-session is not available.
https://bugzilla.gnome.org/show_bug.cgi?id=780396
tests/Makefile.am | 10 +++++++---
tests/runtests.py | 3 +++
tests/test_atoms.py | 3 +++
tests/test_gdbus.py | 9 +++++++++
tests/test_gi.py | 4 ++++
tests/test_glib.py | 2 ++
tests/test_overrides_gdk.py | 3 +++
tests/test_overrides_gtk.py | 2 ++
tests/test_source.py | 3 +++
9 files changed, 36 insertions(+), 3 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 937650e..dcfe442 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -164,11 +164,15 @@ RUN_TESTS_ENV_VARS= \
G_SLICE=debug-blocks \
TESTS_BUILDDIR=$(builddir)
+# if dbus-run-session is available, use it, otherwise disable DBUS
+check-local:
+ DBUS_ENV=$$(dbus-run-session true && echo "dbus-run-session --" || echo "DBUS_SESSION_BUS_ADDRESS= ")
$(MAKE) check.real
+
# pygtkcompat tests need to be run in a separate process as they
# clobber global name space
-check-local: $(target_libraries) $(test_typelibs) gschemas.compiled
- $(RUN_TESTS_ENV_VARS) dbus-run-session -- $(EXEC_NAME) $(PYTHON) -Wd $(srcdir)/runtests.py; rc=$$?; \
- [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS)
dbus-run-session -- $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning
-Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
+check.real: $(target_libraries) $(test_typelibs) gschemas.compiled
+ $(RUN_TESTS_ENV_VARS) $(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd $(srcdir)/runtests.py; rc=$$?; \
+ [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS)
$(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning
-Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
exit $$rc
check.gdb:
diff --git a/tests/runtests.py b/tests/runtests.py
index 6085ff9..4bffc57 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -27,6 +27,9 @@ sys.path.insert(0, builddir)
# force untranslated messages, as we check for them in some tests
os.environ['LC_MESSAGES'] = 'C'
os.environ['G_DEBUG'] = 'fatal-warnings fatal-criticals'
+if sys.platform == "darwin":
+ # gtk 3.22 has warnings and ciriticals on OS X, ignore for now
+ os.environ['G_DEBUG'] = ''
# make Gio able to find our gschemas.compiled in tests/. This needs to be set
# before importing Gio. Support a separate build tree, so look in build dir
diff --git a/tests/test_atoms.py b/tests/test_atoms.py
index dfd4e36..d62764f 100644
--- a/tests/test_atoms.py
+++ b/tests/test_atoms.py
@@ -1,3 +1,4 @@
+import sys
import unittest
try:
@@ -53,6 +54,7 @@ class TestGdkAtom(unittest.TestCase):
self.assertTrue(Gtk.targets_include_image([a_jpeg], False))
self.assertTrue(Gtk.targets_include_image([a_jpeg, a_plain], False))
+ @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
def test_out_array(self):
a_selection = Gdk.Atom.intern('my_clipboard', False)
clipboard = Gtk.Clipboard.get(a_selection)
@@ -72,6 +74,7 @@ class TestGdkAtom(unittest.TestCase):
self.assertFalse(None in names, names)
self.assertTrue('TEXT' in names, names)
+ @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
def test_out_glist(self):
display = Gdk.Display.get_default()
dm = display.get_device_manager()
diff --git a/tests/test_gdbus.py b/tests/test_gdbus.py
index 805633a..5fb4f5d 100644
--- a/tests/test_gdbus.py
+++ b/tests/test_gdbus.py
@@ -7,6 +7,15 @@ from gi.repository import GLib
from gi.repository import Gio
+try:
+ Gio.bus_get_sync(Gio.BusType.SESSION, None)
+except GLib.Error:
+ has_dbus = False
+else:
+ has_dbus = True
+
+
+@unittest.skipUnless(has_dbus, "no dbus running")
class TestGDBusClient(unittest.TestCase):
def setUp(self):
self.bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
diff --git a/tests/test_gi.py b/tests/test_gi.py
index d0c72b6..c545d5d 100644
--- a/tests/test_gi.py
+++ b/tests/test_gi.py
@@ -1486,6 +1486,8 @@ class TestEnum(unittest.TestCase):
Run test under a locale which defines toupper('a') == 'a'
'''
+ if sys.platform == "darwin":
+ return
cls.locale_dir = tempfile.mkdtemp()
src = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'te_ST@nouppera')
dest = os.path.join(cls.locale_dir, 'te_ST.UTF-8@nouppera')
@@ -1495,6 +1497,8 @@ class TestEnum(unittest.TestCase):
@classmethod
def tearDownClass(cls):
+ if sys.platform == "darwin":
+ return
locale.setlocale(locale.LC_ALL, 'C')
shutil.rmtree(cls.locale_dir)
try:
diff --git a/tests/test_glib.py b/tests/test_glib.py
index 6331d11..dbde589 100644
--- a/tests/test_glib.py
+++ b/tests/test_glib.py
@@ -1,6 +1,7 @@
# -*- Mode: Python -*-
# encoding: UTF-8
+import sys
import unittest
import os.path
import warnings
@@ -85,6 +86,7 @@ https://my.org/q?x=1&y=2
self.assertTrue(isinstance(tm, float))
self.assertGreater(tm, 1350000000.0)
+ @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
def test_main_loop(self):
# note we do not test run() here, as we use this in countless other
# tests
diff --git a/tests/test_overrides_gdk.py b/tests/test_overrides_gdk.py
index a0ffac4..79207df 100644
--- a/tests/test_overrides_gdk.py
+++ b/tests/test_overrides_gdk.py
@@ -1,6 +1,7 @@
# -*- Mode: Python; py-indent-offset: 4 -*-
# vim: tabstop=4 shiftwidth=4 expandtab
+import sys
import unittest
import gi.overrides
@@ -17,6 +18,8 @@ from helper import capture_glib_deprecation_warnings
@unittest.skipUnless(Gdk, 'Gdk not available')
class TestGdk(unittest.TestCase):
+
+ @unittest.skipIf(sys.platform == "darwin", "crashes")
def test_constructor(self):
attribute = Gdk.WindowAttr()
attribute.window_type = Gdk.WindowType.CHILD
diff --git a/tests/test_overrides_gtk.py b/tests/test_overrides_gtk.py
index 8e8a66d..ec6d045 100644
--- a/tests/test_overrides_gtk.py
+++ b/tests/test_overrides_gtk.py
@@ -664,6 +664,7 @@ class TestWidget(unittest.TestCase):
button.style_get_property('not-a-valid-style-property')
+@unittest.skipIf(sys.platform == "darwin", "hangs")
@unittest.skipUnless(Gtk, 'Gtk not available')
class TestSignals(unittest.TestCase):
def test_class_closure_override_with_aliased_type(self):
@@ -1698,6 +1699,7 @@ class TestTreeModel(unittest.TestCase):
self.assertTrue(filt is not None)
+@unittest.skipIf(sys.platform == "darwin", "hangs")
@unittest.skipUnless(Gtk, 'Gtk not available')
class TestTreeView(unittest.TestCase):
def test_tree_view(self):
diff --git a/tests/test_source.py b/tests/test_source.py
index f13ab6b..4845157 100644
--- a/tests/test_source.py
+++ b/tests/test_source.py
@@ -1,5 +1,6 @@
# -*- Mode: Python -*-
+import sys
import gc
import unittest
import warnings
@@ -191,6 +192,7 @@ class TestSource(unittest.TestCase):
GLib.Timeout(20)
GLib.Idle()
+ @unittest.skipIf(sys.platform == "darwin", "hangs")
def test_finalize(self):
self.dispatched = False
self.finalized = False
@@ -281,6 +283,7 @@ class TestSource(unittest.TestCase):
self.assertEqual(source.kwarg, 2)
+@unittest.skipIf(sys.platform == "darwin", "hangs")
class TestUserData(unittest.TestCase):
def test_idle_no_data(self):
ml = GLib.MainLoop()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]