From eac55b91a6a1e9bca1304aaf3fd48682edd69881 Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Tue, 31 May 2022 18:00:15 +0200 Subject: tests: Move testbed creation into fixture No need to duplicate this between tests once we add more tests. Also, it fixes the issue that the testbed was not free'ed resulting in the test directory to not be deleted. --- tests/test-double.c | 27 +++++++++++++++++++++------ tests/test-enumerator-filter.c | 31 +++++++++++++++++++++++-------- tests/test-sysfsattr.c | 27 +++++++++++++++++++++------ 3 files changed, 65 insertions(+), 20 deletions(-) diff --git a/tests/test-double.c b/tests/test-double.c index 886fa02..91e77c9 100644 --- a/tests/test-double.c +++ b/tests/test-double.c @@ -18,18 +18,30 @@ #define GNU_SKIP_RETURNCODE 77 +typedef struct { + UMockdevTestbed *testbed; +} Fixture; + static void -test_double (void) +fixture_setup (Fixture *f, G_GNUC_UNUSED const void *data) { - /* create test bed */ - UMockdevTestbed *testbed = umockdev_testbed_new (); + f->testbed = umockdev_testbed_new (); - /* Relies on a test bed having been set up */ g_assert (umockdev_in_mock_environment ()); +} + +static void +fixture_teardown (Fixture *f, G_GNUC_UNUSED const void *data) +{ + g_clear_object (&f->testbed); +} +static void +test_double (Fixture *f, G_GNUC_UNUSED const void *data) +{ g_assert_cmpstr (nl_langinfo(RADIXCHAR), ==, ","); - umockdev_testbed_add_device (testbed, "platform", "dev1", NULL, + umockdev_testbed_add_device (f->testbed, "platform", "dev1", NULL, "in_accel_scale", "0.0000098", NULL, "ID_MODEL", "KoolGadget", "SCALE", "0.0000098", NULL); @@ -63,7 +75,10 @@ int main(int argc, char **argv) g_test_init (&argc, &argv, NULL); - g_test_add_func ("/gudev/double", test_double); + g_test_add ("/gudev/double", Fixture, NULL, + fixture_setup, + test_double, + fixture_teardown); return g_test_run (); } diff --git a/tests/test-enumerator-filter.c b/tests/test-enumerator-filter.c index 6e9a073..0faf34f 100644 --- a/tests/test-enumerator-filter.c +++ b/tests/test-enumerator-filter.c @@ -20,25 +20,37 @@ #include +typedef struct { + UMockdevTestbed *testbed; +} Fixture; + static void -test_enumerator_filter (void) +fixture_setup (Fixture *f, G_GNUC_UNUSED const void *data) { - /* create test bed */ - UMockdevTestbed *testbed = umockdev_testbed_new (); + f->testbed = umockdev_testbed_new (); - /* Relies on a test bed having been set up */ g_assert (umockdev_in_mock_environment ()); +} + +static void +fixture_teardown (Fixture *f, G_GNUC_UNUSED const void *data) +{ + g_clear_object (&f->testbed); +} +static void +test_enumerator_filter (Fixture *f, G_GNUC_UNUSED const void *data) +{ /* Add 2 devices in the USB subsystem, and one in the DRM subsystem */ - umockdev_testbed_add_device (testbed, "usb", "dev1", NULL, + umockdev_testbed_add_device (f->testbed, "usb", "dev1", NULL, "idVendor", "0815", "idProduct", "AFFE", NULL, "ID_MODEL", "KoolGadget", NULL); - umockdev_testbed_add_device (testbed, "usb", "dev2", NULL, + umockdev_testbed_add_device (f->testbed, "usb", "dev2", NULL, "idVendor", "0815", "idProduct", "AFFF", NULL, "ID_MODEL", "KoolGadget 2", NULL); - umockdev_testbed_add_device (testbed, "drm", "dev3", NULL, + umockdev_testbed_add_device (f->testbed, "drm", "dev3", NULL, "ID_FOR_SEAT", "drm-pci-0000_00_02_0", NULL, NULL); @@ -66,7 +78,10 @@ int main(int argc, char **argv) setlocale (LC_ALL, NULL); g_test_init (&argc, &argv, NULL); - g_test_add_func ("/gudev/enumerator_filter", test_enumerator_filter); + g_test_add ("/gudev/enumerator_filter", Fixture, NULL, + fixture_setup, + test_enumerator_filter, + fixture_teardown); return g_test_run (); } diff --git a/tests/test-sysfsattr.c b/tests/test-sysfsattr.c index 9c2f769..13f4a5b 100644 --- a/tests/test-sysfsattr.c +++ b/tests/test-sysfsattr.c @@ -15,16 +15,28 @@ #include +typedef struct { + UMockdevTestbed *testbed; +} Fixture; + static void -test_uncached_sysfs_attr (void) +fixture_setup (Fixture *f, G_GNUC_UNUSED const void *data) { - /* create test bed */ - UMockdevTestbed *testbed = umockdev_testbed_new (); + f->testbed = umockdev_testbed_new (); - /* Relies on a test bed having been set up */ g_assert (umockdev_in_mock_environment ()); +} + +static void +fixture_teardown (Fixture *f, G_GNUC_UNUSED const void *data) +{ + g_clear_object (&f->testbed); +} - umockdev_testbed_add_device (testbed, "platform", "dev1", NULL, +static void +test_uncached_sysfs_attr (Fixture *f, G_GNUC_UNUSED const void *data) +{ + umockdev_testbed_add_device (f->testbed, "platform", "dev1", NULL, "dytc_lapmode", "1", "console", "Y\n", NULL, "ID_MODEL", "KoolGadget", NULL); @@ -73,7 +85,10 @@ int main(int argc, char **argv) setlocale (LC_ALL, NULL); g_test_init (&argc, &argv, NULL); - g_test_add_func ("/gudev/uncached_sysfs_attr", test_uncached_sysfs_attr); + g_test_add ("/gudev/uncached_sysfs_attr", Fixture, NULL, + fixture_setup, + test_uncached_sysfs_attr, + fixture_teardown); return g_test_run (); } -- cgit v1.2.1