Blame tests/abrt_conf.at

Packit 8ea169
# -*- Autotest -*-
Packit 8ea169
# vim:set makeprg=rm\ testsuite;\ make\ testsuite;\ ./testsuite\ -v\ ??
Packit 8ea169
Packit 8ea169
AT_BANNER([abrt_conf])
Packit 8ea169
Packit 8ea169
AT_TESTFUN([load_abrt_conf_normalized_paths],
Packit 8ea169
[[
Packit 8ea169
/* This will tell gcc to show message in this AT file. */
Packit 8ea169
#line 10 "abrt_conf.at"
Packit 8ea169
Packit 8ea169
#include "libabrt.h"
Packit 8ea169
#include <assert.h>
Packit 8ea169
Packit 8ea169
struct result
Packit 8ea169
{
Packit 8ea169
    const char *line;
Packit 8ea169
    const char *const *global_option;
Packit 8ea169
    const char *expected;
Packit 8ea169
};
Packit 8ea169
Packit 8ea169
void test(struct result **res)
Packit 8ea169
{
Packit 8ea169
    char conf_file[] = "/tmp/abrt_test.conf.XXXXXX";
Packit 8ea169
    int conf_fd = mkstemp(conf_file);
Packit 8ea169
    assert(conf_fd >= 0 && "Temporary test configuration file");
Packit 8ea169
Packit 8ea169
    printf("**** %s\n", conf_file);
Packit 8ea169
    for (struct result **iter = res; NULL != *iter; ++iter)
Packit 8ea169
    {
Packit 8ea169
        if ((*iter)->line != NULL)
Packit 8ea169
        {
Packit 8ea169
            printf("---- %s", (*iter)->line);
Packit 8ea169
            full_write_str(conf_fd, (*iter)->line);
Packit 8ea169
        }
Packit 8ea169
    }
Packit 8ea169
    puts("----");
Packit 8ea169
Packit 8ea169
    close(conf_fd);
Packit 8ea169
Packit 8ea169
    setenv("ABRT_DEFAULT_CONF_DIR", "/tmp", 1);
Packit 8ea169
    setenv("ABRT_CONF_DIR", "/tmp", 1);
Packit 8ea169
    setenv("ABRT_CONF_FILE_NAME", strrchr(conf_file, '/') + 1, 1);
Packit 8ea169
Packit 8ea169
    /*
Packit 8ea169
    int old_stderr = dup(STDERR_FILENO);
Packit 8ea169
    int errpipe[2];
Packit 8ea169
    pipe(errpipe);
Packit 8ea169
    fcntl(ts_pipefd[0], F_SETFL, O_NONBLOCK);
Packit 8ea169
    dup2(errpipe[1], STDERR_FILENO);
Packit 8ea169
    */
Packit 8ea169
Packit 8ea169
    load_abrt_conf();
Packit 8ea169
Packit 8ea169
    /*
Packit 8ea169
    dup2(old_stderr, STDERR_FILENO);
Packit 8ea169
    char *error_output = xmalloc_read(errpipe[0], NULL);
Packit 8ea169
    close(errpipe[0]);
Packit 8ea169
    */
Packit 8ea169
Packit 8ea169
    unsetenv("ABRT_CONF_FILE_NAME");
Packit 8ea169
    unsetenv("ABRT_CONF_DIR");
Packit 8ea169
    unsetenv("ABRT_DEFAULT_CONF_DIR");
Packit 8ea169
Packit 8ea169
    for (struct result **iter = res; NULL != *iter; ++iter)
Packit 8ea169
    {
Packit 8ea169
        if ((    (*(*iter)->global_option != NULL && (*iter)->expected == NULL)
Packit 8ea169
              || (*(*iter)->global_option == NULL && (*iter)->expected != NULL))
Packit 8ea169
           ||
Packit 8ea169
            (    (*(*iter)->global_option != NULL && (*iter)->expected != NULL)
Packit 8ea169
              && (strcmp(*(*iter)->global_option, (*iter)->expected) != 0)))
Packit 8ea169
        {
Packit 8ea169
            fprintf(stderr, "Real != Expected :: '%s' != '%s'\n", *(*iter)->global_option, (*iter)->expected);
Packit 8ea169
            abort();
Packit 8ea169
        }
Packit 8ea169
    }
Packit 8ea169
Packit 8ea169
    free_abrt_conf_data();
Packit 8ea169
}
Packit 8ea169
Packit 8ea169
int main(int argc, char *argv[])
Packit 8ea169
{
Packit 8ea169
    g_verbose = 3;
Packit 8ea169
Packit 8ea169
    {
Packit 8ea169
        struct result res_dump_location = {
Packit 8ea169
            .line = "DumpLocation = /foo/blah/abrt\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_dump_location,
Packit 8ea169
            .expected = "/foo/blah/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result res_archive_dir = {
Packit 8ea169
            .line = "WatchCrashdumpArchiveDir = /opt/bar/abrt\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_sWatchCrashdumpArchiveDir,
Packit 8ea169
            .expected = "/opt/bar/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result *results[] = {
Packit 8ea169
            &res_dump_location,
Packit 8ea169
            &res_archive_dir,
Packit 8ea169
            NULL,
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        test(results);
Packit 8ea169
    }
Packit 8ea169
Packit 8ea169
    {
Packit 8ea169
        struct result res_dump_location = {
Packit 8ea169
            .line = "DumpLocation = /foo/blah/abrt////\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_dump_location,
Packit 8ea169
            .expected = "/foo/blah/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result res_archive_dir = {
Packit 8ea169
            .line = "WatchCrashdumpArchiveDir = /opt/bar/abrt////\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_sWatchCrashdumpArchiveDir,
Packit 8ea169
            .expected = "/opt/bar/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result *results[] = {
Packit 8ea169
            &res_dump_location,
Packit 8ea169
            &res_archive_dir,
Packit 8ea169
            NULL,
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        test(results);
Packit 8ea169
    }
Packit 8ea169
Packit 8ea169
    {
Packit 8ea169
        struct result res_dump_location = {
Packit 8ea169
            .line = "DumpLocation = /foo//blah///abrt\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_dump_location,
Packit 8ea169
            .expected = "/foo/blah/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result res_archive_dir = {
Packit 8ea169
            .line = "WatchCrashdumpArchiveDir = /opt//bar///abrt\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_sWatchCrashdumpArchiveDir,
Packit 8ea169
            .expected = "/opt/bar/abrt",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result *results[] = {
Packit 8ea169
            &res_dump_location,
Packit 8ea169
            &res_archive_dir,
Packit 8ea169
            NULL,
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        test(results);
Packit 8ea169
    }
Packit 8ea169
Packit 8ea169
    {
Packit 8ea169
        struct result res_dump_location = {
Packit 8ea169
            .line = "DumpLocation = /////\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_dump_location,
Packit 8ea169
            .expected = "/",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result res_archive_dir = {
Packit 8ea169
            .line = "WatchCrashdumpArchiveDir = /////\n",
Packit 8ea169
            .global_option = (const char *const *)&g_settings_sWatchCrashdumpArchiveDir,
Packit 8ea169
            .expected = "/",
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        struct result *results[] = {
Packit 8ea169
            &res_dump_location,
Packit 8ea169
            &res_archive_dir,
Packit 8ea169
            NULL,
Packit 8ea169
        };
Packit 8ea169
Packit 8ea169
        test(results);
Packit 8ea169
    }
Packit 8ea169
Packit 8ea169
    return 0;
Packit 8ea169
}
Packit 8ea169
]])