[gnome-software] lib: Formalise use of GS_APP_PROGRESS_UNKNOWN



commit 0c2fa837907773279f9cd7bca46f067c63f52972
Author: Philip Withnall <withnall endlessm com>
Date:   Tue Apr 28 18:22:42 2020 +0100

    lib: Formalise use of GS_APP_PROGRESS_UNKNOWN
    
    Formalise handling of unknown progress values a little in `lib/` by
    using `GS_APP_PROGRESS_UNKNOWN` introduced in the previous few commits.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>
    Helps: #276

 lib/gs-plugin-loader.c |  8 ++++----
 lib/gs-self-test.c     | 24 ++++++++++++++++++++++--
 2 files changed, 26 insertions(+), 6 deletions(-)
---
diff --git a/lib/gs-plugin-loader.c b/lib/gs-plugin-loader.c
index 003a06a1..fef08423 100644
--- a/lib/gs-plugin-loader.c
+++ b/lib/gs-plugin-loader.c
@@ -205,15 +205,15 @@ reset_app_progress (GsApp *app)
        GsAppList *addons = gs_app_get_addons (app);
        GsAppList *related = gs_app_get_related (app);
 
-       gs_app_set_progress (app, 0);
+       gs_app_set_progress (app, GS_APP_PROGRESS_UNKNOWN);
 
        for (guint i = 0; i < gs_app_list_length (addons); i++) {
                GsApp *app_addons = gs_app_list_index (addons, i);
-               gs_app_set_progress (app_addons, 0);
+               gs_app_set_progress (app_addons, GS_APP_PROGRESS_UNKNOWN);
        }
        for (guint i = 0; i < gs_app_list_length (related); i++) {
                GsApp *app_related = gs_app_list_index (related, i);
-               gs_app_set_progress (app_related, 0);
+               gs_app_set_progress (app_related, GS_APP_PROGRESS_UNKNOWN);
        }
 }
 
@@ -1626,7 +1626,7 @@ gs_plugin_loader_pending_apps_add (GsPluginLoader *plugin_loader,
                GsApp *app = gs_app_list_index (list, i);
                g_ptr_array_add (priv->pending_apps, g_object_ref (app));
                /* make sure the progress is properly initialized */
-               gs_app_set_progress (app, 0);
+               gs_app_set_progress (app, GS_APP_PROGRESS_UNKNOWN);
        }
        g_idle_add (emit_pending_apps_idle, g_object_ref (plugin_loader));
 }
diff --git a/lib/gs-self-test.c b/lib/gs-self-test.c
index 7ac66c9e..0eb5d380 100644
--- a/lib/gs-self-test.c
+++ b/lib/gs-self-test.c
@@ -678,8 +678,11 @@ gs_app_func (void)
        /* check setting the progress */
        gs_app_set_progress (app, 42);
        g_assert_cmpuint (gs_app_get_progress (app), ==, 42);
-       gs_app_set_progress (app, 142);
-       g_assert_cmpuint (gs_app_get_progress (app), ==, 100);
+       gs_app_set_progress (app, 0);
+       g_assert_cmpuint (gs_app_get_progress (app), ==, 0);
+       gs_app_set_progress (app, GS_APP_PROGRESS_UNKNOWN);
+       g_assert_cmpuint (gs_app_get_progress (app), ==, GS_APP_PROGRESS_UNKNOWN);
+       g_assert_false ((gint) 0 <= (gint) GS_APP_PROGRESS_UNKNOWN && GS_APP_PROGRESS_UNKNOWN <= 100);
 
        /* check pending action */
        g_assert_cmpuint (gs_app_get_pending_action (app), ==, GS_PLUGIN_ACTION_UNKNOWN);
@@ -691,6 +694,22 @@ gs_app_func (void)
        gs_app_set_state_recover (app);
 }
 
+static void
+gs_app_progress_clamping_func (void)
+{
+       g_autoptr(GsApp) app = NULL;
+
+       if (g_test_subprocess ()) {
+               app = gs_app_new ("gnome-software.desktop");
+               gs_app_set_progress (app, 142);
+               g_assert_cmpuint (gs_app_get_progress (app), ==, 100);
+       } else {
+               g_test_trap_subprocess (NULL, 0, 0);
+               g_test_trap_assert_failed ();
+               g_test_trap_assert_stderr ("*WARNING*cannot set 142% for *, setting instead: 100%*");
+       }
+}
+
 static void
 gs_app_list_wildcard_dedupe_func (void)
 {
@@ -796,6 +815,7 @@ main (int argc, char **argv)
        g_test_add_func ("/gnome-software/lib/utils{parse-evr}", gs_utils_parse_evr_func);
        g_test_add_func ("/gnome-software/lib/os-release", gs_os_release_func);
        g_test_add_func ("/gnome-software/lib/app", gs_app_func);
+       g_test_add_func ("/gnome-software/lib/app/progress-clamping", gs_app_progress_clamping_func);
        g_test_add_func ("/gnome-software/lib/app{addons}", gs_app_addons_func);
        g_test_add_func ("/gnome-software/lib/app{unique-id}", gs_app_unique_id_func);
        g_test_add_func ("/gnome-software/lib/app{thread}", gs_app_thread_func);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]