Compare commits
130 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45da97f63e | ||
|
|
c77d81af75 | ||
|
|
87712a5e5a | ||
|
|
4c7cbd0028 | ||
|
|
98096d701c | ||
|
|
4c22c90ed7 | ||
|
|
f12e85e73a | ||
|
|
30c54c4b8f | ||
|
|
16c3ff1ff8 | ||
|
|
0456c36351 | ||
|
|
98db5ac07f | ||
|
|
d86ac262fb | ||
|
|
3265c40aad | ||
|
|
e756ae568d | ||
|
|
3d476b7c77 | ||
|
|
d1f5aea9e3 | ||
|
|
2b88cb1669 | ||
|
|
5e25b02299 | ||
|
|
70c2d78a6e | ||
|
|
08bd6422c3 | ||
|
|
d5f31e39bb | ||
|
|
7dafb9633a | ||
|
|
d20251d629 | ||
|
|
502f8c7412 | ||
|
|
d1debfa977 | ||
|
|
4abb72b5a7 | ||
|
|
4b1f8f7ca8 | ||
|
|
c62536f4fc | ||
|
|
0838e28209 | ||
|
|
9c8cf1e040 | ||
|
|
721c9858b9 | ||
|
|
df1c462111 | ||
|
|
c7bd2e9b60 | ||
|
|
a60f2d52f5 | ||
|
|
5c6a8ff0a6 | ||
|
|
1daa8aeacb | ||
|
|
c59a73626c | ||
|
|
239f7c7dbe | ||
|
|
c57e81043d | ||
|
|
246c24ec2f | ||
|
|
dfa3ff2590 | ||
|
|
36ac44e99e | ||
|
|
de63ffd8d8 | ||
|
|
b5305fd236 | ||
|
|
aa655511eb | ||
|
|
a5f24502c1 | ||
|
|
ff73caace9 | ||
|
|
a531967da4 | ||
|
|
2086847084 | ||
|
|
210e3db980 |
||
|
|
9b8956b0f0 | ||
|
|
662f01769c | ||
|
|
be6247841b | ||
|
|
35e044e3e3 | ||
|
|
0ca3e80db1 | ||
|
|
edab1b2aab | ||
|
|
9785cc8667 | ||
|
|
dd2a474758 | ||
|
|
608e5752dd | ||
|
|
5ab705c31a | ||
|
|
9ab59e2f7c | ||
|
|
52b033c56c | ||
|
|
5f51ab9799 | ||
|
|
df126de8c3 | ||
|
|
0cacf21d88 | ||
|
|
4eeb8e1577 | ||
|
|
ec078627a6 | ||
|
|
d9b53bd182 | ||
|
|
aa4f8872d7 | ||
|
|
11466005e0 | ||
|
|
e6ffee77b6 | ||
|
|
87befbd9c8 | ||
|
|
dff3619715 | ||
|
|
5c189cf957 | ||
|
|
dffb347d31 | ||
|
|
9356e160f0 | ||
|
|
0ab817ba2c | ||
|
|
05f31ca481 | ||
|
|
246d317411 | ||
|
|
1fa21e6ed9 | ||
|
|
6d705a2daf | ||
|
|
79fc4e45b3 | ||
|
|
e77ad01ea9 | ||
|
|
0ba66a3414 | ||
|
|
e66b28d0aa | ||
|
|
a482043152 | ||
|
|
8c80901c1e | ||
|
|
55c465af05 | ||
|
|
84d394ceb8 | ||
|
|
c3955d78ea | ||
|
|
6bf691a3db | ||
|
|
d65da2513b | ||
|
|
baf3eb10e5 | ||
|
|
b93f63f5e5 | ||
|
|
7b5261251a | ||
|
|
b657b8c0e9 | ||
|
|
3e1f0487c1 | ||
|
|
db8863c3f1 | ||
|
|
7b7c13b297 | ||
|
|
216f0e95b1 | ||
|
|
7aed889e6b | ||
|
|
35ff5f8bde | ||
|
|
6d42aeee65 | ||
|
|
8f048d7d79 |
||
|
|
46d8661dcb | ||
|
|
e159c55882 | ||
|
|
100ee1da4b | ||
|
|
911ee9ee8d |
||
|
|
000be99d33 | ||
|
|
81821dbddb | ||
|
|
5cfc64eb8f | ||
|
|
e398dd4af7 | ||
|
|
59fdf2c79f | ||
|
|
eba2d1c7fa |
||
|
|
4e7caa2be6 | ||
|
|
53b1870f10 | ||
|
|
2c2805e4e0 |
||
|
|
7f57fcb640 | ||
|
|
c8f143d406 | ||
|
|
4104372ff4 |
||
|
|
b8624863e8 | ||
|
|
5bd628274a | ||
|
|
e84543384f | ||
|
|
292f303070 | ||
|
|
85752376cb | ||
|
|
dc86ec51dd | ||
|
|
86ed6a7356 | ||
|
|
3aa06e3117 | ||
|
|
8065018638 | ||
|
|
fb2c7feb70 |
24 changed files with 743 additions and 3745 deletions
1
.fmf/version
Normal file
1
.fmf/version
Normal file
|
|
@ -0,0 +1 @@
|
|||
1
|
||||
34
.gitignore
vendored
34
.gitignore
vendored
|
|
@ -1 +1,33 @@
|
|||
/libreport-2.*.tar.gz
|
||||
/libreport-2.9.3.tar.gz
|
||||
/libreport-2.9.4.tar.gz
|
||||
/libreport-2.9.5.tar.gz
|
||||
/libreport-2.9.6.tar.gz
|
||||
/libreport-2.9.7.tar.gz
|
||||
/libreport-2.10.0.tar.gz
|
||||
/libreport-2.10.1.tar.gz
|
||||
/libreport-2.11.0.tar.gz
|
||||
/libreport-2.11.1.tar.gz
|
||||
/libreport-2.11.2.tar.gz
|
||||
/libreport-2.11.3.tar.gz
|
||||
/libreport-2.12.0.tar.gz
|
||||
/libreport-2.13.0.tar.gz
|
||||
/libreport-2.13.1.tar.gz
|
||||
/libreport-2.14.0.tar.gz
|
||||
/libreport-2.15.1.tar.gz
|
||||
/libreport-2.15.2.tar.gz
|
||||
/libreport-2.16.0.tar.gz
|
||||
/libreport-2.17.0.tar.gz
|
||||
/libreport-2.17.1.tar.gz
|
||||
/libreport-2.17.2.tar.gz
|
||||
/libreport-2.17.3.tar.gz
|
||||
/libreport-2.17.4.tar.gz
|
||||
/libreport-2.17.5.tar.gz
|
||||
/libreport-2.17.6.tar.gz
|
||||
/libreport-2.17.7.tar.gz
|
||||
/libreport-2.17.8.tar.gz
|
||||
/libreport-2.17.9.tar.gz
|
||||
/libreport-2.17.10.tar.gz
|
||||
/libreport-2.17.11.tar.gz
|
||||
/libreport-2.17.13.tar.gz
|
||||
/libreport-2.17.14.tar.gz
|
||||
/libreport-2.17.15.tar.gz
|
||||
|
|
|
|||
21
.packit.yml
Normal file
21
.packit.yml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
specfile_path: libreport.spec
|
||||
synced_files:
|
||||
- .packit.yml
|
||||
- libreport.spec
|
||||
upstream_package_name: libreport
|
||||
upstream_project_url: https://github.com/abrt/libreport
|
||||
downstream_package_name: libreport
|
||||
|
||||
# No extra dependencies are necessary to build the SRPM.
|
||||
srpm_build_deps: []
|
||||
|
||||
jobs:
|
||||
- job: propose_downstream
|
||||
trigger: release
|
||||
metadata:
|
||||
dist_git_branch: fedora-all
|
||||
- job: copr_build
|
||||
trigger: pull_request
|
||||
metadata:
|
||||
targets:
|
||||
- fedora-all
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
From bc3149ba31c063d334dd95a21c4214cef11f46da Mon Sep 17 00:00:00 2001
|
||||
From: Julius Milan <jmilan@redhat.com>
|
||||
Date: Wed, 22 Mar 2017 14:10:04 +0100
|
||||
Subject: [PATCH] augeas: trim spaces on eol, around value separator
|
||||
|
||||
Resolves abrt/libreport#474
|
||||
Related to rhbz#1434414
|
||||
---
|
||||
augeas/libreport.aug | 19 ++++++++++++-------
|
||||
augeas/test_libreport.aug | 20 ++++++++++++++++++++
|
||||
2 files changed, 32 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
|
||||
index 483eeaf..46ffb73 100644
|
||||
--- a/augeas/libreport.aug
|
||||
+++ b/augeas/libreport.aug
|
||||
@@ -2,19 +2,24 @@ module Libreport =
|
||||
autoload xfm
|
||||
|
||||
(* Define useful primitives *)
|
||||
- let value_sep = del / ?= ?/ " = "
|
||||
- let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n]?)/
|
||||
- let eol = del /\n/ "\n"
|
||||
- let ident = /[a-zA-Z][a-zA-Z_]+/
|
||||
+ let val_sep = del /[ \t]*=[ \t]*/ " = "
|
||||
+ let val = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
|
||||
+ let eol = del /\n/ "\n"
|
||||
+ let whitespace_eol = del /[ \t]*\n/ "\n"
|
||||
+ let ident = /[a-zA-Z][a-zA-Z_]+/
|
||||
|
||||
(* Define comment *)
|
||||
- let comment = [ label "#comment" . del /#[ \t]*/ "# " . value_to_eol . eol ]
|
||||
+ let commented_line = [ label "#comment" . del /#[ \t]*/ "# " . val . eol ]
|
||||
+ let empty_comment = [ label "#comment" . value "" . del /#[ \t]*/ "# " . eol ]
|
||||
+ let comment = commented_line | empty_comment
|
||||
|
||||
(* Define empty *)
|
||||
- let empty = [ del /[ \t]*\n/ "\n" ]
|
||||
+ let empty = [ del /[ \t]*\n/ "\n" ]
|
||||
|
||||
(* Define option *)
|
||||
- let option = [ del /[ \t]*/ "" . key ident . value_sep . value_to_eol . eol ]
|
||||
+ let option_val = [ del /[ \t]*/ "" . key ident . val_sep . val . whitespace_eol ]
|
||||
+ let option_no_val = [ value "" . del /[ \t]*/ "" . key ident . val_sep . eol ]
|
||||
+ let option = option_val | option_no_val
|
||||
|
||||
(* Define lens *)
|
||||
let lns = ( comment | empty | option )*
|
||||
diff --git a/augeas/test_libreport.aug b/augeas/test_libreport.aug
|
||||
index 116e97c..3dfbfa6 100644
|
||||
--- a/augeas/test_libreport.aug
|
||||
+++ b/augeas/test_libreport.aug
|
||||
@@ -16,6 +16,8 @@ Password =
|
||||
# bugs in selinux-policy component.
|
||||
# (If you need to add more, the syntax is: \"component[,component...]\")
|
||||
#
|
||||
+#
|
||||
+#
|
||||
DontMatchComponents = selinux-policy
|
||||
|
||||
# for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets
|
||||
@@ -25,6 +27,14 @@ PrivateGroups=private
|
||||
Whitespace_two=start
|
||||
Whitespace_three =start
|
||||
Whitespace_four= start
|
||||
+
|
||||
+AssignmentWhitespace_a =what
|
||||
+ AssignmentWhitespace_b = an
|
||||
+AssignmentWhitespace_c= original
|
||||
+ AssignmentWhitespace_d = idea
|
||||
+
|
||||
+EOLWhitespace_a = nice
|
||||
+EOLWhitespace_b = nice
|
||||
"
|
||||
|
||||
test Libreport.lns get conf =
|
||||
@@ -44,6 +54,8 @@ PrivateGroups=private
|
||||
{ "#comment" = "bugs in selinux-policy component." }
|
||||
{ "#comment" = "(If you need to add more, the syntax is: \"component[,component...]\")" }
|
||||
{ "#comment" = "" }
|
||||
+ { "#comment" = "" }
|
||||
+ { "#comment" = "" }
|
||||
{ "DontMatchComponents" = "selinux-policy" }
|
||||
{}
|
||||
{ "#comment" = "for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets" }
|
||||
@@ -53,3 +65,11 @@ PrivateGroups=private
|
||||
{ "Whitespace_two" = "start" }
|
||||
{ "Whitespace_three" = "start" }
|
||||
{ "Whitespace_four" = "start" }
|
||||
+ {}
|
||||
+ { "AssignmentWhitespace_a" = "what" }
|
||||
+ { "AssignmentWhitespace_b" = "an" }
|
||||
+ { "AssignmentWhitespace_c" = "original" }
|
||||
+ { "AssignmentWhitespace_d" = "idea" }
|
||||
+ {}
|
||||
+ { "EOLWhitespace_a" = "nice" }
|
||||
+ { "EOLWhitespace_b" = "nice" }
|
||||
--
|
||||
2.9.3
|
||||
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
From f97b21d1e1d4bff4e667991997dd78fec3b95159 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 14 Mar 2017 12:55:25 +0100
|
||||
Subject: [PATCH] reporter-s-journal: add journal default entries
|
||||
|
||||
This commit adds 3 new fields into journal logs. All of them are in the
|
||||
NONE dump.
|
||||
|
||||
The new fields are:
|
||||
PROBLEM_DIR - Represents absolute file system path of problem directory.
|
||||
The full path is needed because that is the way with which are
|
||||
problems identified in DBus Problems2API.
|
||||
PROBLEM_UUID - Represents uuid
|
||||
PROBLEM_DUPHASH - Represents duphash
|
||||
|
||||
These new fields were needed for ABRT in Cockpit for connecting problems
|
||||
with journal entries. All three are needed, because the problem directory
|
||||
might be removed at the time of reading journal but a dupe can be
|
||||
present there and the dupe can be identified based on DUPHASH or UUID.
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/reporter-systemd-journal.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
|
||||
index 8df5ac7..957002b 100644
|
||||
--- a/src/plugins/reporter-systemd-journal.c
|
||||
+++ b/src/plugins/reporter-systemd-journal.c
|
||||
@@ -102,6 +102,7 @@ static void msg_content_free(msg_content_t *msg_c)
|
||||
#define BINARY_NAME "binary"
|
||||
#define SYSLOG_ID "SYSLOG_IDENTIFIER"
|
||||
#define MESSAGE_ID "MESSAGE_ID"
|
||||
+#define DUMPDIR_PATH "DIR"
|
||||
|
||||
enum {
|
||||
DUMP_NONE = 1 << 0,
|
||||
@@ -122,6 +123,9 @@ static const char *const fields_default[] = {
|
||||
FILENAME_EXCEPTION_TYPE ,
|
||||
FILENAME_REASON ,
|
||||
FILENAME_CRASH_FUNCTION ,
|
||||
+ DUMPDIR_PATH ,
|
||||
+ FILENAME_UUID ,
|
||||
+ FILENAME_DUPHASH ,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -302,6 +306,12 @@ int main(int argc, char **argv)
|
||||
if (binary_name)
|
||||
problem_data_add_text_noteditable(problem_data, BINARY_NAME, binary_name);
|
||||
|
||||
+ /* add problem dir path into problem data */
|
||||
+ char *abspath = realpath(dump_dir_name, NULL);
|
||||
+ if (abspath)
|
||||
+ problem_data_add_text_noteditable(problem_data, DUMPDIR_PATH, abspath);
|
||||
+ free(abspath);
|
||||
+
|
||||
/* crash_function element is neeeded by systemd journal messages, save ??, if it doesn't exist */
|
||||
const char *crash_function = problem_data_get_content_or_NULL(problem_data, FILENAME_CRASH_FUNCTION);
|
||||
if (!crash_function)
|
||||
--
|
||||
2.9.3
|
||||
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From d2b5f09e2757f2585eb1003fdf6db43e58013c19 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Marusak <mmarusak@redhat.com>
|
||||
Date: Tue, 21 Mar 2017 09:04:38 +0100
|
||||
Subject: [PATCH] reporter-s-journal: add count to default logs
|
||||
|
||||
Field count is available only in FULL dump. There are however two good
|
||||
reasons why to include this in NONE dump.
|
||||
|
||||
1. It is quite useful to know if this problem occurred first time or is it
|
||||
problem that happens a lot.
|
||||
|
||||
2. We need it for cockpit integration. If the problem happened more times it
|
||||
will have multiple logs. By comparing count in the log and real count, we can
|
||||
know, if this is the last log of the problem. (timestamps do not work ideally
|
||||
for this, since the time of problem does not equal to the time of the
|
||||
log - there is some delay)
|
||||
|
||||
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
|
||||
---
|
||||
src/plugins/reporter-systemd-journal.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
|
||||
index 957002b..d12296e 100644
|
||||
--- a/src/plugins/reporter-systemd-journal.c
|
||||
+++ b/src/plugins/reporter-systemd-journal.c
|
||||
@@ -126,6 +126,7 @@ static const char *const fields_default[] = {
|
||||
DUMPDIR_PATH ,
|
||||
FILENAME_UUID ,
|
||||
FILENAME_DUPHASH ,
|
||||
+ FILENAME_COUNT ,
|
||||
NULL
|
||||
};
|
||||
|
||||
--
|
||||
2.9.3
|
||||
|
||||
|
|
@ -1,297 +0,0 @@
|
|||
From 45a5ca011bd0a402cd55bbca950634280e152dea Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kutlak <mkutlak@redhat.com>
|
||||
Date: Fri, 7 Apr 2017 10:49:51 +0200
|
||||
Subject: [PATCH 04/14] lib: fix newline issue with ask_password
|
||||
|
||||
The newline wasn't printed out because printing characters in terminal was
|
||||
disabled (ECHO flag unset). After 'ask_password' function call, there would
|
||||
have to be print function to create newline, otherwise the next message
|
||||
would show up in the same line.
|
||||
|
||||
ECHONL flag allows to print newline character even if the ECHO flag is disabled.
|
||||
|
||||
Logic for the changes of the flags follows:
|
||||
Change ECHO flag only when:
|
||||
- ECHO is set (0) and there was no change (0) previously.
|
||||
OR
|
||||
- ECHO is unset (1) and there was a change (1) previously.
|
||||
|
||||
Change ECHONL flag only when:
|
||||
- ECHONL is unset (1) and there was no change (0) previously.
|
||||
OR
|
||||
- ECHONL is set (0) and there was a change (1) previously.
|
||||
|
||||
Also ECHONL needs ICANON flag to be set (It is set by default).
|
||||
|
||||
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
|
||||
---
|
||||
configure.ac | 4 ++
|
||||
src/cli/cli-report.c | 3 -
|
||||
src/lib/client.c | 18 ++++-
|
||||
src/plugins/reporter-mantisbt.c | 2 -
|
||||
tests/Makefile.am | 3 +-
|
||||
tests/client.at | 152 ++++++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 1 +
|
||||
7 files changed, 174 insertions(+), 9 deletions(-)
|
||||
create mode 100644 tests/client.at
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ccefe50..c8745f8 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -239,6 +239,10 @@ PKG_CHECK_MODULES([AUGEAS], [augeas])
|
||||
#PKG_CHECK_MODULES([LZ4], [liblz4])
|
||||
|
||||
|
||||
+AC_SEARCH_LIBS([forkpty], [util])
|
||||
+AC_REPLACE_FUNCS([forkpty])
|
||||
+
|
||||
+
|
||||
AC_ARG_WITH(newt,
|
||||
AS_HELP_STRING([--with-newt],[use newt (default is YES)]),
|
||||
LIBREPORT_PARSE_WITH([newt]))
|
||||
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
|
||||
index c83dc20..537b194 100644
|
||||
--- a/src/cli/cli-report.c
|
||||
+++ b/src/cli/cli-report.c
|
||||
@@ -442,9 +442,6 @@ static void ask_for_missing_settings(const char *event_name)
|
||||
case OPTION_TYPE_PASSWORD:
|
||||
{
|
||||
opt->eo_value = ask_password(question);
|
||||
- /* Newline was not added by pressing Enter because ECHO was
|
||||
- disabled, so add it now. */
|
||||
- puts("");
|
||||
break;
|
||||
}
|
||||
case OPTION_TYPE_BOOL:
|
||||
diff --git a/src/lib/client.c b/src/lib/client.c
|
||||
index 811f33e..8a4e2ad 100644
|
||||
--- a/src/lib/client.c
|
||||
+++ b/src/lib/client.c
|
||||
@@ -34,14 +34,26 @@ static int is_noninteractive_mode()
|
||||
int set_echo(int enable)
|
||||
{
|
||||
struct termios t;
|
||||
+ int chvalue = 0;
|
||||
if (tcgetattr(STDIN_FILENO, &t) < 0)
|
||||
return 0;
|
||||
|
||||
- /* No change needed? */
|
||||
- if (!(t.c_lflag & ECHO) == !enable)
|
||||
+ /* ECHO flag change if needed */
|
||||
+ if ((!(t.c_lflag & ECHO)) == enable)
|
||||
+ {
|
||||
+ t.c_lflag ^= ECHO;
|
||||
+ chvalue = 1;
|
||||
+ }
|
||||
+ /* ECHONL flag change if needed */
|
||||
+ if ((!(t.c_lflag & ECHONL)) != enable)
|
||||
+ {
|
||||
+ t.c_lflag ^= ECHONL;
|
||||
+ chvalue = 1;
|
||||
+ }
|
||||
+
|
||||
+ if (!chvalue)
|
||||
return 0;
|
||||
|
||||
- t.c_lflag ^= ECHO;
|
||||
if (tcsetattr(STDIN_FILENO, TCSANOW, &t) < 0)
|
||||
perror_msg_and_die("tcsetattr");
|
||||
|
||||
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
|
||||
index 5062d32..622af87 100644
|
||||
--- a/src/plugins/reporter-mantisbt.c
|
||||
+++ b/src/plugins/reporter-mantisbt.c
|
||||
@@ -62,8 +62,6 @@ static char *
|
||||
ask_mantisbt_password(const char *message)
|
||||
{
|
||||
char *password = ask_password(message);
|
||||
- /* TODO: this should be fixed in ask_password() as other tools have the same problem */
|
||||
- putchar('\n');
|
||||
if (password == NULL || password[0] == '\0')
|
||||
{
|
||||
set_xfunc_error_retval(EXIT_CANCEL_BY_USER);
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index df19403..2b8972d 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -59,7 +59,8 @@ TESTSUITE_AT = \
|
||||
event_config.at \
|
||||
proc_helpers.at \
|
||||
compress.at \
|
||||
- forbidden_words.at
|
||||
+ forbidden_words.at \
|
||||
+ client.at
|
||||
|
||||
TESTSUITE_AT_IN = \
|
||||
bugzilla_plugin.at
|
||||
diff --git a/tests/client.at b/tests/client.at
|
||||
new file mode 100644
|
||||
index 0000000..b643789
|
||||
--- /dev/null
|
||||
+++ b/tests/client.at
|
||||
@@ -0,0 +1,152 @@
|
||||
+# -*- Autotest -*-
|
||||
+
|
||||
+AT_BANNER([Client])
|
||||
+
|
||||
+## ---------------- ##
|
||||
+## set_echo ##
|
||||
+## ---------------- ##
|
||||
+
|
||||
+AT_TESTFUN([set_echo],
|
||||
+[[
|
||||
+#include <assert.h>
|
||||
+#include "client.h"
|
||||
+#include "internal_libreport.h"
|
||||
+#include <pty.h>
|
||||
+
|
||||
+#define ECHO_TEST (!(new_mode.c_lflag & ECHO))
|
||||
+#define ECHONL_TEST (!(new_mode.c_lflag & ECHONL))
|
||||
+
|
||||
+int main (void)
|
||||
+{
|
||||
+ int master_pty;
|
||||
+
|
||||
+ pid_t pid = forkpty(&master_pty, NULL, NULL, NULL);
|
||||
+ if (pid < 0) {
|
||||
+ perror_msg_and_die("forkpty failed.");
|
||||
+ }
|
||||
+
|
||||
+ if (pid == 0) {
|
||||
+ int check, result, changed;
|
||||
+ struct termios old_mode, new_mode;
|
||||
+ assert(isatty(STDIN_FILENO) == 1);
|
||||
+
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ old_mode = new_mode;
|
||||
+
|
||||
+ new_mode.c_lflag |= ECHO;
|
||||
+ new_mode.c_lflag &= ~(ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 0;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ assert(result != changed);
|
||||
+ assert(ECHO_TEST == 1);
|
||||
+ assert(ECHONL_TEST == 0);
|
||||
+
|
||||
+ changed = 1;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ assert(result == changed);
|
||||
+ assert(ECHO_TEST == 0);
|
||||
+ assert(ECHONL_TEST == 1);
|
||||
+
|
||||
+ new_mode.c_lflag &= ~(ECHO);
|
||||
+ new_mode.c_lflag |= ECHONL;
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 0;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(result == changed);
|
||||
+ assert(ECHO_TEST == 1);
|
||||
+ assert(ECHONL_TEST == 0);
|
||||
+
|
||||
+ new_mode.c_lflag |= ECHO;
|
||||
+ new_mode.c_lflag &= ~(ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 1;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(result != changed);
|
||||
+ assert(ECHO_TEST == 0);
|
||||
+ assert(ECHONL_TEST == 1);
|
||||
+
|
||||
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 0;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(result != changed);
|
||||
+ assert(ECHO_TEST == 1);
|
||||
+ assert(ECHONL_TEST == 0);
|
||||
+
|
||||
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 1;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ assert(result == changed);
|
||||
+ assert(ECHO_TEST == 0);
|
||||
+ assert(ECHONL_TEST == 1);
|
||||
+
|
||||
+ new_mode.c_lflag |= (ECHO | ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 0;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ assert(result != changed);
|
||||
+ assert(ECHO_TEST == 1);
|
||||
+ assert(ECHONL_TEST == 0);
|
||||
+
|
||||
+ new_mode.c_lflag |= (ECHO | ECHONL);
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ changed = 1;
|
||||
+ result = set_echo(changed);
|
||||
+ check = tcgetattr(STDIN_FILENO, &new_mode);
|
||||
+ assert(check == 0);
|
||||
+ assert(result == changed);
|
||||
+ assert(ECHO_TEST == 0);
|
||||
+ assert(ECHONL_TEST == 1);
|
||||
+
|
||||
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &old_mode);
|
||||
+ assert(check == 0);
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ int status;
|
||||
+ if (safe_waitpid(pid, &status, 0) < 0) {
|
||||
+ perror_msg_and_die("waitpid failed.");
|
||||
+ }
|
||||
+
|
||||
+ if (WIFEXITED(status)) {
|
||||
+ return WEXITSTATUS(status);
|
||||
+ }
|
||||
+ else if (WIFSIGNALED(status)) {
|
||||
+ error_msg_and_die("Killed by signal %d.", WTERMSIG(status));
|
||||
+ }
|
||||
+ else {
|
||||
+ error_msg_and_die("Test unexpectedly stopped/continued.");
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+]])
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index a0865b2..45ff6da 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -30,3 +30,4 @@ m4_include([bugzilla_plugin.at])
|
||||
m4_include([proc_helpers.at])
|
||||
m4_include([compress.at])
|
||||
m4_include([forbidden_words.at])
|
||||
+m4_include([client.at])
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From 864b391f904963296b59fc26142f0dc8b5f34833 Mon Sep 17 00:00:00 2001
|
||||
From: Julius Milan <jmilan@redhat.com>
|
||||
Date: Wed, 26 Apr 2017 11:07:09 +0200
|
||||
Subject: [PATCH 05/14] configure.ac: update glib min. version dependency
|
||||
|
||||
Related to rhbz#1445669
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c8745f8..15c743f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -224,7 +224,7 @@ AC_SUBST(PYTHON3_LIBS)
|
||||
AC_SUBST(python3dir, $PYTHON3_DIR)
|
||||
AC_SUBST(py3execdir, $PYTHON3_EXECDIR)
|
||||
|
||||
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21])
|
||||
+PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.43])
|
||||
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
|
||||
PKG_CHECK_MODULES([DBUS], [dbus-1])
|
||||
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,401 +0,0 @@
|
|||
From f183ccbe0f6e954ec2c9d0e1a1296ac54ff637e5 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kutlak <mkutlak@redhat.com>
|
||||
Date: Tue, 25 Apr 2017 18:20:08 +0200
|
||||
Subject: [PATCH 08/14] lib: replace hash table with list
|
||||
|
||||
Order of login credentials wasn't guaranteed, because event options with missing
|
||||
values were inserted into hash table and then extracted from it.
|
||||
|
||||
I renamed function validate_event as its name was a little bit confusing. The function
|
||||
returns options that are missing input values and error message should be displayed.
|
||||
|
||||
This fixes abrt/abrt#1231
|
||||
|
||||
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
|
||||
---
|
||||
src/cli/cli-report.c | 32 ++++++-------
|
||||
src/gui-wizard-gtk/wizard.c | 4 +-
|
||||
src/include/event_config.h | 15 +++++-
|
||||
src/lib/event_config.c | 36 +++++++++++----
|
||||
src/report-newt/report-newt.c | 25 +++++-----
|
||||
tests/event_config.at | 103 ++++++++++++++++++++++++++++++++++++++++++
|
||||
6 files changed, 173 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
|
||||
index 537b194..fd14888 100644
|
||||
--- a/src/cli/cli-report.c
|
||||
+++ b/src/cli/cli-report.c
|
||||
@@ -414,19 +414,17 @@ static void ask_for_missing_settings(const char *event_name)
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
- GHashTable *error_table = validate_event(event_name);
|
||||
- if (!error_table)
|
||||
+ GList *err_list = NULL, *iter = NULL;
|
||||
+ err_list = get_options_with_err_msg(event_name);
|
||||
+ if(!err_list)
|
||||
return;
|
||||
|
||||
event_config_t *event_config = get_event_config(event_name);
|
||||
|
||||
- GHashTableIter iter;
|
||||
- char *opt_name, *err_msg;
|
||||
- g_hash_table_iter_init(&iter, error_table);
|
||||
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
|
||||
+ for (iter = err_list; iter; iter = iter->next)
|
||||
{
|
||||
- event_option_t *opt = get_event_option_from_list(opt_name,
|
||||
- event_config->options);
|
||||
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
|
||||
+ event_option_t *opt = get_event_option_from_list(err_data->invopt_name, event_config->options);
|
||||
|
||||
free(opt->eo_value);
|
||||
opt->eo_value = NULL;
|
||||
@@ -459,25 +457,27 @@ static void ask_for_missing_settings(const char *event_name)
|
||||
free(question);
|
||||
}
|
||||
|
||||
- g_hash_table_destroy(error_table);
|
||||
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
|
||||
|
||||
- error_table = validate_event(event_name);
|
||||
- if (!error_table)
|
||||
+ err_list = get_options_with_err_msg(event_name);
|
||||
+ if (!err_list)
|
||||
return;
|
||||
|
||||
alert(_("Your input is not valid, because of:"));
|
||||
- g_hash_table_iter_init(&iter, error_table);
|
||||
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
|
||||
+ for (iter = err_list; iter; iter = iter -> next)
|
||||
{
|
||||
- char *msg = xasprintf(_("Bad value for '%s': %s"), opt_name, err_msg);
|
||||
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
|
||||
+ char *msg = xasprintf(_("Bad value for '%s': %s"),
|
||||
+ err_data->invopt_name,
|
||||
+ err_data->invopt_error);
|
||||
alert(msg);
|
||||
free(msg);
|
||||
}
|
||||
|
||||
- g_hash_table_destroy(error_table);
|
||||
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
|
||||
}
|
||||
|
||||
- /* we ask for 3 times and still don't have valid infromation */
|
||||
+ /* we ask for 3 times and still don't have valid information */
|
||||
error_msg_and_die("Invalid input, exiting.");
|
||||
}
|
||||
|
||||
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
|
||||
index c7136d6..d337805 100644
|
||||
--- a/src/gui-wizard-gtk/wizard.c
|
||||
+++ b/src/gui-wizard-gtk/wizard.c
|
||||
@@ -914,10 +914,10 @@ static gint find_by_button(gconstpointer a, gconstpointer button)
|
||||
|
||||
static void check_event_config(const char *event_name)
|
||||
{
|
||||
- GHashTable *errors = validate_event(event_name);
|
||||
+ GList *errors = get_options_with_err_msg(event_name);
|
||||
if (errors != NULL)
|
||||
{
|
||||
- g_hash_table_unref(errors);
|
||||
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
|
||||
show_event_config_dialog(event_name, GTK_WINDOW(g_top_most_window));
|
||||
update_private_ticket_creation_warning_for_selected_event();
|
||||
}
|
||||
diff --git a/src/include/event_config.h b/src/include/event_config.h
|
||||
index fdcb3b4..0e0df98 100644
|
||||
--- a/src/include/event_config.h
|
||||
+++ b/src/include/event_config.h
|
||||
@@ -63,6 +63,17 @@ typedef struct
|
||||
bool is_advanced;
|
||||
} event_option_t;
|
||||
|
||||
+/*
|
||||
+ * struct holds
|
||||
+ * invopt_name = name of the option with invalid value
|
||||
+ * invopt_error = string of the error message
|
||||
+ */
|
||||
+typedef struct
|
||||
+{
|
||||
+ char *invopt_name;
|
||||
+ char *invopt_error;
|
||||
+} invalid_option_t;
|
||||
+
|
||||
event_option_t *new_event_option(void);
|
||||
void free_event_option(event_option_t *p);
|
||||
|
||||
@@ -108,6 +119,8 @@ bool ec_restricted_access_enabled(event_config_t *ec);
|
||||
|
||||
void free_event_config(event_config_t *p);
|
||||
|
||||
+invalid_option_t *new_invalid_option(void);
|
||||
+void free_invalid_options(invalid_option_t* p);
|
||||
|
||||
void load_event_description_from_file(event_config_t *event_config, const char* filename);
|
||||
|
||||
@@ -126,7 +139,7 @@ extern GHashTable *g_event_config_list; // for iterating through entire list o
|
||||
GList *export_event_config(const char *event_name);
|
||||
void unexport_event_config(GList *env_list);
|
||||
|
||||
-GHashTable *validate_event(const char *event_name);
|
||||
+GList *get_options_with_err_msg(const char *event_name);
|
||||
|
||||
/*
|
||||
* Checks usability of problem's backtrace rating against required rating level
|
||||
diff --git a/src/lib/event_config.c b/src/lib/event_config.c
|
||||
index 9c58d00..c5b7b17 100644
|
||||
--- a/src/lib/event_config.c
|
||||
+++ b/src/lib/event_config.c
|
||||
@@ -22,6 +22,11 @@
|
||||
GHashTable *g_event_config_list;
|
||||
static GHashTable *g_event_config_symlinks;
|
||||
|
||||
+invalid_option_t *new_invalid_option(void)
|
||||
+{
|
||||
+ return xzalloc(sizeof(invalid_option_t));
|
||||
+}
|
||||
+
|
||||
event_option_t *new_event_option(void)
|
||||
{
|
||||
return xzalloc(sizeof(event_option_t));
|
||||
@@ -121,6 +126,15 @@ bool ec_restricted_access_enabled(event_config_t *ec)
|
||||
return eo->eo_value != NULL && string_to_bool(eo->eo_value);
|
||||
}
|
||||
|
||||
+void free_invalid_options(invalid_option_t *p)
|
||||
+{
|
||||
+ if (!p)
|
||||
+ return;
|
||||
+ free(p->invopt_name);
|
||||
+ free(p->invopt_error);
|
||||
+ free(p);
|
||||
+}
|
||||
+
|
||||
void free_event_option(event_option_t *p)
|
||||
{
|
||||
if (!p)
|
||||
@@ -427,7 +441,7 @@ static char *validate_event_option(event_option_t *opt)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-GHashTable *validate_event(const char *event_name)
|
||||
+GList *get_options_with_err_msg(const char *event_name)
|
||||
{
|
||||
INITIALIZE_LIBREPORT();
|
||||
|
||||
@@ -435,21 +449,23 @@ GHashTable *validate_event(const char *event_name)
|
||||
if (!config)
|
||||
return NULL;
|
||||
|
||||
- GHashTable *errors = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
|
||||
- GList *li;
|
||||
+ GList *iter, *err_list = NULL;
|
||||
|
||||
- for (li = config->options; li; li = li->next)
|
||||
+ for (iter = config->options; iter; iter = iter->next)
|
||||
{
|
||||
- event_option_t *opt = (event_option_t *)li->data;
|
||||
+ event_option_t *opt = (event_option_t *)iter->data;
|
||||
char *err = validate_event_option(opt);
|
||||
if (err)
|
||||
- g_hash_table_insert(errors, xstrdup(opt->eo_name), err);
|
||||
+ {
|
||||
+ invalid_option_t *inv_opt = new_invalid_option();
|
||||
+ inv_opt->invopt_name = xstrdup(opt->eo_name);
|
||||
+ inv_opt->invopt_error = xstrdup(err);
|
||||
+ err_list = g_list_prepend(err_list, inv_opt);
|
||||
+ }
|
||||
}
|
||||
|
||||
- if (g_hash_table_size(errors))
|
||||
- return errors;
|
||||
-
|
||||
- g_hash_table_destroy(errors);
|
||||
+ if (err_list != NULL)
|
||||
+ return g_list_reverse(err_list);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
diff --git a/src/report-newt/report-newt.c b/src/report-newt/report-newt.c
|
||||
index 2427d86..61e279d 100644
|
||||
--- a/src/report-newt/report-newt.c
|
||||
+++ b/src/report-newt/report-newt.c
|
||||
@@ -93,15 +93,14 @@ static int select_reporters(GArray *reporters)
|
||||
|
||||
static int configure_reporter(struct reporter *r, bool skip_if_valid)
|
||||
{
|
||||
- GHashTable *error_table;
|
||||
- GList *option;
|
||||
+ GList *error_list, *option;
|
||||
event_option_t *opt;
|
||||
bool first = true, cancel = false;
|
||||
int num_opts, i;
|
||||
newtComponent text, *options, button_ok, button_cancel, form;
|
||||
newtGrid grid, ogrid, bgrid;
|
||||
|
||||
- while ((error_table = validate_event(r->name)) ||
|
||||
+ while ((error_list = get_options_with_err_msg(r->name)) ||
|
||||
(!skip_if_valid && first && r->config))
|
||||
{
|
||||
text = newtTextboxReflowed(0, 0, ec_get_screen_name(r->config) ?
|
||||
@@ -151,19 +150,19 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
|
||||
form = newtForm(NULL, NULL, 0);
|
||||
newtGridAddComponentsToForm(grid, form, 1);
|
||||
|
||||
- if (!first && error_table)
|
||||
+ if (!first && error_list)
|
||||
{
|
||||
- GHashTableIter iter;
|
||||
- char *opt_name, *err_msg, buf[4096];
|
||||
+ GList *iter;
|
||||
+ char buf[4096];
|
||||
|
||||
/* Catenate the error messages */
|
||||
buf[0] = '\0';
|
||||
- for (g_hash_table_iter_init(&iter, error_table);
|
||||
- g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg); )
|
||||
+ for (iter = error_list; iter; iter = iter->next)
|
||||
{
|
||||
- opt = get_event_option_from_list(opt_name, r->config->options);
|
||||
+ invalid_option_t *inv_data = (invalid_option_t *)iter->data;
|
||||
+ opt = get_event_option_from_list(inv_data->invopt_name, r->config->options);
|
||||
snprintf(buf + strlen(buf), sizeof (buf) - strlen(buf), "%s: %s\n",
|
||||
- opt->eo_label ? opt->eo_label : opt->eo_name, err_msg);
|
||||
+ opt->eo_label ? opt->eo_label : opt->eo_name, inv_data->invopt_error);
|
||||
}
|
||||
|
||||
newtWinMessage(_("Error"), _("Ok"), buf);
|
||||
@@ -201,14 +200,14 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
|
||||
|
||||
free(options);
|
||||
|
||||
- if (error_table)
|
||||
- g_hash_table_destroy(error_table);
|
||||
+ if (error_list)
|
||||
+ g_list_free_full(error_list,(GDestroyNotify)free_invalid_options);
|
||||
if (cancel)
|
||||
break;
|
||||
first = false;
|
||||
}
|
||||
|
||||
- return !error_table;
|
||||
+ return !error_list;
|
||||
}
|
||||
|
||||
struct log {
|
||||
diff --git a/tests/event_config.at b/tests/event_config.at
|
||||
index 5baf000..badca73 100644
|
||||
--- a/tests/event_config.at
|
||||
+++ b/tests/event_config.at
|
||||
@@ -58,3 +58,106 @@ TS_MAIN
|
||||
}
|
||||
TS_RETURN_MAIN
|
||||
]])
|
||||
+
|
||||
+## ------------------------ ##
|
||||
+## get_options_with_err_msg ##
|
||||
+## ------------------------ ##
|
||||
+
|
||||
+AT_TESTFUN([get_options_with_err_msg], [[
|
||||
+#include "testsuite.h"
|
||||
+#include "internal_libreport.h"
|
||||
+
|
||||
+event_option_t* create_new_option(const char *n, const char *v, option_type_t t, int ae)
|
||||
+{
|
||||
+ event_option_t *op = new_event_option();
|
||||
+ op->eo_name = xstrdup(n);
|
||||
+ op->eo_value = NULL;
|
||||
+ if(v != NULL)
|
||||
+ op->eo_value = xstrdup(v);
|
||||
+
|
||||
+ op->eo_type = t;
|
||||
+ op->eo_allow_empty = ae;
|
||||
+
|
||||
+ return op;
|
||||
+}
|
||||
+
|
||||
+TS_MAIN
|
||||
+{
|
||||
+ GList *errors = NULL, *iter = NULL;
|
||||
+ invalid_option_t *e_op;
|
||||
+
|
||||
+ if (!g_event_config_list)
|
||||
+ g_event_config_list = g_hash_table_new_full(
|
||||
+ g_str_hash, g_str_equal, free, (GDestroyNotify) free_event_config
|
||||
+ );
|
||||
+
|
||||
+ {
|
||||
+ event_config_t *evnt = new_event_config("Bugster0");
|
||||
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
|
||||
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
|
||||
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
|
||||
+
|
||||
+ evnt->options = g_list_append(evnt->options, opt_login);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_passwd);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_url);
|
||||
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster0"), evnt);
|
||||
+
|
||||
+ errors = get_options_with_err_msg("Bugster0");
|
||||
+ e_op = (invalid_option_t *)errors->data;
|
||||
+
|
||||
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login first");
|
||||
+
|
||||
+ iter = g_list_next(errors);
|
||||
+ e_op = (invalid_option_t *)iter->data;
|
||||
+
|
||||
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password second");
|
||||
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
|
||||
+
|
||||
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
|
||||
+ }
|
||||
+
|
||||
+ {
|
||||
+ event_config_t *evnt = new_event_config("Bugster1");
|
||||
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
|
||||
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
|
||||
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
|
||||
+
|
||||
+ evnt->options = g_list_append(evnt->options, opt_passwd);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_login);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_url);
|
||||
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster1"), evnt);
|
||||
+
|
||||
+ errors = get_options_with_err_msg("Bugster1");
|
||||
+ e_op = (invalid_option_t *)errors->data;
|
||||
+
|
||||
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password first");
|
||||
+
|
||||
+ iter = g_list_next(errors);
|
||||
+ e_op = (invalid_option_t *)iter->data;
|
||||
+
|
||||
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login second");
|
||||
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
|
||||
+
|
||||
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
|
||||
+ }
|
||||
+
|
||||
+ {
|
||||
+ event_config_t *evnt = new_event_config("Bugster2");
|
||||
+ event_option_t *opt_login = create_new_option("Bugtest_Login", "login", OPTION_TYPE_TEXT, 0);
|
||||
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", "password", OPTION_TYPE_PASSWORD, 0);
|
||||
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
|
||||
+
|
||||
+ evnt->options = g_list_append(evnt->options, opt_login);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_passwd);
|
||||
+ evnt->options = g_list_append(evnt->options, opt_url);
|
||||
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster2"), evnt);
|
||||
+
|
||||
+ errors = get_options_with_err_msg("Bugster2");
|
||||
+
|
||||
+ TS_ASSERT_PTR_IS_NULL(errors);
|
||||
+ }
|
||||
+
|
||||
+ free_event_config_data();
|
||||
+}
|
||||
+TS_RETURN_MAIN
|
||||
+]])
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
From 52bc62513f23a7a379ba48dc2895626cf842bb1a Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Thu, 15 Jun 2017 17:12:53 +0200
|
||||
Subject: [PATCH 10/14] dd: extend create_dump_dir to allow set pid in dumpdir
|
||||
name
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/include/dump_dir.h | 3 +++
|
||||
src/lib/create_dump_dir.c | 9 +++++++--
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h
|
||||
index fb3a470..793caf4 100644
|
||||
--- a/src/include/dump_dir.h
|
||||
+++ b/src/include/dump_dir.h
|
||||
@@ -486,6 +486,9 @@ typedef int (*save_data_call_back)(struct dump_dir *, void *args);
|
||||
struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type,
|
||||
uid_t uid, save_data_call_back save_data, void *args);
|
||||
|
||||
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type,
|
||||
+ pid_t pid, uid_t uid, save_data_call_back save_data, void *args);
|
||||
+
|
||||
/* Creates a new archive from the dump directory contents
|
||||
*
|
||||
* The dd argument must be opened for reading.
|
||||
diff --git a/src/lib/create_dump_dir.c b/src/lib/create_dump_dir.c
|
||||
index 1c6f1fc..d690c78 100644
|
||||
--- a/src/lib/create_dump_dir.c
|
||||
+++ b/src/lib/create_dump_dir.c
|
||||
@@ -42,7 +42,7 @@ static struct dump_dir *try_dd_create(const char *base_dir_name, const char *dir
|
||||
return dd;
|
||||
}
|
||||
|
||||
-struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
|
||||
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type, pid_t pid, uid_t uid, save_data_call_back save_data, void *args)
|
||||
{
|
||||
INITIALIZE_LIBREPORT();
|
||||
|
||||
@@ -59,7 +59,7 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)getpid());
|
||||
+ char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)pid);
|
||||
|
||||
log_info("Saving to %s/%s with uid %d", base_dir_name, problem_id, uid);
|
||||
|
||||
@@ -151,6 +151,11 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
|
||||
return dd;
|
||||
}
|
||||
|
||||
+struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
|
||||
+{
|
||||
+ return create_dump_dir_ext(base_dir_name, type, getpid(), uid, save_data, args);
|
||||
+}
|
||||
+
|
||||
int save_problem_data_in_dump_dir(struct dump_dir *dd, problem_data_t *problem_data)
|
||||
{
|
||||
INITIALIZE_LIBREPORT();
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From d58bbe86686b3a601211f1f6a0186c73a6afc999 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kutlak <mkutlak@redhat.com>
|
||||
Date: Tue, 20 Jun 2017 16:05:58 +0200
|
||||
Subject: [PATCH 11/14] augeas: exclude format files
|
||||
|
||||
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
|
||||
---
|
||||
augeas/libreport.aug | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
|
||||
index 46ffb73..dd4252e 100644
|
||||
--- a/augeas/libreport.aug
|
||||
+++ b/augeas/libreport.aug
|
||||
@@ -31,6 +31,7 @@ module Libreport =
|
||||
. (incl (Sys.getenv("HOME") . "/.cache/abrt/events/*"))
|
||||
. (excl "/etc/libreport/plugins/bugzilla_format*")
|
||||
. (excl "/etc/libreport/plugins/mantisbt_format*")
|
||||
+ . (excl "/etc/libreport/plugins/catalog*")
|
||||
. Util.stdexcl
|
||||
|
||||
let xfm = transform lns filter
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
From a6522407b95cf1410ecb33cbf2adff3a3998f686 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kutlak <mkutlak@redhat.com>
|
||||
Date: Thu, 29 Jun 2017 12:10:25 +0200
|
||||
Subject: [PATCH 12/14] bugzilla: add check if option -d was entered
|
||||
|
||||
The change from commit 946c522ba702c11b7b336552461747541e714bb7 caused that reporter was ALWAYS trying to read
|
||||
from problem directory. And because the default value for it is set to ".",
|
||||
running reporter from outside of problem directory caused errors.
|
||||
|
||||
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
|
||||
---
|
||||
src/plugins/reporter-bugzilla.c | 29 +++++++++++++++++++----------
|
||||
1 file changed, 19 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
|
||||
index 7b7fd22..5364cd4 100644
|
||||
--- a/src/plugins/reporter-bugzilla.c
|
||||
+++ b/src/plugins/reporter-bugzilla.c
|
||||
@@ -334,18 +334,21 @@ int main(int argc, char **argv)
|
||||
export_abrt_envvars(0);
|
||||
|
||||
map_string_t *settings = new_map_string();
|
||||
- problem_data_t *problem_data;
|
||||
+ problem_data_t *problem_data = NULL;
|
||||
|
||||
- /* pull in some defaults from os-release */
|
||||
- problem_data = create_problem_data_for_reporting(dump_dir_name);
|
||||
- if (!problem_data)
|
||||
- xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
|
||||
- else
|
||||
+ if (opts & OPT_d)
|
||||
{
|
||||
- map_string_t *osinfo = new_map_string();
|
||||
- problem_data_get_osinfo(problem_data, osinfo);
|
||||
- set_default_settings(osinfo, settings);
|
||||
- free_map_string(osinfo);
|
||||
+ /* pull in some defaults from os-release */
|
||||
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
|
||||
+ if (!problem_data)
|
||||
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
|
||||
+ else
|
||||
+ {
|
||||
+ map_string_t *osinfo = new_map_string();
|
||||
+ problem_data_get_osinfo(problem_data, osinfo);
|
||||
+ set_default_settings(osinfo, settings);
|
||||
+ free_map_string(osinfo);
|
||||
+ }
|
||||
}
|
||||
|
||||
{
|
||||
@@ -554,6 +557,12 @@ int main(int argc, char **argv)
|
||||
free_report_result(reported_to);
|
||||
}
|
||||
|
||||
+ if (!(opts & OPT_d))
|
||||
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
|
||||
+
|
||||
+ if (!problem_data)
|
||||
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
|
||||
+
|
||||
const char *component = problem_data_get_content_or_die(problem_data, FILENAME_COMPONENT);
|
||||
const char *duphash = problem_data_get_content_or_NULL(problem_data, FILENAME_DUPHASH);
|
||||
//COMPAT, remove after 2.1 release
|
||||
--
|
||||
2.9.5
|
||||
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From f15195d7c317a94405b33102b36e1a8d7dcb214b Mon Sep 17 00:00:00 2001
|
||||
From: Matej Marusak <mmarusak@redhat.com>
|
||||
Date: Fri, 14 Jul 2017 08:24:35 +0200
|
||||
Subject: [PATCH 13/14] reporter-mantisbt: Fix typo in help
|
||||
|
||||
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
|
||||
---
|
||||
src/plugins/reporter-mantisbt.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
|
||||
index 622af87..3705bc7 100644
|
||||
--- a/src/plugins/reporter-mantisbt.c
|
||||
+++ b/src/plugins/reporter-mantisbt.c
|
||||
@@ -243,7 +243,7 @@ int main(int argc, char **argv)
|
||||
"\nTRACKER_NAME to URL field. This option is applied only when a new issue is to be"
|
||||
"\nfiled. The default value is 'ABRT Server'"
|
||||
"\n"
|
||||
- "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisb.conf"
|
||||
+ "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisbt.conf"
|
||||
"\nIts lines should have 'PARAM = VALUE' format."
|
||||
"\nRecognized string parameters: MantisbtURL, Login, Password, Project, ProjectVersion."
|
||||
"\nRecognized boolean parameter (VALUE should be 1/0, yes/no): SSLVerify, CreatePrivate."
|
||||
--
|
||||
2.9.5
|
||||
|
||||
File diff suppressed because it is too large
Load diff
42
801.patch
Normal file
42
801.patch
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
From 9be0010e109d307921a049d10078813423227582 Mon Sep 17 00:00:00 2001
|
||||
From: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
|
||||
Date: Fri, 15 Dec 2023 18:03:33 +0100
|
||||
Subject: [PATCH] Fix compatibility with libxml2 2.12
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Since libxml2 2.12, xmlNodePtr is no longer included by libxml/encoding.h.
|
||||
This leads to build errors such as:
|
||||
|
||||
CC reporter_mantisbt-reporter-mantisbt.o
|
||||
In file included from reporter-mantisbt.c:22:
|
||||
mantisbt.h:48:5: error: unknown type name ‘xmlNodePtr’
|
||||
48 | xmlNodePtr sr_root;
|
||||
| ^~~~~~~~~~
|
||||
mantisbt.h:49:5: error: unknown type name ‘xmlNodePtr’
|
||||
49 | xmlNodePtr sr_body;
|
||||
| ^~~~~~~~~~
|
||||
mantisbt.h:50:5: error: unknown type name ‘xmlNodePtr’
|
||||
50 | xmlNodePtr sr_method;
|
||||
| ^~~~~~~~~~
|
||||
|
||||
Fix this by including libxml/tree.h.
|
||||
|
||||
Signed-off-by: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
|
||||
---
|
||||
src/plugins/mantisbt.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/plugins/mantisbt.h b/src/plugins/mantisbt.h
|
||||
index 1feaf8f88..6979e7244 100644
|
||||
--- a/src/plugins/mantisbt.h
|
||||
+++ b/src/plugins/mantisbt.h
|
||||
@@ -25,6 +25,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include <libxml/encoding.h>
|
||||
+#include <libxml/tree.h>
|
||||
#include "problem_report.h"
|
||||
|
||||
#define SOAP_STRING "ns2:string"
|
||||
3
README.packit
Normal file
3
README.packit
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
This repository is maintained by packit.
|
||||
https://packit.dev/
|
||||
The file was generated using packit 0.91.0.post1.dev4+ge6fd4a25.
|
||||
70
autogen.sh
70
autogen.sh
|
|
@ -1,70 +0,0 @@
|
|||
#! /bin/sh
|
||||
|
||||
print_help()
|
||||
{
|
||||
cat << EOH
|
||||
Prepares the source tree for configuration
|
||||
|
||||
Usage:
|
||||
autogen.sh [sydeps [--install]]
|
||||
|
||||
Options:
|
||||
|
||||
sysdeps prints out all dependencies
|
||||
--install install all dependencies ('sudo yum install \$DEPS')
|
||||
|
||||
EOH
|
||||
}
|
||||
|
||||
build_depslist()
|
||||
{
|
||||
DEPS_LIST=`grep "^\(Build\)\?Requires:" *.spec.in | grep -v "%{name}" | tr -s " " | tr "," "\n" | cut -f2 -d " " | grep -v "^libreport" | sort -u | tr "\n" " "`
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
"--help"|"-h")
|
||||
print_help
|
||||
exit 0
|
||||
;;
|
||||
"sysdeps")
|
||||
build_depslist
|
||||
|
||||
if [ "$2" == "--install" ]; then
|
||||
set -x verbose
|
||||
sudo yum install $DEPS_LIST
|
||||
set +x verbose
|
||||
else
|
||||
echo $DEPS_LIST
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Running gen-version"
|
||||
./gen-version
|
||||
|
||||
mkdir -p m4
|
||||
echo "Creating m4/aclocal.m4 ..."
|
||||
test -r m4/aclocal.m4 || touch m4/aclocal.m4
|
||||
|
||||
echo "Running autopoint"
|
||||
autopoint --force || exit 1
|
||||
|
||||
echo "Running intltoolize..."
|
||||
intltoolize --force --copy --automake || exit 1
|
||||
|
||||
echo "Running aclocal..."
|
||||
aclocal || exit 1
|
||||
|
||||
echo "Running libtoolize..."
|
||||
libtoolize || exit 1
|
||||
|
||||
echo "Running autoheader..."
|
||||
autoheader || return 1
|
||||
|
||||
echo "Running autoconf..."
|
||||
autoconf --force || exit 1
|
||||
|
||||
echo "Running automake..."
|
||||
automake --add-missing --force --copy || exit 1
|
||||
;;
|
||||
esac
|
||||
15
gating.yaml
Normal file
15
gating.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_testing
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_stable
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
46
libreport-c89-2.patch
Normal file
46
libreport-c89-2.patch
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
problem_item_get_size expects unsigned long * argument in problem_data.at test
|
||||
|
||||
Otherwise, the test fails to build on i686 with GCC 14.
|
||||
|
||||
Submitted upstream: <https://github.com/abrt/libreport/pull/802>
|
||||
|
||||
diff --git a/tests/problem_data.at b/tests/problem_data.at
|
||||
index 4d8bf0075c0a8b91..db67a76732d48663 100644
|
||||
--- a/tests/problem_data.at
|
||||
+++ b/tests/problem_data.at
|
||||
@@ -89,7 +89,7 @@ int main(int argc, char **argv)
|
||||
struct problem_item *itm = problem_data_add_ext(data, "1", "foo", CD_FLAG_TXT | CD_FLAG_ISNOTEDITABLE, PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
const size_t old_size = strlen(itm->content);
|
||||
{
|
||||
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
assert(problem_item_get_size(itm, ¤t_size) == 0);
|
||||
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
assert(current_size == old_size);
|
||||
@@ -97,7 +97,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
g_free(itm->content);
|
||||
itm->content = NULL;
|
||||
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
assert(problem_item_get_size(itm, ¤t_size) == 0);
|
||||
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
assert(current_size == old_size);
|
||||
@@ -120,7 +120,7 @@ int main(int argc, char **argv)
|
||||
struct problem_item *itm = problem_data_add_ext(data, "2", flnm, CD_FLAG_BIN, PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
|
||||
{
|
||||
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
assert(problem_item_get_size(itm, ¤t_size) == 0);
|
||||
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
assert(current_size == old_size);
|
||||
@@ -129,7 +129,7 @@ int main(int argc, char **argv)
|
||||
close(flds);
|
||||
unlink(flnm);
|
||||
assert(stat(flnm, &buf) != 0);
|
||||
- size_t current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
+ unsigned long current_size = PROBLEM_ITEM_UNINITIALIZED_SIZE;
|
||||
assert(problem_item_get_size(itm, ¤t_size) == 0);
|
||||
assert(current_size != PROBLEM_ITEM_UNINITIALIZED_SIZE);
|
||||
assert(current_size == old_size);
|
||||
28
libreport-c89.patch
Normal file
28
libreport-c89.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
Remove incorrect casts from tests/string_list.at
|
||||
|
||||
The list_order argument already has the correct pointer type const
|
||||
char * const * (after array-to-pointer decay).
|
||||
|
||||
Submitted upstream: <https://github.com/abrt/libreport/pull/802>
|
||||
|
||||
diff --git a/tests/string_list.at b/tests/string_list.at
|
||||
index 6af162a2f8da3919..2118298da4de0ec3 100644
|
||||
--- a/tests/string_list.at
|
||||
+++ b/tests/string_list.at
|
||||
@@ -22,13 +22,13 @@ int main(void)
|
||||
NULL
|
||||
};
|
||||
|
||||
- int index = libreport_index_of_string_in_list(FILENAME_REASON, (char**) list_order);
|
||||
+ int index = libreport_index_of_string_in_list(FILENAME_REASON, list_order);
|
||||
assert(index == 0);
|
||||
|
||||
- index = libreport_index_of_string_in_list(FILENAME_COUNT, (char**) list_order);
|
||||
+ index = libreport_index_of_string_in_list(FILENAME_COUNT, list_order);
|
||||
assert(index == 5);
|
||||
|
||||
- index = libreport_index_of_string_in_list("other", (char**) list_order);
|
||||
+ index = libreport_index_of_string_in_list("other", list_order);
|
||||
assert(index < 0);
|
||||
|
||||
return 0;
|
||||
1730
libreport.spec
1730
libreport.spec
File diff suppressed because it is too large
Load diff
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (libreport-2.9.1.tar.gz) = 2cffb44fd8da625a9a0613f91ce3d485fe21b0a1f5932f6d6bfbdb4d41337f95c49f525556596aeef2fc3737015151d43250f287dc624f97469f087ff9213bde
|
||||
SHA512 (libreport-2.17.15.tar.gz) = a4707f5272f037f91b4f4b562d3f0eb165ae7790699714accdd1af40216f37bd40d430a06925b1b7b8ac2d2cf97fd0cc4efded51dc22d21d9ef2abedf796e5fe
|
||||
|
|
|
|||
11
tests/library-smoke.sh
Executable file
11
tests/library-smoke.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
gcc -x c -o smoke_test -lreport -Wno-implicit-function-declaration - <<EOF
|
||||
#include <stdio.h>
|
||||
int main(void) {
|
||||
libreport_init();
|
||||
printf("libreport initialized OK\n");
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
./smoke_test
|
||||
15
tests/smoke.fmf
Normal file
15
tests/smoke.fmf
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
summary: Basic smoke test for libreport
|
||||
prepare:
|
||||
how: install
|
||||
# Do not attempt to install conflicting subpackages.
|
||||
exclude:
|
||||
- abrt-atomic
|
||||
- abrt-java-connector-container
|
||||
- python3-abrt-container-addon
|
||||
# Prerequisite for smoke testing liblibreport.
|
||||
package:
|
||||
- gcc
|
||||
execute:
|
||||
script: |
|
||||
tests/library-smoke.sh
|
||||
report-cli --version
|
||||
Loading…
Add table
Add a link
Reference in a new issue