[libreport] Fix a bug preventing users from repoting multiple problems at once

Jakub Filak jfilak at fedoraproject.org
Tue Sep 9 11:22:47 UTC 2014


commit 3e3a85ccb0fe39353ff7310c759310facc0ecf2b
Author: Jakub Filak <jfilak at redhat.com>
Date:   Tue Sep 9 12:44:45 2014 +0200

    Fix a bug preventing users from repoting multiple problems at once
    
    Resolves: #1134407

 0035-testsuite-add-test-not-reportable.patch       |   59 +++++++++++++++
 ...-lib-make_description-show-not-reportable.patch |   79 ++++++++++++++++++++
 ...d-make-report-gtk-s-application-nonunique.patch |   28 +++++++
 libreport.spec                                     |    9 ++-
 4 files changed, 174 insertions(+), 1 deletions(-)
---
diff --git a/0035-testsuite-add-test-not-reportable.patch b/0035-testsuite-add-test-not-reportable.patch
new file mode 100644
index 0000000..fae2f11
--- /dev/null
+++ b/0035-testsuite-add-test-not-reportable.patch
@@ -0,0 +1,59 @@
+From 05453bdb8715f69bf026c9bd06ae8c537fb744c0 Mon Sep 17 00:00:00 2001
+From: Matej Habrnal <matejhabrnal at gmail.com>
+Date: Thu, 4 Sep 2014 05:19:41 -0400
+Subject: [PATCH 35/37] testsuite: add test not-reportable
+
+Testing make_description to print not-reportable.
+---
+ tests/make_description.at | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+diff --git a/tests/make_description.at b/tests/make_description.at
+index 87c1fd4..7415cf8 100644
+--- a/tests/make_description.at
++++ b/tests/make_description.at
+@@ -188,3 +188,41 @@ int main(int argc, char **argv)
+     return 0;
+ }
+ ]])
++
++## -------------- ##
++## not_reportable ##
++## -------------- ##
++
++AT_TESTFUN([not_reportable],
++[[
++
++#include "internal_libreport.h"
++#include <assert.h>
++int main(int argc, char **argv)
++{
++    g_verbose = 3;
++
++    problem_data_t *pd = problem_data_new();
++
++    problem_data_add_text_noteditable(pd, FILENAME_NOT_REPORTABLE, "not-reportable");
++
++    char *description = make_description(pd, /*skipped names*/NULL, CD_MAX_TEXT_SIZE,
++                                         MAKEDESC_SHOW_URLS);
++
++    char *expected = xasprintf("%s: %*s%s\n",
++            "Reported", 14 - strlen("Reported"), "", "cannot be reported");
++
++    if (strstr(description, expected) == NULL)
++    {
++        printf("E:\n'%s'\n\nC:\n'%s'\n", expected, description);
++        assert(!"The description for not-reportable do not matches the expected description");
++    }
++
++    free(description);
++    free(expected);
++    problem_data_free(pd);
++
++    return 0;
++}
++
++]])
+-- 
+2.1.0
+
diff --git a/0036-lib-make_description-show-not-reportable.patch b/0036-lib-make_description-show-not-reportable.patch
new file mode 100644
index 0000000..2d2e49e
--- /dev/null
+++ b/0036-lib-make_description-show-not-reportable.patch
@@ -0,0 +1,79 @@
+From 4f1646b26b967d0d4d9b93cf15fe71e31dd511b0 Mon Sep 17 00:00:00 2001
+From: Matej Habrnal <matejhabrnal at gmail.com>
+Date: Thu, 4 Sep 2014 05:27:42 -0400
+Subject: [PATCH 36/37] lib: make_description show not-reportable
+
+When the flag from desc_flags is set to MAKEDESC_SHOW_URLS and problem is
+not-reportable. The abrt-cli shows not-reportable in listing.
+
+Related: rhbz#1066520
+---
+ src/lib/make_descr.c | 45 +++++++++++++++++++++++++--------------------
+ 1 file changed, 25 insertions(+), 20 deletions(-)
+
+diff --git a/src/lib/make_descr.c b/src/lib/make_descr.c
+index d183ac1..7f5c10b 100644
+--- a/src/lib/make_descr.c
++++ b/src/lib/make_descr.c
+@@ -101,33 +101,38 @@ char *make_description(problem_data_t *problem_data, char **names_to_skip,
+ 
+     if (desc_flags & MAKEDESC_SHOW_URLS)
+     {
+-        const char *reported_to = problem_data_get_content_or_NULL(problem_data, FILENAME_REPORTED_TO);
+-        if (reported_to != NULL)
++        if (problem_data_get_content_or_NULL(problem_data, FILENAME_NOT_REPORTABLE) != NULL)
++            strbuf_append_strf(buf_dsc, "%s%*s%s\n", _("Reported:"), 16 - strlen(_("Reported:")), "" , _("cannot be reported"));
++        else
+         {
+-            GList *reports = read_entire_reported_to_data(reported_to);
+-
+-            /* The value part begins on 17th column */
+-            /*                        0123456789ABCDEF*/
+-            const char *pad_prefix = "                ";
+-            char *first_prefix = xasprintf("%s%*s", _("Reported:"), 16 - strlen(_("Reported:")), "");
+-            const char *prefix     = first_prefix;
+-            for (GList *iter = reports; iter != NULL; iter = g_list_next(iter))
++            const char *reported_to = problem_data_get_content_or_NULL(problem_data, FILENAME_REPORTED_TO);
++            if (reported_to != NULL)
+             {
+-                const report_result_t *const report = (report_result_t *)iter->data;
++                GList *reports = read_entire_reported_to_data(reported_to);
++
++                /* The value part begins on 17th column */
++                /*                        0123456789ABCDEF*/
++                const char *pad_prefix = "                ";
++                char *first_prefix = xasprintf("%s%*s", _("Reported:"), 16 - strlen(_("Reported:")), "");
++                const char *prefix     = first_prefix;
++                for (GList *iter = reports; iter != NULL; iter = g_list_next(iter))
++                {
++                    const report_result_t *const report = (report_result_t *)iter->data;
+ 
+-                if (report->url == NULL)
+-                    continue;
++                    if (report->url == NULL)
++                        continue;
+ 
+-                strbuf_append_strf(buf_dsc, "%s%s\n", prefix, report->url);
++                    strbuf_append_strf(buf_dsc, "%s%s\n", prefix, report->url);
+ 
+-                if (prefix == first_prefix)
+-                {   /* Only the first URL is prefixed by 'Reported:' */
+-                    empty = false;
+-                    prefix = pad_prefix;
++                    if (prefix == first_prefix)
++                    {   /* Only the first URL is prefixed by 'Reported:' */
++                        empty = false;
++                        prefix = pad_prefix;
++                    }
+                 }
++                free(first_prefix);
++                g_list_free_full(reports, (GDestroyNotify)free_report_result);
+             }
+-            free(first_prefix);
+-            g_list_free_full(reports, (GDestroyNotify)free_report_result);
+         }
+     }
+ 
+-- 
+2.1.0
+
diff --git a/0037-wizard-make-report-gtk-s-application-nonunique.patch b/0037-wizard-make-report-gtk-s-application-nonunique.patch
new file mode 100644
index 0000000..473953e
--- /dev/null
+++ b/0037-wizard-make-report-gtk-s-application-nonunique.patch
@@ -0,0 +1,28 @@
+From e457344b79f872294338b7ec3006709a2d9f806a Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 9 Sep 2014 10:55:43 +0200
+Subject: [PATCH 37/37] wizard: make report-gtk's application nonunique
+
+Resolves: rhbz#1135782
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gui-wizard-gtk/main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
+index 697b91f..44918ec 100644
+--- a/src/gui-wizard-gtk/main.c
++++ b/src/gui-wizard-gtk/main.c
+@@ -216,7 +216,7 @@ int main(int argc, char **argv)
+     problem_data_reload_from_dump_dir();
+ 
+     g_custom_logger = &show_error_as_msgbox;
+-    GtkApplication *app = gtk_application_new("org.freedesktop.libreport.report", G_APPLICATION_FLAGS_NONE);
++    GtkApplication *app = gtk_application_new("org.freedesktop.libreport.report", G_APPLICATION_NON_UNIQUE);
+     g_signal_connect(app, "activate", G_CALLBACK(activate_wizard), (gpointer)expert_mode);
+     g_signal_connect(app, "startup",  G_CALLBACK(startup_wizard),  NULL);
+     /* Enter main loop */
+-- 
+2.1.0
+
diff --git a/libreport.spec b/libreport.spec
index 870bb64..79e7a95 100644
--- a/libreport.spec
+++ b/libreport.spec
@@ -7,7 +7,7 @@
 Summary: Generic library for reporting various problems
 Name: libreport
 Version: 2.2.3
-Release: 6%{?dist}
+Release: 7%{?dist}
 License: GPLv2+
 Group: System Environment/Libraries
 URL: https://fedorahosted.org/abrt/
@@ -48,6 +48,9 @@ Patch31: 0031-wizard-Next-button-insensitive-on-the-review-page-by.patch
 Patch32: 0032-report-parse-release-version-from-os-release.patch
 Patch33: 0033-testsuite-report-python-sanity-tests.patch
 Patch34: 0034-testsuite-work-around-the-issue-with-report-python.patch
+Patch35: 0035-testsuite-add-test-not-reportable.patch
+Patch36: 0036-lib-make_description-show-not-reportable.patch
+Patch37: 0037-wizard-make-report-gtk-s-application-nonunique.patch
 
 # git is need for '%%autosetup -S git' which automatically applies all the
 # patches above. Please, be aware that the patches must be generated
@@ -691,6 +694,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 
 %changelog
+* Tue Sep 09 2014 Jakub Filak <jfilak at redhat.com> 2.2.3-7
+- reporting GUI: allow users to run it multiple times
+- Resolves: #1134407
+
 * Mon Sep 01 2014 Jakub Filak <jfilak at redhat.com> 2.2.3-6
 - add "Details" button on the screen with comment
 - terminate reporting after the emergency analysis


More information about the scm-commits mailing list