hguemar / rpms / subunit

Forked from rpms/subunit 5 years ago
Clone
Blob Blame History Raw
From 5ba871c0851dbff28320ec5887960a90a7aab260 Mon Sep 17 00:00:00 2001
From: Haikel Guemar <hguemar@fedoraproject.org>
Date: Fri, 30 Nov 2018 14:30:08 +0100
Subject: [PATCH] Migrate Gtk interface to GObject introspection

Filters subunit2gtk and subunit-notify now uses GObject introspection
Both are compatible with python2 and python3
---
 filters/subunit-notify | 10 +++---
 filters/subunit2gtk    | 80 +++++++++++++++++++++---------------------
 2 files changed, 45 insertions(+), 45 deletions(-)

diff --git a/filters/subunit-notify b/filters/subunit-notify
index bc833da..71da071 100755
--- a/filters/subunit-notify
+++ b/filters/subunit-notify
@@ -16,15 +16,15 @@
 
 """Notify the user of a finished test run."""
 
-import pygtk
-pygtk.require('2.0')
-import pynotify
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Notify
 from testtools import StreamToExtendedDecorator
 
 from subunit import TestResultStats
 from subunit.filters import run_filter_script
 
-if not pynotify.init("Subunit-notify"):
+if not Notify.init("Subunit-notify"):
     sys.exit(1)
 
 
@@ -39,7 +39,7 @@ def notify_of_result(result):
         result.passed_tests,
         result.failed_tests,
     )
-    nw = pynotify.Notification(summary, body)
+    nw = Notify.Notification(summary, body)
     nw.show()
 
 
diff --git a/filters/subunit2gtk b/filters/subunit2gtk
index 78b4309..5c0ebe3 100755
--- a/filters/subunit2gtk
+++ b/filters/subunit2gtk
@@ -49,9 +49,9 @@ import sys
 import threading
 import unittest
 
-import pygtk
-pygtk.require('2.0')
-import gtk, gtk.gdk, gobject
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk, GObject
 
 from testtools import StreamToExtendedDecorator
 
@@ -75,64 +75,64 @@ class GTKTestResult(unittest.TestResult):
         self.not_ok_label = None
         self.total_tests = None
 
-        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        self.window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         self.window.set_resizable(True)
 
-        self.window.connect("destroy", gtk.main_quit)
+        self.window.connect("destroy", Gtk.main_quit)
         self.window.set_title("Tests...")
         self.window.set_border_width(0)
 
-        vbox = gtk.VBox(False, 5)
+        vbox = Gtk.VBox(False, 5)
         vbox.set_border_width(10)
         self.window.add(vbox)
         vbox.show()
 
         # Create a centering alignment object
-        align = gtk.Alignment(0.5, 0.5, 0, 0)
+        align = Gtk.Alignment.new(0.5, 0.5, 0, 0)
         vbox.pack_start(align, False, False, 5)
         align.show()
 
         # Create the ProgressBar
-        self.pbar = gtk.ProgressBar()
+        self.pbar = Gtk.ProgressBar()
         align.add(self.pbar)
         self.pbar.set_text("Running")
         self.pbar.show()
         self.progress_model = ProgressModel()
 
-        separator = gtk.HSeparator()
+        separator = Gtk.HSeparator()
         vbox.pack_start(separator, False, False, 0)
         separator.show()
 
         # rows, columns, homogeneous
-        table = gtk.Table(2, 3, False)
+        table = Gtk.Table(2, 3, False)
         vbox.pack_start(table, False, True, 0)
         table.show()
         # Show summary details about the run. Could use an expander.
-        label = gtk.Label("Run:")
-        table.attach(label, 0, 1, 1, 2, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        label = Gtk.Label(label="Run:")
+        table.attach(label, 0, 1, 1, 2, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         label.show()
-        self.run_label = gtk.Label("N/A")
-        table.attach(self.run_label, 1, 2, 1, 2, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        self.run_label = Gtk.Label(label="N/A")
+        table.attach(self.run_label, 1, 2, 1, 2, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         self.run_label.show()
 
-        label = gtk.Label("OK:")
-        table.attach(label, 0, 1, 2, 3, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        label = Gtk.Label(label="OK:")
+        table.attach(label, 0, 1, 2, 3, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         label.show()
-        self.ok_label = gtk.Label("N/A")
-        table.attach(self.ok_label, 1, 2, 2, 3, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        self.ok_label = Gtk.Label(label="N/A")
+        table.attach(self.ok_label, 1, 2, 2, 3, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         self.ok_label.show()
 
-        label = gtk.Label("Not OK:")
-        table.attach(label, 0, 1, 3, 4, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        label = Gtk.Label(label="Not OK:")
+        table.attach(label, 0, 1, 3, 4, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         label.show()
-        self.not_ok_label = gtk.Label("N/A")
-        table.attach(self.not_ok_label, 1, 2, 3, 4, gtk.EXPAND | gtk.FILL,
-            gtk.EXPAND | gtk.FILL, 5, 5)
+        self.not_ok_label = Gtk.Label(label="N/A")
+        table.attach(self.not_ok_label, 1, 2, 3, 4, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL,
+            Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 5, 5)
         self.not_ok_label.show()
 
         self.window.show()
@@ -142,7 +142,7 @@ class GTKTestResult(unittest.TestResult):
 
     def stopTest(self, test):
         super(GTKTestResult, self).stopTest(test)
-        gobject.idle_add(self._stopTest)
+        GObject.idle_add(self._stopTest)
 
     def _stopTest(self):
         self.progress_model.advance()
@@ -159,26 +159,26 @@ class GTKTestResult(unittest.TestResult):
             super(GTKTestResult, self).stopTestRun()
         except AttributeError:
             pass
-        gobject.idle_add(self.pbar.set_text, 'Finished')
+        GObject.idle_add(self.pbar.set_text, 'Finished')
 
     def addError(self, test, err):
         super(GTKTestResult, self).addError(test, err)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def addFailure(self, test, err):
         super(GTKTestResult, self).addFailure(test, err)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def addSuccess(self, test):
         super(GTKTestResult, self).addSuccess(test)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def addSkip(self, test, reason):
         # addSkip is new in Python 2.7/3.1
         addSkip = getattr(super(GTKTestResult, self), 'addSkip', None)
         if callable(addSkip):
             addSkip(test, reason)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def addExpectedFailure(self, test, err):
         # addExpectedFailure is new in Python 2.7/3.1
@@ -186,7 +186,7 @@ class GTKTestResult(unittest.TestResult):
             'addExpectedFailure', None)
         if callable(addExpectedFailure):
             addExpectedFailure(test, err)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def addUnexpectedSuccess(self, test):
         # addUnexpectedSuccess is new in Python 2.7/3.1
@@ -194,7 +194,7 @@ class GTKTestResult(unittest.TestResult):
             'addUnexpectedSuccess', None)
         if callable(addUnexpectedSuccess):
             addUnexpectedSuccess(test)
-        gobject.idle_add(self.update_counts)
+        GObject.idle_add(self.update_counts)
 
     def progress(self, offset, whence):
         if whence == PROGRESS_PUSH:
@@ -218,12 +218,12 @@ class GTKTestResult(unittest.TestResult):
         self.ok_label.set_text(str(self.testsRun - bad))
         self.not_ok_label.set_text(str(bad))
 
-gobject.threads_init()
+GObject.threads_init()
 result = StreamToExtendedDecorator(GTKTestResult())
 test = ByteStreamToStreamResult(sys.stdin, non_subunit_name='stdout')
 # Get setup
-while gtk.events_pending():
-  gtk.main_iteration()
+while Gtk.events_pending():
+  Gtk.main_iteration()
 # Start IO
 def run_and_finish():
     test.run(result)
@@ -232,7 +232,7 @@ t = threading.Thread(target=run_and_finish)
 t.daemon = True
 result.startTestRun()
 t.start()
-gtk.main()
+Gtk.main()
 if result.decorated.wasSuccessful():
     exit_code = 0
 else:
-- 
2.19.2