Unittests should be more granular
Submitted by Simon Feltman
Link to original bug (#735193)
Description
A lot of our unittests are large functions which test multiple units. These should be broken down into small single function tests. The advantage of this is it makes it easier to isolate failures and leaks when they occur. As an example [1]:
def test_create_tuple(self):
variant = GLib.Variant('()', ())
self.assertEqual(variant.get_type_string(), '()')
self.assertEqual(variant.n_children(), 0)
variant = GLib.Variant('(i)', (3,))
self.assertEqual(variant.get_type_string(), '(i)')
self.assertTrue(isinstance(variant, GLib.Variant))
self.assertEqual(variant.n_children(), 1)
self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
self.assertEqual(variant.get_child_value(0).get_int32(), 3)
...
This should be broken into multiple test functions:
def test_create_tuple_empty(self):
variant = GLib.Variant('()', ())
self.assertEqual(variant.get_type_string(), '()')
self.assertEqual(variant.n_children(), 0)
def test_create_tuple_with_int32(self):
variant = GLib.Variant('(i)', (3,))
self.assertEqual(variant.get_type_string(), '(i)')
self.assertTrue(isinstance(variant, GLib.Variant))
self.assertEqual(variant.n_children(), 1)
self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
self.assertEqual(variant.get_child_value(0).get_int32(), 3)
This is somewhat systemic, so the whole tests suite should be audited.
[1] https://git.gnome.org/browse/pygobject/tree/tests/test_overrides_glib.py?id=3.13.90#n39