mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-01-08 21:18:04 +03:00
virtManager: Misc coverage annotations
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
dc41f61e5e
commit
1684049fa3
@ -68,7 +68,7 @@ class vmmGObject(GObject.GObject):
|
||||
|
||||
def cleanup(self):
|
||||
if self.__cleaned_up:
|
||||
return
|
||||
return # pragma: no cover
|
||||
|
||||
# Do any cleanup required to drop reference counts so object is
|
||||
# actually reaped by python. Usually means unregistering callbacks
|
||||
@ -93,7 +93,7 @@ class vmmGObject(GObject.GObject):
|
||||
self.disconnect(h)
|
||||
for h in self._gobject_timeouts[:]:
|
||||
self.remove_gobject_timeout(h)
|
||||
except Exception:
|
||||
except Exception: # pragma: no cover
|
||||
log.exception("Error cleaning up %s", self)
|
||||
|
||||
self.__cleaned_up = True
|
||||
@ -110,7 +110,7 @@ class vmmGObject(GObject.GObject):
|
||||
try:
|
||||
if config.vmmConfig.is_initialized() and self._leak_check:
|
||||
self.config.remove_object(self.object_key)
|
||||
except Exception:
|
||||
except Exception: # pragma: no cover
|
||||
log.exception("Error removing %s", self.object_key)
|
||||
|
||||
@property
|
||||
@ -171,7 +171,7 @@ class vmmGObject(GObject.GObject):
|
||||
"""
|
||||
GObject emit() wrapper to simplify callers
|
||||
"""
|
||||
if not self._is_main_thread():
|
||||
if not self._is_main_thread(): # pragma: no cover
|
||||
log.error("emitting signal from non-main thread. This is a bug "
|
||||
"please report it. thread=%s self=%s signal=%s",
|
||||
self._thread_name(), self, signal_name)
|
||||
@ -189,6 +189,18 @@ class vmmGObject(GObject.GObject):
|
||||
GLib.source_remove(handle)
|
||||
self._gobject_timeouts.remove(handle)
|
||||
|
||||
def _start_thread(self, target=None, name=None, args=None, kwargs=None):
|
||||
# Helper for starting a daemonized thread
|
||||
t = threading.Thread(target=target, name=name,
|
||||
args=args or [], kwargs=kwargs or {})
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
|
||||
##############################
|
||||
# Internal debugging helpers #
|
||||
##############################
|
||||
|
||||
def _refcount(self):
|
||||
return sys.getrefcount(self)
|
||||
|
||||
@ -199,18 +211,11 @@ class vmmGObject(GObject.GObject):
|
||||
msg, self.object_key, self._refcount(),
|
||||
"".join(traceback.format_stack()))
|
||||
|
||||
def _gc_get_referrers(self):
|
||||
def _gc_get_referrers(self): # pragma: no cover
|
||||
import gc
|
||||
import pprint
|
||||
pprint.pprint(gc.get_referrers(self))
|
||||
|
||||
def _start_thread(self, target=None, name=None, args=None, kwargs=None):
|
||||
# Helper for starting a daemonized thread
|
||||
t = threading.Thread(target=target, name=name,
|
||||
args=args or [], kwargs=kwargs or {})
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
def _thread_name(self):
|
||||
return threading.current_thread().name
|
||||
|
||||
@ -304,7 +309,7 @@ class vmmGObjectUI(vmmGObject):
|
||||
|
||||
def cleanup(self):
|
||||
if self.__cleaned_up:
|
||||
return
|
||||
return # pragma: no cover
|
||||
|
||||
try:
|
||||
self.close()
|
||||
@ -314,7 +319,7 @@ class vmmGObjectUI(vmmGObject):
|
||||
self.topwin.destroy()
|
||||
self.topwin = None
|
||||
self._err = None
|
||||
except Exception:
|
||||
except Exception: # pragma: no cover
|
||||
log.exception("Error cleaning up %s", self)
|
||||
|
||||
self.__cleaned_up = True
|
||||
@ -343,7 +348,7 @@ class vmmGObjectUI(vmmGObject):
|
||||
cursor = Gdk.Cursor.new_from_name(
|
||||
gdk_window.get_display(), cursor_type)
|
||||
gdk_window.set_cursor(cursor)
|
||||
except Exception:
|
||||
except Exception: # pragma: no cover
|
||||
# If a cursor icon theme isn't installed this can cause errors
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1516588
|
||||
log.debug("Error setting cursor_type=%s",
|
||||
|
@ -122,7 +122,7 @@ class vmmCloneVM(vmmGObjectUI):
|
||||
if uri not in cls._instances:
|
||||
cls._instances[uri] = vmmCloneVM()
|
||||
cls._instances[uri].show(parentobj.topwin, vm)
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
parentobj.err.show_err(
|
||||
_("Error launching clone dialog: %s") % str(e))
|
||||
|
||||
|
@ -39,7 +39,7 @@ class _vmmDeleteBase(vmmGObjectUI):
|
||||
if not cls._instance:
|
||||
cls._instance = vmmDeleteDialog()
|
||||
cls._instance.show(parentobj.topwin, vm)
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
parentobj.err.show_err(
|
||||
_("Error launching delete dialog: %s") % str(e))
|
||||
|
||||
|
@ -12,7 +12,7 @@ from gi.repository import Gtk
|
||||
BASECOLOR = Gtk.StyleContext().lookup_color("theme_base_color")[1]
|
||||
|
||||
|
||||
def rect_print(name, rect):
|
||||
def rect_print(name, rect): # pragma: no cover
|
||||
# For debugging
|
||||
print("%s: height=%d, width=%d, x=%d, y=%d" %
|
||||
(name, rect.height, rect.width, rect.x, rect.y))
|
||||
@ -53,7 +53,7 @@ def _line_helper(cairo_ct, bottom_baseline, points, for_fill=False):
|
||||
|
||||
def draw_line(cairo_ct, y, h, points):
|
||||
if not len(points):
|
||||
return
|
||||
return # pragma: no cover
|
||||
|
||||
last_point = _line_helper(cairo_ct, y + h, points)
|
||||
if not last_point:
|
||||
@ -66,7 +66,7 @@ def draw_line(cairo_ct, y, h, points):
|
||||
|
||||
def draw_fill(cairo_ct, x, y, w, h, points, taper=False):
|
||||
if not len(points):
|
||||
return
|
||||
return # pragma: no cover
|
||||
|
||||
_line_helper(cairo_ct, y + h, points, for_fill=True)
|
||||
|
||||
@ -175,10 +175,9 @@ class CellRendererSparkline(Gtk.CellRenderer):
|
||||
def get_y(index):
|
||||
baseline_y = graph_y + graph_height
|
||||
|
||||
n = index
|
||||
if self.reversed:
|
||||
n = (len(self.data_array) - index - 1)
|
||||
else:
|
||||
n = index
|
||||
|
||||
val = self.data_array[n]
|
||||
y = baseline_y - (graph_height * val)
|
||||
@ -216,19 +215,14 @@ class CellRendererSparkline(Gtk.CellRenderer):
|
||||
|
||||
def do_get_size(self, widget, cell_area=None):
|
||||
ignore = widget
|
||||
ignore = cell_area
|
||||
|
||||
FIXED_WIDTH = len(self.data_array)
|
||||
FIXED_HEIGHT = 15
|
||||
xpad = self.get_property("xpad")
|
||||
ypad = self.get_property("ypad")
|
||||
|
||||
if cell_area:
|
||||
# What to do here? haven't encountered this in practice
|
||||
xoffset = 0
|
||||
yoffset = 0
|
||||
else:
|
||||
xoffset = 0
|
||||
yoffset = 0
|
||||
xoffset = 0
|
||||
yoffset = 0
|
||||
|
||||
width = ((xpad * 2) + FIXED_WIDTH)
|
||||
height = ((ypad * 2) + FIXED_HEIGHT)
|
||||
@ -239,7 +233,7 @@ class CellRendererSparkline(Gtk.CellRenderer):
|
||||
# variables can't be named like that
|
||||
def _sanitize_param_spec_name(self, name):
|
||||
return name.replace("-", "_")
|
||||
def do_get_property(self, param_spec):
|
||||
def do_get_property(self, param_spec): # pragma: no cover
|
||||
name = self._sanitize_param_spec_name(param_spec.name)
|
||||
return getattr(self, name)
|
||||
def do_set_property(self, param_spec, value):
|
||||
@ -365,7 +359,7 @@ class Sparkline(Gtk.DrawingArea):
|
||||
|
||||
return 0
|
||||
|
||||
def do_size_request(self, requisition):
|
||||
def do_size_request(self, requisition): # pragma: no cover
|
||||
width = len(self.data_array) / self.num_sets
|
||||
height = 20
|
||||
|
||||
@ -376,7 +370,7 @@ class Sparkline(Gtk.DrawingArea):
|
||||
# variables can't be named like that
|
||||
def _sanitize_param_spec_name(self, name):
|
||||
return name.replace("-", "_")
|
||||
def do_get_property(self, param_spec):
|
||||
def do_get_property(self, param_spec): # pragma: no cover
|
||||
name = self._sanitize_param_spec_name(param_spec.name)
|
||||
return getattr(self, name)
|
||||
def do_set_property(self, param_spec, value):
|
||||
|
@ -10,10 +10,6 @@ import libvirt
|
||||
from virtinst import log
|
||||
|
||||
|
||||
if not hasattr(libvirt, "VIR_DOMAIN_PMSUSPENDED"):
|
||||
setattr(libvirt, "VIR_DOMAIN_PMSUSPENDED", 7)
|
||||
|
||||
|
||||
class _LibvirtEnumMap(object):
|
||||
"""
|
||||
Helper for mapping libvirt event int values to their API names
|
||||
@ -74,7 +70,7 @@ class _LibvirtEnumMap(object):
|
||||
elif status == libvirt.VIR_DOMAIN_PAUSED:
|
||||
return _("Paused")
|
||||
elif status == libvirt.VIR_DOMAIN_SHUTDOWN:
|
||||
return _("Shutting Down")
|
||||
return _("Shutting Down") # pragma: no cover
|
||||
elif status == libvirt.VIR_DOMAIN_SHUTOFF:
|
||||
if has_managed_save:
|
||||
return _("Saved")
|
||||
@ -85,8 +81,9 @@ class _LibvirtEnumMap(object):
|
||||
elif status == libvirt.VIR_DOMAIN_PMSUSPENDED:
|
||||
return _("Suspended")
|
||||
|
||||
log.debug("Unknown status %s, returning 'Unknown'", status)
|
||||
return _("Unknown")
|
||||
log.debug( # pragma: no cover
|
||||
"Unknown status %s, returning 'Unknown'", status)
|
||||
return _("Unknown") # pragma: no cover
|
||||
|
||||
@staticmethod
|
||||
def pretty_status_reason(status, reason):
|
||||
@ -142,11 +139,11 @@ class _LibvirtEnumMap(object):
|
||||
ret = {}
|
||||
for key in [a for a in dir(libvirt) if re.match(regex, a)]:
|
||||
val = getattr(libvirt, key)
|
||||
if type(val) is not int:
|
||||
if type(val) is not int: # pragma: no cover
|
||||
log.debug("libvirt regex=%s key=%s val=%s "
|
||||
"isn't an integer", regex, key, val)
|
||||
continue
|
||||
if val in ret:
|
||||
if val in ret: # pragma: no cover
|
||||
log.debug("libvirt regex=%s key=%s val=%s is already "
|
||||
"in dict as key=%s", regex, key, val, regex[val])
|
||||
continue
|
||||
@ -168,7 +165,7 @@ class _LibvirtEnumMap(object):
|
||||
|
||||
if eventmap:
|
||||
if event not in eventmap:
|
||||
event = next(iter(eventmap))
|
||||
event = next(iter(eventmap)) # pragma: no cover
|
||||
eventstr = eventmap[event]
|
||||
detail1map = self._get_map(eventstr,
|
||||
self._DETAIL1_PREFIX.get(eventstr))
|
||||
|
@ -32,7 +32,7 @@ class vmmMigrateDialog(vmmGObjectUI):
|
||||
if not cls._instance:
|
||||
cls._instance = vmmMigrateDialog()
|
||||
cls._instance.show(parentobj.topwin, vm)
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
parentobj.err.show_err(
|
||||
_("Error launching migrate dialog: %s") % str(e))
|
||||
|
||||
|
@ -213,7 +213,7 @@ class vmmStoragePool(vmmLibvirtObject):
|
||||
we just updated it.
|
||||
"""
|
||||
if not self.is_active():
|
||||
return
|
||||
return # pragma: no cover
|
||||
|
||||
self._backend.refresh(0)
|
||||
if self._using_events() and not _from_object_init:
|
||||
|
@ -38,7 +38,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
if key not in cls._instances:
|
||||
cls._instances[key] = vmmVMWindow(vm)
|
||||
return cls._instances[key]
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
if not parentobj:
|
||||
raise
|
||||
parentobj.err.show_err(
|
||||
@ -229,7 +229,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
if self.console.details_viewer_is_visible():
|
||||
try:
|
||||
self.console.details_close_viewer()
|
||||
except Exception:
|
||||
except Exception: # pragma: no cover
|
||||
log.error("Failure when disconnecting from desktop server")
|
||||
|
||||
self.emit("closed")
|
||||
@ -484,7 +484,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
ignore = src
|
||||
try:
|
||||
return self._take_screenshot()
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
self.err.show_err(_("Error taking screenshot: %s") % str(e))
|
||||
|
||||
def control_vm_usb_redirection(self, src):
|
||||
@ -492,7 +492,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
spice_usbdev_dialog = self.err
|
||||
|
||||
spice_usbdev_widget = self.console.details_viewer_get_usb_widget()
|
||||
if not spice_usbdev_widget:
|
||||
if not spice_usbdev_widget: # pragma: no cover
|
||||
self.err.show_err(_("Error initializing spice USB device widget"))
|
||||
return
|
||||
|
||||
@ -522,7 +522,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
ret = ret[1]
|
||||
# F24 rawhide, ret[1] is a named tuple with a 'buffer' element...
|
||||
if hasattr(ret, "buffer"):
|
||||
ret = ret.buffer
|
||||
ret = ret.buffer # pragma: no cover
|
||||
|
||||
import datetime
|
||||
now = str(datetime.datetime.now()).split(".")[0].replace(" ", "_")
|
||||
@ -557,7 +557,7 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
try:
|
||||
if self.is_visible():
|
||||
self.vm.ensure_latest_xml()
|
||||
except Exception as e:
|
||||
except Exception as e: # pragma: no cover
|
||||
if self.conn.support.is_libvirt_error_no_domain(e):
|
||||
self.close()
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user