[pygobject] tests: Make test suite run on macOS



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]