Skip to content

Commit

Permalink
testsuite: add test for xorg_crash_info_save_in_dump_dir()
Browse files Browse the repository at this point in the history
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
  • Loading branch information
Matej Habrnal committed Nov 6, 2015
1 parent 82e15c4 commit 1200b0d
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions tests/xorg-utils.at
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,94 @@ int main(void)
return 0;
}
]])

AT_TESTCFUN([xorg_crash_info_save_in_dump_dir],
[$XORG_UTILS_CFLAGS],
[$XORG_UTILS_LDFLAGS],
[[
#include "libabrt.h"
#include "xorg-utils.h"

int main(void)
{
g_verbose = 3;

char template[] = "/tmp/XXXXXX/dump_dir";

char *last_slash = strrchr(template, '/');
*last_slash = '\0';

if (mkdtemp(template) == NULL) {
perror("mkdtemp()");
return EXIT_FAILURE;
}

*last_slash = '/';

struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
assert(strcmp(dd->dd_dirname, template) == 0);
assert(dd->dd_fd >= 0);
assert(dd->dd_md_fd >= 0);

dd_create_basic_files(dd, (uid_t)-1, NULL);

struct xorg_crash_info *crash_info = xmalloc(sizeof(struct xorg_crash_info));
crash_info->backtrace = xstrdup("I am a backtrace");
crash_info->reason = xstrdup("Reason here!");
crash_info->exe = xstrdup("Executable here!");

xorg_crash_info_save_in_dump_dir(crash_info, dd);

dd_close(dd);
dd = NULL;

dd = dd_opendir(template, 0);
assert(dd != NULL);
assert(strcmp(dd->dd_dirname, template) == 0);

problem_data_t *pd = create_problem_data_from_dump_dir(dd);

assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_ANALYZER), "abrt-xorg") == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_TYPE), "xorg") == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_REASON), crash_info->reason) == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_BACKTRACE), crash_info->backtrace) == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_EXECUTABLE), crash_info->exe) == 0);

problem_data_free(pd);

/* remove created files */
assert(dd_delete_item(dd, FILENAME_ANALYZER) == 0);
assert(dd_delete_item(dd, FILENAME_TYPE) == 0);
assert(dd_delete_item(dd, FILENAME_REASON) == 0);
assert(dd_delete_item(dd, FILENAME_BACKTRACE) == 0);
assert(dd_delete_item(dd, FILENAME_EXECUTABLE) == 0);

/* crash_info->exe is not set */
free(crash_info->exe);
crash_info->exe = NULL;

xorg_crash_info_save_in_dump_dir(crash_info, dd);

pd = create_problem_data_from_dump_dir(dd);

assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_ANALYZER), "abrt-xorg") == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_TYPE), "xorg") == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_REASON), crash_info->reason) == 0);
assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_BACKTRACE), crash_info->backtrace) == 0);
assert(strncmp(problem_data_get_content_or_NULL(pd, FILENAME_EXECUTABLE), "/usr/bin/X", strlen("/usr/bin/X")) == 0);

problem_data_free(pd);
xorg_crash_info_free(crash_info);

dd_delete(dd);

struct stat dd_st;
assert(stat(template, &dd_st) != 0);

*last_slash = '\0';
assert(rmdir(template) == 0);

return EXIT_SUCCESS;
}
]])

0 comments on commit 1200b0d

Please sign in to comment.