Blame tests/xorg-utils.at

Packit Service 8a8a03
# -*- Autotest -*-
Packit Service 8a8a03
Packit Service 8a8a03
AT_BANNER([xorg utils lib])
Packit Service 8a8a03
Packit Service 8a8a03
AT_TESTCFUN([xorg_utils_skip_pfx],
Packit Service 8a8a03
        [$XORG_UTILS_CFLAGS],
Packit Service 8a8a03
        [$XORG_UTILS_LDFLAGS],
Packit Service 8a8a03
[[
Packit Service 8a8a03
#include "libabrt.h"
Packit Service 8a8a03
#include "xorg-utils.h"
Packit Service 8a8a03
Packit Service 8a8a03
int main(void)
Packit Service 8a8a03
{
Packit Service 8a8a03
    const char *str[] = {
Packit Service 8a8a03
        "[xxx xxx] (EE) Foo",
Packit Service 8a8a03
        " (EE) Foo",
Packit Service 8a8a03
        "(EE) Foo",
Packit Service 8a8a03
        " Foo",
Packit Service 8a8a03
        "Foo",
Packit Service 8a8a03
        NULL
Packit Service 8a8a03
    };
Packit Service 8a8a03
Packit Service 8a8a03
    for (int i = 0; str[i] != NULL; ++i)
Packit Service 8a8a03
    {
Packit Service 8a8a03
        char *result = skip_pfx((char *)str[i]);
Packit Service 8a8a03
        if (strcmp(result, "Foo") != 0)
Packit Service 8a8a03
        {
Packit Service 8a8a03
            printf("Error: expected: 'Foo' got: '%s'\n", result);
Packit Service 8a8a03
            return 1;
Packit Service 8a8a03
        }
Packit Service 8a8a03
    }
Packit Service 8a8a03
Packit Service 8a8a03
    return 0;
Packit Service 8a8a03
}
Packit Service 8a8a03
]])
Packit Service 8a8a03
Packit Service 8a8a03
AT_TESTCFUN([xorg_crash_info_save_in_dump_dir],
Packit Service 8a8a03
        [$XORG_UTILS_CFLAGS],
Packit Service 8a8a03
        [$XORG_UTILS_LDFLAGS],
Packit Service 8a8a03
[[
Packit Service 8a8a03
#include "libabrt.h"
Packit Service 8a8a03
#include "xorg-utils.h"
Packit Service 8a8a03
Packit Service 8a8a03
void test(const char *backtrace, const char *exp_backtrace,
Packit Service 8a8a03
          const char *reason, const char *exp_reason,
Packit Service 8a8a03
          const char *exe, const char *exp_exe)
Packit Service 8a8a03
{
Packit Service 8a8a03
    char template[] = "/tmp/XXXXXX/dump_dir";
Packit Service 8a8a03
Packit Service 8a8a03
    char *last_slash = strrchr(template, '/');
Packit Service 8a8a03
    *last_slash = '\0';
Packit Service 8a8a03
Packit Service 8a8a03
    if (mkdtemp(template) == NULL) {
Packit Service 8a8a03
        perror("mkdtemp()");
Packit Service 8a8a03
        return EXIT_FAILURE;
Packit Service 8a8a03
    }
Packit Service 8a8a03
Packit Service 8a8a03
    *last_slash = '/';
Packit Service 8a8a03
Packit Service 8a8a03
    struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
Packit Service 8a8a03
Packit Service 8a8a03
    dd_create_basic_files(dd, (uid_t)-1, NULL);
Packit Service 8a8a03
Packit Service 8a8a03
    struct xorg_crash_info *crash_info = xmalloc(sizeof(struct xorg_crash_info));
Packit Service 8a8a03
    crash_info->backtrace = xstrdup(backtrace);
Packit Service 8a8a03
    crash_info->reason = xstrdup(reason);
Packit Service 8a8a03
    crash_info->exe = xstrdup(exe);
Packit Service 8a8a03
Packit Service 8a8a03
    xorg_crash_info_save_in_dump_dir(crash_info, dd);
Packit Service 8a8a03
Packit Service 8a8a03
    dd_close(dd);
Packit Service 8a8a03
    dd = NULL;
Packit Service 8a8a03
Packit Service 8a8a03
    dd = dd_opendir(template, 0);
Packit Service 8a8a03
    assert(dd != NULL);
Packit Service 8a8a03
    assert(strcmp(dd->dd_dirname, template) == 0);
Packit Service 8a8a03
Packit Service 8a8a03
    problem_data_t *pd = create_problem_data_from_dump_dir(dd);
Packit Service 8a8a03
Packit Service 8a8a03
    assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_ANALYZER), "abrt-xorg") == 0);
Packit Service 8a8a03
    assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_TYPE), "xorg") == 0);
Packit Service 8a8a03
    assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_REASON), exp_reason) == 0);
Packit Service 8a8a03
    assert(strcmp(problem_data_get_content_or_NULL(pd, FILENAME_BACKTRACE), exp_backtrace) == 0);
Packit Service 8a8a03
    assert(strncmp(problem_data_get_content_or_NULL(pd, FILENAME_EXECUTABLE), exp_exe, strlen(exp_exe)) == 0);
Packit Service 8a8a03
Packit Service 8a8a03
    problem_data_free(pd);
Packit Service 8a8a03
    xorg_crash_info_free(crash_info);
Packit Service 8a8a03
Packit Service 8a8a03
    dd_delete(dd);
Packit Service 8a8a03
Packit Service 8a8a03
    struct stat dd_st;
Packit Service 8a8a03
    assert(stat(template, &dd_st) != 0);
Packit Service 8a8a03
Packit Service 8a8a03
    *last_slash = '\0';
Packit Service 8a8a03
    assert(rmdir(template) == 0);
Packit Service 8a8a03
}
Packit Service 8a8a03
Packit Service 8a8a03
int main(void)
Packit Service 8a8a03
{
Packit Service 8a8a03
    g_verbose = 3;
Packit Service 8a8a03
Packit Service 8a8a03
    const char *b = "I am a backtrace";
Packit Service 8a8a03
    const char *r = "Reason here!";
Packit Service 8a8a03
    const char *e = "Executable here!";
Packit Service 8a8a03
Packit Service 8a8a03
    test(b, b, r, r, e, e);
Packit Service 8a8a03
    test(b, b, r, r, NULL, "/usr/bin/X");
Packit Service 8a8a03
Packit Service 8a8a03
    return EXIT_SUCCESS;
Packit Service 8a8a03
}
Packit Service 8a8a03
]])
Packit Service 8a8a03