diff options
Diffstat (limited to 'tests/blogc-make/check_settings.c')
-rw-r--r-- | tests/blogc-make/check_settings.c | 394 |
1 files changed, 0 insertions, 394 deletions
diff --git a/tests/blogc-make/check_settings.c b/tests/blogc-make/check_settings.c deleted file mode 100644 index b268570..0000000 --- a/tests/blogc-make/check_settings.c +++ /dev/null @@ -1,394 +0,0 @@ -/* - * blogc: A blog compiler. - * Copyright (C) 2014-2019 Rafael G. Martins <rafael@rafaelmartins.eng.br> - * - * This program can be distributed under the terms of the BSD License. - * See the file LICENSE. - */ - -#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <cmocka.h> - -#include <stdlib.h> -#include <string.h> - -#include "../../src/blogc-make/settings.h" -#include "../../src/common/error.h" -#include "../../src/common/utils.h" - - -static void -test_settings_empty(void **state) -{ - const char *a = ""; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_non_null(err); - assert_null(s); - assert_int_equal(err->type, BLOGC_MAKE_ERROR_SETTINGS); - assert_string_equal(err->msg, - "[global] key required but not found or empty: AUTHOR_NAME"); - bc_error_free(err); -} - - -static void -test_settings(void **state) -{ - const char *a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[global]\n" - "BOLA = asd\n" - "GUDA = qwe\n"; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_non_null(err); - assert_null(s); - assert_int_equal(err->type, BLOGC_MAKE_ERROR_SETTINGS); - assert_string_equal(err->msg, - "[global] key required but not found or empty: AUTHOR_NAME"); - bc_error_free(err); - - a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[global]\n" - "bOLA = asd\n" - "GUDA = qwe\n"; - err = NULL; - s = bm_settings_parse(a, strlen(a), &err); - assert_non_null(err); - assert_null(s); - assert_int_equal(err->type, BLOGC_MAKE_ERROR_SETTINGS); - assert_string_equal(err->msg, - "Invalid [global] key (first character must be uppercase): bOLA"); - bc_error_free(err); - - a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[global]\n" - "BOLA = asd\n" - "GUDa = qwe\n"; - err = NULL; - s = bm_settings_parse(a, strlen(a), &err); - assert_non_null(err); - assert_null(s); - assert_int_equal(err->type, BLOGC_MAKE_ERROR_SETTINGS); - assert_string_equal(err->msg, - "Invalid [global] key (must be uppercase with '_' and digits after first character): GUDa"); - bc_error_free(err); -} - - -static void -test_settings_env(void **state) -{ - const char *a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[environment]\n" - "BOLA = asd\n" - "GUDA = qwe\n"; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_non_null(err); - assert_null(s); - assert_int_equal(err->type, BLOGC_MAKE_ERROR_SETTINGS); - assert_string_equal(err->msg, - "[environment] key required but not found or empty: AUTHOR_NAME"); - bc_error_free(err); -} - - -static void -test_settings2(void **state) -{ - const char *a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[global]\n" - "BOLA = asd\n" - "GUDA = qwe\n" - "AUTHOR_NAME = chunda\n" - "AUTHOR_EMAIL = chunda@example.com\n" - "SITE_TITLE = Fuuuuuuuuu\n" - "SITE_TAGLINE = My cool tagline\n" - "BASE_DOMAIN = http://example.com\n" - "\n" - "[posts]\n" - "\n" - "aaaa\n" - "bbbb\n" - "cccc\n" - "[pages]\n" - " dddd\n" - "eeee\n" - "ffff\n" - "[tags]\n" - "gggg\n" - "\n" - " hhhh\n" - "iiii\n" - "[copy]\n" - "jjjj\n" - "kkkk\n" - "llll\n"; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_null(err); - assert_non_null(s); - assert_int_equal(bc_trie_size(s->global), 7); - assert_string_equal(bc_trie_lookup(s->global, "BOLA"), "asd"); - assert_string_equal(bc_trie_lookup(s->global, "GUDA"), "qwe"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_NAME"), "chunda"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_EMAIL"), "chunda@example.com"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TITLE"), "Fuuuuuuuuu"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TAGLINE"), "My cool tagline"); - assert_string_equal(bc_trie_lookup(s->global, "BASE_DOMAIN"), "http://example.com"); - assert_int_equal(bc_trie_size(s->settings), 16); - assert_string_equal(bc_trie_lookup(s->settings, "source_ext"), ".txt"); - assert_string_equal(bc_trie_lookup(s->settings, "html_ext"), "/index.html"); - assert_string_equal(bc_trie_lookup(s->settings, "content_dir"), "guda"); - assert_string_equal(bc_trie_lookup(s->settings, "template_dir"), "templates"); - assert_string_equal(bc_trie_lookup(s->settings, "main_template"), "foo.tmpl"); - assert_string_equal(bc_trie_lookup(s->settings, "date_format"), - "%b %d, %Y, %I:%M %p GMT"); - assert_string_equal(bc_trie_lookup(s->settings, "posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_prefix"), "atom"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_ext"), ".xml"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "pagination_prefix"), "page"); - assert_string_equal(bc_trie_lookup(s->settings, "post_prefix"), "post"); - assert_string_equal(bc_trie_lookup(s->settings, "tag_prefix"), "tag"); - assert_string_equal(bc_trie_lookup(s->settings, "html_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "index_prefix"), ""); - assert_non_null(s->posts); - assert_string_equal(s->posts[0], "aaaa"); - assert_string_equal(s->posts[1], "bbbb"); - assert_string_equal(s->posts[2], "cccc"); - assert_null(s->posts[3]); - assert_non_null(s->pages); - assert_string_equal(s->pages[0], "dddd"); - assert_string_equal(s->pages[1], "eeee"); - assert_string_equal(s->pages[2], "ffff"); - assert_null(s->pages[3]); - assert_non_null(s->copy); - assert_string_equal(s->copy[0], "jjjj"); - assert_string_equal(s->copy[1], "kkkk"); - assert_string_equal(s->copy[2], "llll"); - assert_null(s->copy[3]); - assert_non_null(s->tags); - assert_string_equal(s->tags[0], "gggg"); - assert_string_equal(s->tags[1], "hhhh"); - assert_string_equal(s->tags[2], "iiii"); - assert_null(s->tags[3]); - bm_settings_free(s); -} - - -static void -test_settings_env2(void **state) -{ - const char *a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[environment]\n" - "BOLA = asd\n" - "GUDA = qwe\n" - "AUTHOR_NAME = chunda\n" - "AUTHOR_EMAIL = chunda@example.com\n" - "SITE_TITLE = Fuuuuuuuuu\n" - "SITE_TAGLINE = My cool tagline\n" - "BASE_DOMAIN = http://example.com\n" - "\n" - "[posts]\n" - "\n" - "aaaa\n" - "bbbb\n" - "cccc\n" - "[pages]\n" - " dddd\n" - "eeee\n" - "ffff\n" - "[tags]\n" - "gggg\n" - "\n" - " hhhh\n" - "iiii\n" - "[copy]\n" - "jjjj\n" - "kkkk\n" - "llll\n"; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_null(err); - assert_non_null(s); - assert_int_equal(bc_trie_size(s->global), 7); - assert_string_equal(bc_trie_lookup(s->global, "BOLA"), "asd"); - assert_string_equal(bc_trie_lookup(s->global, "GUDA"), "qwe"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_NAME"), "chunda"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_EMAIL"), "chunda@example.com"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TITLE"), "Fuuuuuuuuu"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TAGLINE"), "My cool tagline"); - assert_string_equal(bc_trie_lookup(s->global, "BASE_DOMAIN"), "http://example.com"); - assert_int_equal(bc_trie_size(s->settings), 16); - assert_string_equal(bc_trie_lookup(s->settings, "source_ext"), ".txt"); - assert_string_equal(bc_trie_lookup(s->settings, "html_ext"), "/index.html"); - assert_string_equal(bc_trie_lookup(s->settings, "content_dir"), "guda"); - assert_string_equal(bc_trie_lookup(s->settings, "template_dir"), "templates"); - assert_string_equal(bc_trie_lookup(s->settings, "main_template"), "foo.tmpl"); - assert_string_equal(bc_trie_lookup(s->settings, "date_format"), - "%b %d, %Y, %I:%M %p GMT"); - assert_string_equal(bc_trie_lookup(s->settings, "posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_prefix"), "atom"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_ext"), ".xml"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "pagination_prefix"), "page"); - assert_string_equal(bc_trie_lookup(s->settings, "post_prefix"), "post"); - assert_string_equal(bc_trie_lookup(s->settings, "tag_prefix"), "tag"); - assert_string_equal(bc_trie_lookup(s->settings, "html_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "index_prefix"), ""); - assert_non_null(s->posts); - assert_string_equal(s->posts[0], "aaaa"); - assert_string_equal(s->posts[1], "bbbb"); - assert_string_equal(s->posts[2], "cccc"); - assert_null(s->posts[3]); - assert_non_null(s->pages); - assert_string_equal(s->pages[0], "dddd"); - assert_string_equal(s->pages[1], "eeee"); - assert_string_equal(s->pages[2], "ffff"); - assert_null(s->pages[3]); - assert_non_null(s->copy); - assert_string_equal(s->copy[0], "jjjj"); - assert_string_equal(s->copy[1], "kkkk"); - assert_string_equal(s->copy[2], "llll"); - assert_null(s->copy[3]); - assert_non_null(s->tags); - assert_string_equal(s->tags[0], "gggg"); - assert_string_equal(s->tags[1], "hhhh"); - assert_string_equal(s->tags[2], "iiii"); - assert_null(s->tags[3]); - bm_settings_free(s); -} - - -static void -test_settings_copy_files(void **state) -{ - const char *a = - "[settings]\n" - "content_dir = guda\n" - "main_template = foo.tmpl\n" - "\n" - "[global]\n" - "BOLA = asd\n" - "GUDA = qwe\n" - "AUTHOR_NAME = chunda\n" - "AUTHOR_EMAIL = chunda@example.com\n" - "SITE_TITLE = Fuuuuuuuuu\n" - "SITE_TAGLINE = My cool tagline\n" - "BASE_DOMAIN = http://example.com\n" - "\n" - "[posts]\n" - "\n" - "aaaa\n" - "bbbb\n" - "cccc\n" - "[pages]\n" - " dddd\n" - "eeee\n" - "ffff\n" - "[tags]\n" - "gggg\n" - "\n" - " hhhh\n" - "iiii\n" - "[copy_files]\n" - "jjjj\n" - "kkkk\n" - "llll\n"; - bc_error_t *err = NULL; - bm_settings_t *s = bm_settings_parse(a, strlen(a), &err); - assert_null(err); - assert_non_null(s); - assert_int_equal(bc_trie_size(s->global), 7); - assert_string_equal(bc_trie_lookup(s->global, "BOLA"), "asd"); - assert_string_equal(bc_trie_lookup(s->global, "GUDA"), "qwe"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_NAME"), "chunda"); - assert_string_equal(bc_trie_lookup(s->global, "AUTHOR_EMAIL"), "chunda@example.com"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TITLE"), "Fuuuuuuuuu"); - assert_string_equal(bc_trie_lookup(s->global, "SITE_TAGLINE"), "My cool tagline"); - assert_string_equal(bc_trie_lookup(s->global, "BASE_DOMAIN"), "http://example.com"); - assert_int_equal(bc_trie_size(s->settings), 16); - assert_string_equal(bc_trie_lookup(s->settings, "source_ext"), ".txt"); - assert_string_equal(bc_trie_lookup(s->settings, "html_ext"), "/index.html"); - assert_string_equal(bc_trie_lookup(s->settings, "content_dir"), "guda"); - assert_string_equal(bc_trie_lookup(s->settings, "template_dir"), "templates"); - assert_string_equal(bc_trie_lookup(s->settings, "main_template"), "foo.tmpl"); - assert_string_equal(bc_trie_lookup(s->settings, "date_format"), - "%b %d, %Y, %I:%M %p GMT"); - assert_string_equal(bc_trie_lookup(s->settings, "posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_prefix"), "atom"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_ext"), ".xml"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_posts_per_page"), "10"); - assert_string_equal(bc_trie_lookup(s->settings, "pagination_prefix"), "page"); - assert_string_equal(bc_trie_lookup(s->settings, "post_prefix"), "post"); - assert_string_equal(bc_trie_lookup(s->settings, "tag_prefix"), "tag"); - assert_string_equal(bc_trie_lookup(s->settings, "html_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "atom_order"), "DESC"); - assert_string_equal(bc_trie_lookup(s->settings, "index_prefix"), ""); - assert_non_null(s->posts); - assert_string_equal(s->posts[0], "aaaa"); - assert_string_equal(s->posts[1], "bbbb"); - assert_string_equal(s->posts[2], "cccc"); - assert_null(s->posts[3]); - assert_non_null(s->pages); - assert_string_equal(s->pages[0], "dddd"); - assert_string_equal(s->pages[1], "eeee"); - assert_string_equal(s->pages[2], "ffff"); - assert_null(s->pages[3]); - assert_non_null(s->copy); - assert_string_equal(s->copy[0], "jjjj"); - assert_string_equal(s->copy[1], "kkkk"); - assert_string_equal(s->copy[2], "llll"); - assert_null(s->copy[3]); - assert_non_null(s->tags); - assert_string_equal(s->tags[0], "gggg"); - assert_string_equal(s->tags[1], "hhhh"); - assert_string_equal(s->tags[2], "iiii"); - assert_null(s->tags[3]); - bm_settings_free(s); -} - - -int -main(void) -{ - const struct CMUnitTest tests[] = { - cmocka_unit_test(test_settings_empty), - cmocka_unit_test(test_settings), - cmocka_unit_test(test_settings_env), - cmocka_unit_test(test_settings2), - cmocka_unit_test(test_settings_env2), - cmocka_unit_test(test_settings_copy_files), - }; - return cmocka_run_group_tests(tests, NULL, NULL); -} |