From ee7a26362f2a8c52d21704f3b6ed4b70a613d881 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Thu, 23 May 2024 02:31:28 +0200 Subject: make: introduce blog_prefix setting --- man/blogcfile.5.ronn | 5 + src/blogc-make/atom.c | 10 +- src/blogc-make/ctx.c | 8 +- src/blogc-make/rules.c | 42 ++- src/blogc-make/settings.c | 1 + src/blogc-make/utils.c | 18 +- src/blogc-make/utils.h | 8 +- tests/blogc-make/check_atom.c | 108 ++++++ tests/blogc-make/check_blogc_make.sh.in | 325 ++++++++-------- tests/blogc-make/check_settings.c | 4 +- tests/blogc-make/check_utils.c | 640 ++++++++++++++++++++++++++------ 11 files changed, 862 insertions(+), 307 deletions(-) diff --git a/man/blogcfile.5.ronn b/man/blogcfile.5.ronn index 3d4f482..7feb964 100644 --- a/man/blogcfile.5.ronn +++ b/man/blogcfile.5.ronn @@ -64,6 +64,11 @@ however these rules can be customized with the following settings, from the will be used instead. The internal template can be dumped using the `atom_dump` blogc-make(1) rule. + * `blog_prefix` (default: unset): + If set, the value is added as a prefix to index, posts, tags, pagination, atom + feeds and any other resources related to blog posts. This setting is useful to + deploy the whole blog section of a website into a sub URL like "blog". + * `content_dir` (default: `content`): The directory that stores the source files. This directory is relative to `blogcfile`. diff --git a/src/blogc-make/atom.c b/src/blogc-make/atom.c index baf5eeb..f9e6294 100644 --- a/src/blogc-make/atom.c +++ b/src/blogc-make/atom.c @@ -48,6 +48,7 @@ bm_atom_generate(bm_settings_t *settings) if (settings == NULL) return NULL; + const char *blog_prefix = bc_trie_lookup(settings->settings, "blog_prefix"); const char *atom_prefix = bc_trie_lookup(settings->settings, "atom_prefix"); const char *atom_ext = bc_trie_lookup(settings->settings, "atom_ext"); const char *post_prefix = bc_trie_lookup(settings->settings, "post_prefix"); @@ -55,6 +56,11 @@ bm_atom_generate(bm_settings_t *settings) bc_string_t *atom_url = bc_string_new(); + if (blog_prefix != NULL) { + bc_string_append_c(atom_url, '/'); + bc_string_append_printf(atom_url, blog_prefix); + } + if (atom_prefix[0] != '\0') bc_string_append_c(atom_url, '/'); @@ -67,8 +73,8 @@ bm_atom_generate(bm_settings_t *settings) bc_string_append(atom_url, "{% endif %}"); bc_string_append(atom_url, atom_ext); - char *post_url = bm_generate_filename(NULL, post_prefix, "{{ FILENAME }}", - post_ext); + char *post_url = bm_generate_filename(NULL, blog_prefix, post_prefix, + "{{ FILENAME }}", post_ext); char *rv = bc_strdup_printf(atom_template, atom_url->str, atom_url->str, post_url, post_url); diff --git a/src/blogc-make/ctx.c b/src/blogc-make/ctx.c index 0745529..8bc7e64 100644 --- a/src/blogc-make/ctx.c +++ b/src/blogc-make/ctx.c @@ -251,13 +251,15 @@ bm_ctx_new(bm_ctx_t *base, const char *settings_file, const char *argv0, free(atom_template); const char *content_dir = bm_ctx_settings_lookup(rv, "content_dir"); + const char *blog_prefix = bm_ctx_settings_lookup(rv, "blog_prefix"); const char *post_prefix = bm_ctx_settings_lookup(rv, "post_prefix"); const char *source_ext = bm_ctx_settings_lookup(rv, "source_ext"); const char *listing_entry = bm_ctx_settings_lookup(rv, "listing_entry"); rv->listing_entry_fctx = NULL; if (listing_entry != NULL) { - char *f = bm_generate_filename(content_dir, NULL, listing_entry, source_ext); + char *f = bm_generate_filename(content_dir, blog_prefix, NULL, + listing_entry, source_ext); rv->listing_entry_fctx = bm_filectx_new(rv, f, listing_entry, NULL); free(f); } @@ -265,7 +267,7 @@ bm_ctx_new(bm_ctx_t *base, const char *settings_file, const char *argv0, rv->posts_fctx = NULL; if (settings->posts != NULL) { for (size_t i = 0; settings->posts[i] != NULL; i++) { - char *f = bm_generate_filename(content_dir, post_prefix, + char *f = bm_generate_filename(content_dir, blog_prefix, post_prefix, settings->posts[i], source_ext); rv->posts_fctx = bc_slist_append(rv->posts_fctx, bm_filectx_new(rv, f, settings->posts[i], NULL)); @@ -276,7 +278,7 @@ bm_ctx_new(bm_ctx_t *base, const char *settings_file, const char *argv0, rv->pages_fctx = NULL; if (settings->pages != NULL) { for (size_t i = 0; settings->pages[i] != NULL; i++) { - char *f = bm_generate_filename(content_dir, NULL, settings->pages[i], + char *f = bm_generate_filename(content_dir, NULL, NULL, settings->pages[i], source_ext); rv->pages_fctx = bc_slist_append(rv->pages_fctx, bm_filectx_new(rv, f, settings->pages[i], NULL)); diff --git a/src/blogc-make/rules.c b/src/blogc-make/rules.c index 9cfc969..f50ec75 100644 --- a/src/blogc-make/rules.c +++ b/src/blogc-make/rules.c @@ -77,11 +77,12 @@ index_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *index_prefix = bm_ctx_settings_lookup(ctx, "index_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); - char *f = bm_generate_filename(ctx->short_output_dir, index_prefix, NULL, - html_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, index_prefix, + NULL, html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); @@ -137,11 +138,12 @@ atom_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *atom_prefix = bm_ctx_settings_lookup(ctx, "atom_prefix"); const char *atom_ext = bm_ctx_settings_lookup(ctx, "atom_ext"); - char *f = bm_generate_filename(ctx->short_output_dir, atom_prefix, NULL, - atom_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, atom_prefix, + NULL, atom_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); @@ -197,12 +199,13 @@ atom_tags_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *atom_prefix = bm_ctx_settings_lookup(ctx, "atom_prefix"); const char *atom_ext = bm_ctx_settings_lookup(ctx, "atom_ext"); for (size_t i = 0; ctx->settings->tags[i] != NULL; i++) { - char *f = bm_generate_filename(ctx->short_output_dir, atom_prefix, - ctx->settings->tags[i], atom_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, + atom_prefix, ctx->settings->tags[i], atom_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); } @@ -278,13 +281,14 @@ pagination_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *pagination_prefix = bm_ctx_settings_lookup(ctx, "pagination_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); for (size_t i = 0; i < pages; i++) { char *j = bc_strdup_printf("%d", i + 1); - char *f = bm_generate_filename(ctx->short_output_dir, pagination_prefix, - j, html_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, + pagination_prefix, j, html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(j); free(f); @@ -348,6 +352,7 @@ pagination_tags_outputlist(bm_ctx_t *ctx) bc_trie_t *variables = bc_trie_new(free); posts_pagination(ctx, variables, "posts_per_page"); + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *tag_prefix = bm_ctx_settings_lookup(ctx, "tag_prefix"); const char *pagination_prefix = bm_ctx_settings_lookup(ctx, "pagination_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); @@ -371,8 +376,8 @@ pagination_tags_outputlist(bm_ctx_t *ctx) for (size_t i = 0; i < pages; i++) { char *j = bc_strdup_printf("%d", i + 1); - char *f = bm_generate_filename2(ctx->short_output_dir, tag_prefix, - ctx->settings->tags[k], pagination_prefix, j, html_ext); + char *f = bm_generate_filename2(ctx->short_output_dir, blog_prefix, + tag_prefix, ctx->settings->tags[k], pagination_prefix, j, html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(j); free(f); @@ -404,6 +409,7 @@ pagination_tags_exec(bm_ctx_t *ctx, bc_slist_t *outputs, bc_trie_t *args) bc_trie_insert(variables, "MAKE_RULE", bc_strdup("pagination_tags")); bc_trie_insert(variables, "MAKE_TYPE", bc_strdup("post")); + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *tag_prefix = bm_ctx_settings_lookup(ctx, "tag_prefix"); const char *pagination_prefix = bm_ctx_settings_lookup(ctx, "pagination_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); @@ -423,8 +429,8 @@ pagination_tags_exec(bm_ctx_t *ctx, bc_slist_t *outputs, bc_trie_t *args) // amount of output pages for (size_t k = 1; k <= bc_slist_length(outputs); k++) { char *j = bc_strdup_printf("%d", k); - char *f = bm_generate_filename2(ctx->short_output_dir, tag_prefix, - ctx->settings->tags[i], pagination_prefix, j, html_ext); + char *f = bm_generate_filename2(ctx->short_output_dir, blog_prefix, + tag_prefix, ctx->settings->tags[i], pagination_prefix, j, html_ext); free(j); if (0 == strcmp(fctx->short_path, f)) { tag = ctx->settings->tags[i]; @@ -470,12 +476,13 @@ posts_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *post_prefix = bm_ctx_settings_lookup(ctx, "post_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); for (size_t i = 0; ctx->settings->posts[i] != NULL; i++) { - char *f = bm_generate_filename(ctx->short_output_dir, post_prefix, - ctx->settings->posts[i], html_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, + post_prefix, ctx->settings->posts[i], html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); } @@ -540,12 +547,13 @@ tags_outputlist(bm_ctx_t *ctx) bc_slist_t *rv = NULL; + const char *blog_prefix = bm_ctx_settings_lookup(ctx, "blog_prefix"); const char *tag_prefix = bm_ctx_settings_lookup(ctx, "tag_prefix"); const char *html_ext = bm_ctx_settings_lookup(ctx, "html_ext"); for (size_t i = 0; ctx->settings->tags[i] != NULL; i++) { - char *f = bm_generate_filename(ctx->short_output_dir, tag_prefix, - ctx->settings->tags[i], html_ext); + char *f = bm_generate_filename(ctx->short_output_dir, blog_prefix, + tag_prefix, ctx->settings->tags[i], html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); } @@ -608,7 +616,7 @@ pages_outputlist(bm_ctx_t *ctx) for (size_t i = 0; ctx->settings->pages[i] != NULL; i++) { char *f = bm_generate_filename(ctx->short_output_dir, NULL, - ctx->settings->pages[i], html_ext); + NULL, ctx->settings->pages[i], html_ext); rv = bc_slist_append(rv, bm_filectx_new(ctx, f, NULL, NULL)); free(f); } diff --git a/src/blogc-make/settings.c b/src/blogc-make/settings.c index 4accc6d..2b78177 100644 --- a/src/blogc-make/settings.c +++ b/src/blogc-make/settings.c @@ -36,6 +36,7 @@ static const struct default_settings_map { {"post_prefix", "post"}, {"tag_prefix", "tag"}, {"html_order", "DESC"}, + {"blog_prefix", NULL}, // atom {"atom_prefix", "atom"}, diff --git a/src/blogc-make/utils.c b/src/blogc-make/utils.c index c987cfd..873aed1 100644 --- a/src/blogc-make/utils.c +++ b/src/blogc-make/utils.c @@ -15,9 +15,10 @@ char* -bm_generate_filename(const char *dir, const char *prefix, const char *fname, - const char *ext) +bm_generate_filename(const char *dir, const char *gprefix, const char *prefix, + const char *fname, const char *ext) { + bool have_gprefix = gprefix != NULL && gprefix[0] != '\0'; bool have_prefix = prefix != NULL && prefix[0] != '\0'; bool have_fname = fname != NULL && fname[0] != '\0'; bool have_ext = ext != NULL && ext[0] != '\0'; @@ -27,9 +28,14 @@ bm_generate_filename(const char *dir, const char *prefix, const char *fname, bc_string_t *rv = bc_string_new(); - if (dir != NULL && (have_prefix || have_fname || have_ext)) + if (dir != NULL && (have_gprefix || have_prefix || have_fname || have_ext)) bc_string_append(rv, dir); + if (have_gprefix) { + bc_string_append(rv, "/"); + bc_string_append(rv, gprefix); + } + if ((have_prefix || have_fname || have_ext_noslash) && !is_index) bc_string_append_c(rv, '/'); @@ -65,8 +71,8 @@ bm_generate_filename(const char *dir, const char *prefix, const char *fname, char* -bm_generate_filename2(const char *dir, const char *prefix, const char *fname, - const char *prefix2, const char *fname2, const char *ext) +bm_generate_filename2(const char *dir, const char *gprefix, const char *prefix, + const char *fname, const char *prefix2, const char *fname2, const char *ext) { bool have_prefix = prefix != NULL && prefix[0] != '\0'; bool have_fname = fname != NULL && fname[0] != '\0'; @@ -89,7 +95,7 @@ bm_generate_filename2(const char *dir, const char *prefix, const char *fname, if (have_prefix2) bc_string_append(p, prefix2); - char *rv = bm_generate_filename(dir, p->str, fname2, ext); + char *rv = bm_generate_filename(dir, gprefix, p->str, fname2, ext); bc_string_free(p, true); return rv; diff --git a/src/blogc-make/utils.h b/src/blogc-make/utils.h index 801bf0f..13cb754 100644 --- a/src/blogc-make/utils.h +++ b/src/blogc-make/utils.h @@ -5,8 +5,8 @@ #include "../common/error.h" -char* bm_generate_filename(const char *dir, const char *prefix, const char *fname, - const char *ext); -char* bm_generate_filename2(const char *dir, const char *prefix, const char *fname, - const char *prefix2, const char *fname2, const char *ext); +char* bm_generate_filename(const char *dir, const char *gprefix, const char *prefix, + const char *fname, const char *ext); +char* bm_generate_filename2(const char *dir, const char *gprefix, const char *prefix, + const char *fname, const char *prefix2, const char *fname2, const char *ext); char* bm_abspath(const char *path, bc_error_t **err); diff --git a/tests/blogc-make/check_atom.c b/tests/blogc-make/check_atom.c index 125ca85..15ef510 100644 --- a/tests/blogc-make/check_atom.c +++ b/tests/blogc-make/check_atom.c @@ -224,6 +224,112 @@ test_atom_generate_dir(void **state) } +static void +test_atom_generate_blog_prefix_file(void **state) +{ + bm_settings_t *settings = bc_malloc(sizeof(bm_settings_t)); + settings->settings = bc_trie_new(free); + bc_trie_insert(settings->settings, "atom_prefix", bc_strdup("atom")); + bc_trie_insert(settings->settings, "atom_ext", bc_strdup(".xml")); + bc_trie_insert(settings->settings, "post_prefix", bc_strdup("post")); + bc_trie_insert(settings->settings, "html_ext", bc_strdup(".html")); + bc_trie_insert(settings->settings, "blog_prefix", bc_strdup("blog")); + + char *cmp = bm_atom_generate(settings); + + assert_non_null(cmp); + + assert_string_equal(cmp, + "\n" + "\n" + " {{ SITE_TITLE }}{% ifdef FILTER_TAG %} - " + "{{ FILTER_TAG }}{% endif %}\n" + " {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}" + "{% endif %}.xml\n" + " {{ DATE_FIRST_FORMATTED }}\n" + " \n" + " \n" + " \n" + " {{ AUTHOR_NAME }}\n" + " {{ AUTHOR_EMAIL }}\n" + " \n" + " {{ SITE_TAGLINE }}\n" + " {%- block listing %}\n" + " \n" + " {{ TITLE }}\n" + " {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}.html\n" + " {{ DATE_FORMATTED }}\n" + " {{ DATE_FORMATTED }}\n" + " \n" + " \n" + " {{ AUTHOR_NAME }}\n" + " {{ AUTHOR_EMAIL }}\n" + " \n" + " \n" + " \n" + " {%- endblock %}\n" + "\n"); + + free(cmp); + bc_trie_free(settings->settings); + free(settings); +} + + +static void +test_atom_generate_blog_prefix_dir(void **state) +{ + bm_settings_t *settings = bc_malloc(sizeof(bm_settings_t)); + settings->settings = bc_trie_new(free); + bc_trie_insert(settings->settings, "atom_prefix", bc_strdup("atom")); + bc_trie_insert(settings->settings, "atom_ext", bc_strdup("/index.xml")); + bc_trie_insert(settings->settings, "post_prefix", bc_strdup("post")); + bc_trie_insert(settings->settings, "html_ext", bc_strdup("/index.html")); + bc_trie_insert(settings->settings, "blog_prefix", bc_strdup("blog")); + + char *cmp = bm_atom_generate(settings); + + assert_non_null(cmp); + + assert_string_equal(cmp, + "\n" + "\n" + " {{ SITE_TITLE }}{% ifdef FILTER_TAG %} - " + "{{ FILTER_TAG }}{% endif %}\n" + " {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}" + "{% endif %}/index.xml\n" + " {{ DATE_FIRST_FORMATTED }}\n" + " \n" + " \n" + " \n" + " {{ AUTHOR_NAME }}\n" + " {{ AUTHOR_EMAIL }}\n" + " \n" + " {{ SITE_TAGLINE }}\n" + " {%- block listing %}\n" + " \n" + " {{ TITLE }}\n" + " {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}/index.html\n" + " {{ DATE_FORMATTED }}\n" + " {{ DATE_FORMATTED }}\n" + " \n" + " \n" + " {{ AUTHOR_NAME }}\n" + " {{ AUTHOR_EMAIL }}\n" + " \n" + " \n" + " \n" + " {%- endblock %}\n" + "\n"); + + free(cmp); + bc_trie_free(settings->settings); + free(settings); +} + + static void test_atom_empty_file(void **state) { @@ -536,6 +642,8 @@ main(void) cmocka_unit_test(test_atom_generate_empty_dir), cmocka_unit_test(test_atom_generate_file), cmocka_unit_test(test_atom_generate_dir), + cmocka_unit_test(test_atom_generate_blog_prefix_file), + cmocka_unit_test(test_atom_generate_blog_prefix_dir), cmocka_unit_test(test_atom_empty_file), cmocka_unit_test(test_atom_empty_dir), cmocka_unit_test(test_atom_file), diff --git a/tests/blogc-make/check_blogc_make.sh.in b/tests/blogc-make/check_blogc_make.sh.in index 429632c..179529a 100755 --- a/tests/blogc-make/check_blogc_make.sh.in +++ b/tests/blogc-make/check_blogc_make.sh.in @@ -1470,19 +1470,19 @@ EOF diff -uN "${TEMP}/proj/_build/page2/index.html" "${TEMP}/expected-page2.html" rm -rf "${TEMP}/proj" -mkdir -p "${TEMP}"/proj{,/temp,/contents/poost} +mkdir -p "${TEMP}"/proj{,/temp,/contents/blog/poost} ### custom settings with some posts -cat > "${TEMP}/proj/contents/poost/foo.blogc" < "${TEMP}/proj/contents/blog/poost/foo.blogc" < "${TEMP}/proj/contents/poost/bar.blogc" < "${TEMP}/proj/contents/blog/poost/bar.blogc" <&1 | tee "${TEMP}/output.txt" -grep "_build/posts\\.html" "${TEMP}/output.txt" -grep "_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "_build/pagination/2\\.html" "${TEMP}/output.txt" -grep -v "_build/pagination/3\\.html" "${TEMP}/output.txt" -grep "_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "_build/poost/bar\\.html" "${TEMP}/output.txt" +grep "_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/bar\\.html" "${TEMP}/output.txt" rm "${TEMP}/output.txt" @@ -1549,8 +1550,8 @@ Listing: Foo - Oct 01, 2016 EOF -diff -uN "${TEMP}/proj/_build/posts.html" "${TEMP}/expected-index.html" -diff -uN "${TEMP}/proj/_build/pagination/1.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/posts.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/1.html" "${TEMP}/expected-index.html" cat > "${TEMP}/expected-page-2.html" < "${TEMP}/expected-atom.xml" < Lol's Website - http://example.org/atoom/index.xml + http://example.org/blog/atoom/index.xml 2016-10-01T00:00:00Z - + Lol author@example.com @@ -1575,10 +1576,10 @@ cat > "${TEMP}/expected-atom.xml" <WAT?! Foo - http://example.org/poost/foo.html + http://example.org/blog/poost/foo.html 2016-10-01T00:00:00Z 2016-10-01T00:00:00Z - + Lol author@example.com @@ -1588,7 +1589,7 @@ cat > "${TEMP}/expected-atom.xml" < EOF -diff -uN "${TEMP}/proj/_build/atoom/index.xml" "${TEMP}/expected-atom.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/index.xml" "${TEMP}/expected-atom.xml" cat > "${TEMP}/expected-post-foo.html" < "${TEMP}/expected-post-bar.html" < "${TEMP}/proj/contents/poost/baz.blogc" < "${TEMP}/proj/contents/blog/poost/baz.blogc" <&1 | tee "${TEMP}/output.txt" -grep "_build/posts\\.html" "${TEMP}/output.txt" -grep "_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/pagination/3\\.html" "${TEMP}/output.txt" -grep -v "_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/pagination/4\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" rm "${TEMP}/output.txt" -diff -uN "${TEMP}/proj/_build/posts.html" "${TEMP}/expected-index.html" -diff -uN "${TEMP}/proj/_build/pagination/1.html" "${TEMP}/expected-index.html" -diff -uN "${TEMP}/proj/_build/pagination/2.html" "${TEMP}/expected-page-2.html" +diff -uN "${TEMP}/proj/_build/blog/posts.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/1.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/2.html" "${TEMP}/expected-page-2.html" cat > "${TEMP}/expected-page-3.html" < "${TEMP}/expected-atom-tag1.xml" < Lol's Website - tag1 - http://example.org/atoom/tag1/index.xml + http://example.org/blog/atoom/tag1/index.xml 2016-08-01T00:00:00Z - + Lol author@example.com @@ -1682,10 +1683,10 @@ cat > "${TEMP}/expected-atom-tag1.xml" <WAT?! Baz - http://example.org/poost/baz.html + http://example.org/blog/poost/baz.html 2016-08-01T00:00:00Z 2016-08-01T00:00:00Z - + Lol author@example.com @@ -1695,16 +1696,16 @@ cat > "${TEMP}/expected-atom-tag1.xml" < EOF -diff -uN "${TEMP}/proj/_build/atoom/tag1/index.xml" "${TEMP}/expected-atom-tag1.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/tag1/index.xml" "${TEMP}/expected-atom-tag1.xml" cat > "${TEMP}/expected-atom-tag2.xml" < Lol's Website - tag2 - http://example.org/atoom/tag2/index.xml + http://example.org/blog/atoom/tag2/index.xml 2016-08-01T00:00:00Z - + Lol author@example.com @@ -1712,10 +1713,10 @@ cat > "${TEMP}/expected-atom-tag2.xml" <WAT?! Baz - http://example.org/poost/baz.html + http://example.org/blog/poost/baz.html 2016-08-01T00:00:00Z 2016-08-01T00:00:00Z - + Lol author@example.com @@ -1725,7 +1726,7 @@ cat > "${TEMP}/expected-atom-tag2.xml" < EOF -diff -uN "${TEMP}/proj/_build/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml" cat > "${TEMP}/expected-post-baz.html" < "${TEMP}/expected-tag1.html" < "${TEMP}/expected-tag2.html" <&1 | tee "${TEMP}/output.txt" -grep "_build/posts\\.html" "${TEMP}/output.txt" -grep "_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/pagination/3\\.html" "${TEMP}/output.txt" -grep -v "_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/pagination/4\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" grep "_build/page1\\.html" "${TEMP}/output.txt" grep "_build/page2\\.html" "${TEMP}/output.txt" rm "${TEMP}/output.txt" -diff -uN "${TEMP}/proj/_build/posts.html" "${TEMP}/expected-index.html" -diff -uN "${TEMP}/proj/_build/pagination/1.html" "${TEMP}/expected-index.html" -diff -uN "${TEMP}/proj/_build/pagination/2.html" "${TEMP}/expected-page-2.html" -diff -uN "${TEMP}/proj/_build/pagination/3.html" "${TEMP}/expected-page-3.html" +diff -uN "${TEMP}/proj/_build/blog/posts.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/1.html" "${TEMP}/expected-index.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/2.html" "${TEMP}/expected-page-2.html" +diff -uN "${TEMP}/proj/_build/blog/pagination/3.html" "${TEMP}/expected-page-3.html" -diff -uN "${TEMP}/proj/_build/atoom/index.xml" "${TEMP}/expected-atom.xml" -diff -uN "${TEMP}/proj/_build/atoom/tag1/index.xml" "${TEMP}/expected-atom-tag1.xml" -diff -uN "${TEMP}/proj/_build/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/index.xml" "${TEMP}/expected-atom.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/tag1/index.xml" "${TEMP}/expected-atom-tag1.xml" +diff -uN "${TEMP}/proj/_build/blog/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml" -diff -uN "${TEMP}/proj/_build/poost/foo.html" "${TEMP}/expected-post-foo.html" -diff -uN "${TEMP}/proj/_build/poost/bar.html" "${TEMP}/expected-post-bar.html" -diff -uN "${TEMP}/proj/_build/poost/baz.html" "${TEMP}/expected-post-baz.html" +diff -uN "${TEMP}/proj/_build/blog/poost/foo.html" "${TEMP}/expected-post-foo.html" +diff -uN "${TEMP}/proj/_build/blog/poost/bar.html" "${TEMP}/expected-post-bar.html" +diff -uN "${TEMP}/proj/_build/blog/poost/baz.html" "${TEMP}/expected-post-baz.html" -diff -uN "${TEMP}/proj/_build/taag/tag1.html" "${TEMP}/expected-tag1.html" -diff -uN "${TEMP}/proj/_build/taag/tag1/pagination/1.html" "${TEMP}/expected-tag1.html" -diff -uN "${TEMP}/proj/_build/taag/tag2.html" "${TEMP}/expected-tag2.html" -diff -uN "${TEMP}/proj/_build/taag/tag2/pagination/1.html" "${TEMP}/expected-tag2.html" +diff -uN "${TEMP}/proj/_build/blog/taag/tag1.html" "${TEMP}/expected-tag1.html" +diff -uN "${TEMP}/proj/_build/blog/taag/tag1/pagination/1.html" "${TEMP}/expected-tag1.html" +diff -uN "${TEMP}/proj/_build/blog/taag/tag2.html" "${TEMP}/expected-tag2.html" +diff -uN "${TEMP}/proj/_build/blog/taag/tag2/pagination/1.html" "${TEMP}/expected-tag2.html" cat > "${TEMP}/expected-page1.html" <&1 | tee "${TEMP}/output.txt" -grep "_build/posts\\.html" "${TEMP}/output.txt" -grep "_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/pagination/3\\.html" "${TEMP}/output.txt" +grep "_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/3\\.html" "${TEMP}/output.txt" grep -v "_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" grep "_build/page1\\.html" "${TEMP}/output.txt" grep "_build/page2\\.html" "${TEMP}/output.txt" grep "_build/a/b/c/foo" "${TEMP}/output.txt" @@ -1905,23 +1906,23 @@ test "$(cat "${TEMP}/proj/_build/f/XDDDD")" = "FFFUUUUUU" ### clean rule ${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" clean 2>&1 | tee "${TEMP}/output.txt" -grep "_build/posts\\.html" "${TEMP}/output.txt" -grep "_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/pagination/3\\.html" "${TEMP}/output.txt" -grep -v "_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/pagination/4\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" grep "_build/page1\\.html" "${TEMP}/output.txt" grep "_build/page2\\.html" "${TEMP}/output.txt" grep "_build/a/b/c/foo" "${TEMP}/output.txt" @@ -1938,23 +1939,23 @@ rm "${TEMP}/output.txt" export OUTPUT_DIR="${TEMP}/___blogc_build" ${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt" -grep "___blogc_build/posts\\.html" "${TEMP}/output.txt" -grep "___blogc_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "___blogc_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/pagination/3\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/pagination/4\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" grep "___blogc_build/page1\\.html" "${TEMP}/output.txt" grep "___blogc_build/page2\\.html" "${TEMP}/output.txt" grep "___blogc_build/a/b/c/foo" "${TEMP}/output.txt" @@ -1967,23 +1968,23 @@ grep "___blogc_build/f/XDDDD" "${TEMP}/output.txt" rm "${TEMP}/output.txt" ${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" clean 2>&1 | tee "${TEMP}/output.txt" -grep "___blogc_build/posts\\.html" "${TEMP}/output.txt" -grep "___blogc_build/atoom/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/atoom/tag1/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/atoom/tag2/index\\.xml" "${TEMP}/output.txt" -grep "___blogc_build/pagination/1\\.html" "${TEMP}/output.txt" -grep "___blogc_build/pagination/2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/pagination/3\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/pagination/4\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/foo\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/bar\\.html" "${TEMP}/output.txt" -grep "___blogc_build/poost/baz\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag1\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag2\\.html" "${TEMP}/output.txt" -grep "___blogc_build/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" -grep -v "___blogc_build/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/posts\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/tag1/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/atoom/tag2/index\\.xml" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/1\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/pagination/3\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/pagination/4\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/foo\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/bar\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/poost/baz\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag1\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag1/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/taag/tag1/pagination/2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag2\\.html" "${TEMP}/output.txt" +grep "___blogc_build/blog/taag/tag2/pagination/1\\.html" "${TEMP}/output.txt" +grep -v "___blogc_build/blog/taag/tag2/pagination/2\\.html" "${TEMP}/output.txt" grep "___blogc_build/page1\\.html" "${TEMP}/output.txt" grep "___blogc_build/page2\\.html" "${TEMP}/output.txt" grep "___blogc_build/a/b/c/foo" "${TEMP}/output.txt" @@ -2008,10 +2009,10 @@ cat > "${TEMP}/expected-atom-dump.xml" < {{ SITE_TITLE }}{% ifdef FILTER_TAG %} - {{ FILTER_TAG }}{% endif %} - {{ BASE_DOMAIN }}{{ BASE_URL }}/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml + {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml {{ DATE_FIRST_FORMATTED }} - + {{ AUTHOR_NAME }} {{ AUTHOR_EMAIL }} @@ -2020,10 +2021,10 @@ cat > "${TEMP}/expected-atom-dump.xml" < {{ TITLE }} - {{ BASE_DOMAIN }}{{ BASE_URL }}/poost/{{ FILENAME }}.html + {{ BASE_DOMAIN }}{{ BASE_URL }}/blog/poost/{{ FILENAME }}.html {{ DATE_FORMATTED }} {{ DATE_FORMATTED }} - + {{ AUTHOR_NAME }} {{ AUTHOR_EMAIL }} diff --git a/tests/blogc-make/check_settings.c b/tests/blogc-make/check_settings.c index 3b136e7..1add2e9 100644 --- a/tests/blogc-make/check_settings.c +++ b/tests/blogc-make/check_settings.c @@ -203,6 +203,7 @@ test_settings_env2(void **state) "[settings]\n" "content_dir = guda\n" "main_template = foo.tmpl\n" + "blog_prefix = blog\n" "\n" "[environment]\n" "BOLA = asd\n" @@ -243,7 +244,7 @@ test_settings_env2(void **state) 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_int_equal(bc_trie_size(s->settings), 17); 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"); @@ -261,6 +262,7 @@ test_settings_env2(void **state) 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_string_equal(bc_trie_lookup(s->settings, "blog_prefix"), "blog"); assert_non_null(s->posts); assert_string_equal(s->posts[0], "aaaa"); assert_string_equal(s->posts[1], "bbbb"); diff --git a/tests/blogc-make/check_utils.c b/tests/blogc-make/check_utils.c index cc4fd60..5865856 100644 --- a/tests/blogc-make/check_utils.c +++ b/tests/blogc-make/check_utils.c @@ -17,106 +17,202 @@ test_generate_filename(void **state) { char *rv; - assert_null(bm_generate_filename(NULL, NULL, NULL, NULL)); - assert_null(bm_generate_filename(NULL, "", "", "")); - assert_null(bm_generate_filename("_build", NULL, NULL, NULL)); - assert_null(bm_generate_filename("_build", "", "", "")); + assert_null(bm_generate_filename(NULL, NULL, NULL, NULL, NULL)); + assert_null(bm_generate_filename(NULL, NULL, "", "", "")); + assert_null(bm_generate_filename("_build", NULL, NULL, NULL, NULL)); + assert_null(bm_generate_filename("_build", NULL, "", "", "")); - rv = bm_generate_filename(NULL, NULL, NULL, ".html"); + rv = bm_generate_filename(NULL, NULL, NULL, NULL, ".html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename(NULL, NULL, NULL, "/index.html"); + rv = bm_generate_filename(NULL, NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename(NULL, "lol", NULL, ".html"); + rv = bm_generate_filename(NULL, NULL, "lol", NULL, ".html"); assert_string_equal(rv, "/lol.html"); free(rv); - rv = bm_generate_filename(NULL, "lol", NULL, "/index.html"); + rv = bm_generate_filename(NULL, NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "/lol/index.html"); free(rv); - rv = bm_generate_filename(NULL, NULL, "foo", ".html"); + rv = bm_generate_filename(NULL, NULL, NULL, "foo", ".html"); assert_string_equal(rv, "/foo.html"); free(rv); - rv = bm_generate_filename(NULL, NULL, "foo", "/index.html"); + rv = bm_generate_filename(NULL, NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "/foo/index.html"); free(rv); - rv = bm_generate_filename(NULL, NULL, "index", ".html"); + rv = bm_generate_filename(NULL, NULL, NULL, "index", ".html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename(NULL, "lol", "index", ".html"); + rv = bm_generate_filename(NULL, NULL, "lol", "index", ".html"); assert_string_equal(rv, "/lol/index.html"); free(rv); - rv = bm_generate_filename(NULL, NULL, "index", "/index.html"); + rv = bm_generate_filename(NULL, NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename(NULL, "lol", "index", "/index.html"); + rv = bm_generate_filename(NULL, NULL, "lol", "index", "/index.html"); assert_string_equal(rv, "/lol/index/index.html"); free(rv); - rv = bm_generate_filename(NULL, "bar", "foo", ".html"); + rv = bm_generate_filename(NULL, NULL, "bar", "foo", ".html"); assert_string_equal(rv, "/bar/foo.html"); free(rv); - rv = bm_generate_filename(NULL, "bar", "foo", "/index.html"); + rv = bm_generate_filename(NULL, NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "/bar/foo/index.html"); free(rv); - rv = bm_generate_filename("_build", NULL, NULL, ".html"); + rv = bm_generate_filename("_build", NULL, NULL, NULL, ".html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename("_build", NULL, NULL, "/index.html"); + rv = bm_generate_filename("_build", NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename("_build", "lol", NULL, ".html"); + rv = bm_generate_filename("_build", NULL, "lol", NULL, ".html"); assert_string_equal(rv, "_build/lol.html"); free(rv); - rv = bm_generate_filename("_build", "lol", NULL, "/index.html"); + rv = bm_generate_filename("_build", NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "_build/lol/index.html"); free(rv); - rv = bm_generate_filename("_build", NULL, "foo", ".html"); + rv = bm_generate_filename("_build", NULL, NULL, "foo", ".html"); assert_string_equal(rv, "_build/foo.html"); free(rv); - rv = bm_generate_filename("_build", NULL, "foo", "/index.html"); + rv = bm_generate_filename("_build", NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "_build/foo/index.html"); free(rv); - rv = bm_generate_filename("_build", NULL, "index", ".html"); + rv = bm_generate_filename("_build", NULL, NULL, "index", ".html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename("_build", "lol", "index", ".html"); + rv = bm_generate_filename("_build", NULL, "lol", "index", ".html"); assert_string_equal(rv, "_build/lol/index.html"); free(rv); - rv = bm_generate_filename("_build", NULL, "index", "/index.html"); + rv = bm_generate_filename("_build", NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename("_build", "lol", "index", "/index.html"); + rv = bm_generate_filename("_build", NULL, "lol", "index", "/index.html"); assert_string_equal(rv, "_build/lol/index/index.html"); free(rv); - rv = bm_generate_filename("_build", "bar", "foo", ".html"); + rv = bm_generate_filename("_build", NULL, "bar", "foo", ".html"); assert_string_equal(rv, "_build/bar/foo.html"); free(rv); - rv = bm_generate_filename("_build", "bar", "foo", "/index.html"); + rv = bm_generate_filename("_build", NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "_build/bar/foo/index.html"); free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, NULL, ".html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, NULL, "/index.html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "lol", NULL, ".html"); + assert_string_equal(rv, "/foo/lol.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "lol", NULL, "/index.html"); + assert_string_equal(rv, "/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, "foo", ".html"); + assert_string_equal(rv, "/foo/foo.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, "foo", "/index.html"); + assert_string_equal(rv, "/foo/foo/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, "index", ".html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "lol", "index", ".html"); + assert_string_equal(rv, "/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", NULL, "index", "/index.html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "lol", "index", "/index.html"); + assert_string_equal(rv, "/foo/lol/index/index.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "bar", "foo", ".html"); + assert_string_equal(rv, "/foo/bar/foo.html"); + free(rv); + + rv = bm_generate_filename(NULL, "foo", "bar", "foo", "/index.html"); + assert_string_equal(rv, "/foo/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, NULL, ".html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "lol", NULL, ".html"); + assert_string_equal(rv, "_build/foo/lol.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "lol", NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, "foo", ".html"); + assert_string_equal(rv, "_build/foo/foo.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, "index", ".html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "lol", "index", ".html"); + assert_string_equal(rv, "_build/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", NULL, "index", "/index.html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "lol", "index", "/index.html"); + assert_string_equal(rv, "_build/foo/lol/index/index.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "bar", "foo", ".html"); + assert_string_equal(rv, "_build/foo/bar/foo.html"); + free(rv); + + rv = bm_generate_filename("_build", "foo", "bar", "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/bar/foo/index.html"); + free(rv); } @@ -125,330 +221,650 @@ test_generate_filename2(void **state) { char *rv; - assert_null(bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, NULL)); - assert_null(bm_generate_filename2(NULL, "", "", "", "", "")); - assert_null(bm_generate_filename2("_build", NULL, NULL, NULL, NULL, NULL)); - assert_null(bm_generate_filename2("_build", "", "", "", "", "")); + assert_null(bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, NULL, NULL)); + assert_null(bm_generate_filename2(NULL, NULL, "", "", "", "", "")); + assert_null(bm_generate_filename2("_build", NULL, NULL, NULL, NULL, NULL, NULL)); + assert_null(bm_generate_filename2("_build", NULL, "", "", "", "", "")); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, NULL, ".html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, NULL, ".html"); assert_string_equal(rv, "/p.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, NULL, ".html"); assert_string_equal(rv, "/q.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, NULL, ".html"); assert_string_equal(rv, "/p/q.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "/p/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, NULL, "/index.html"); assert_string_equal(rv, "/q/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, NULL, "/index.html"); assert_string_equal(rv, "/p/q/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, "lol", NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "lol", NULL, ".html"); assert_string_equal(rv, "/lol.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, "lol", NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, "lol", NULL, ".html"); assert_string_equal(rv, "/p/lol.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", "lol", NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", "lol", NULL, ".html"); assert_string_equal(rv, "/q/lol.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", "lol", NULL, ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", "lol", NULL, ".html"); assert_string_equal(rv, "/p/q/lol.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, "lol", NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "/lol/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, "lol", NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "/p/lol/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", "lol", NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", "lol", NULL, "/index.html"); assert_string_equal(rv, "/q/lol/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", "lol", NULL, "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", "lol", NULL, "/index.html"); assert_string_equal(rv, "/p/q/lol/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, "foo", ".html"); assert_string_equal(rv, "/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, "foo", ".html"); assert_string_equal(rv, "/p/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, "foo", ".html"); assert_string_equal(rv, "/q/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, "foo", ".html"); assert_string_equal(rv, "/p/q/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "/p/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, "foo", "/index.html"); assert_string_equal(rv, "/q/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, "foo", "/index.html"); assert_string_equal(rv, "/p/q/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "index", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, "index", ".html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, "index", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, "index", ".html"); assert_string_equal(rv, "/p/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, "index", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, "index", ".html"); assert_string_equal(rv, "/q/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, "index", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, "index", ".html"); assert_string_equal(rv, "/p/q/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "index", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, NULL, "index", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "/p/index/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", NULL, "index", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", NULL, "index", "/index.html"); assert_string_equal(rv, "/q/index/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", NULL, "index", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", NULL, "index", "/index.html"); assert_string_equal(rv, "/p/q/index/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, "bar", "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "bar", "foo", ".html"); assert_string_equal(rv, "/bar/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, "bar", "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, "bar", "foo", ".html"); assert_string_equal(rv, "/p/bar/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", "bar", "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", "bar", "foo", ".html"); assert_string_equal(rv, "/q/bar/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", "bar", "foo", ".html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", "bar", "foo", ".html"); assert_string_equal(rv, "/p/q/bar/foo.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, NULL, "bar", "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", NULL, "bar", "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "/p/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, NULL, "q", "bar", "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, NULL, "q", "bar", "foo", "/index.html"); assert_string_equal(rv, "/q/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2(NULL, "p", "q", "bar", "foo", "/index.html"); + rv = bm_generate_filename2(NULL, NULL, "p", "q", "bar", "foo", "/index.html"); assert_string_equal(rv, "/p/q/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, NULL, ".html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, NULL, ".html"); assert_string_equal(rv, "_build/p.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, NULL, ".html"); assert_string_equal(rv, "_build/q.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, NULL, ".html"); assert_string_equal(rv, "_build/p/q.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, NULL, "/index.html"); assert_string_equal(rv, "_build/p/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, NULL, "/index.html"); assert_string_equal(rv, "_build/q/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, NULL, "/index.html"); assert_string_equal(rv, "_build/p/q/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, "lol", NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, "lol", NULL, ".html"); assert_string_equal(rv, "_build/lol.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, "lol", NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, "lol", NULL, ".html"); assert_string_equal(rv, "_build/p/lol.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", "lol", NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", "lol", NULL, ".html"); assert_string_equal(rv, "_build/q/lol.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", "lol", NULL, ".html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", "lol", NULL, ".html"); assert_string_equal(rv, "_build/p/q/lol.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, "lol", NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "_build/lol/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, "lol", NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, "lol", NULL, "/index.html"); assert_string_equal(rv, "_build/p/lol/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", "lol", NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", "lol", NULL, "/index.html"); assert_string_equal(rv, "_build/q/lol/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", "lol", NULL, "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", "lol", NULL, "/index.html"); assert_string_equal(rv, "_build/p/q/lol/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, "foo", ".html"); assert_string_equal(rv, "_build/foo.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, "foo", ".html"); assert_string_equal(rv, "_build/p/foo.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, "foo", ".html"); assert_string_equal(rv, "_build/q/foo.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, "foo", ".html"); assert_string_equal(rv, "_build/p/q/foo.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "_build/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, "foo", "/index.html"); assert_string_equal(rv, "_build/p/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, "foo", "/index.html"); assert_string_equal(rv, "_build/q/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, "foo", "/index.html"); assert_string_equal(rv, "_build/p/q/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, "index", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, "index", ".html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, "index", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, "index", ".html"); assert_string_equal(rv, "_build/p/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, "index", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, "index", ".html"); assert_string_equal(rv, "_build/q/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, "index", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, "index", ".html"); assert_string_equal(rv, "_build/p/q/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, NULL, "index", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "_build/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, NULL, "index", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, NULL, "index", "/index.html"); assert_string_equal(rv, "_build/p/index/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", NULL, "index", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", NULL, "index", "/index.html"); assert_string_equal(rv, "_build/q/index/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", NULL, "index", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", NULL, "index", "/index.html"); assert_string_equal(rv, "_build/p/q/index/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, "bar", "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, "bar", "foo", ".html"); assert_string_equal(rv, "_build/bar/foo.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, "bar", "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, "bar", "foo", ".html"); assert_string_equal(rv, "_build/p/bar/foo.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", "bar", "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", "bar", "foo", ".html"); assert_string_equal(rv, "_build/q/bar/foo.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", "bar", "foo", ".html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", "bar", "foo", ".html"); assert_string_equal(rv, "_build/p/q/bar/foo.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, NULL, "bar", "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "_build/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", NULL, "bar", "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", NULL, "bar", "foo", "/index.html"); assert_string_equal(rv, "_build/p/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", NULL, "q", "bar", "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, NULL, "q", "bar", "foo", "/index.html"); assert_string_equal(rv, "_build/q/bar/foo/index.html"); free(rv); - rv = bm_generate_filename2("_build", "p", "q", "bar", "foo", "/index.html"); + rv = bm_generate_filename2("_build", NULL, "p", "q", "bar", "foo", "/index.html"); assert_string_equal(rv, "_build/p/q/bar/foo/index.html"); free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, NULL, ".html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, NULL, ".html"); + assert_string_equal(rv, "/foo/p.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, NULL, ".html"); + assert_string_equal(rv, "/foo/q.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, NULL, ".html"); + assert_string_equal(rv, "/foo/p/q.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, NULL, "/index.html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, NULL, "/index.html"); + assert_string_equal(rv, "/foo/p/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, NULL, "/index.html"); + assert_string_equal(rv, "/foo/q/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, NULL, "/index.html"); + assert_string_equal(rv, "/foo/p/q/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, "lol", NULL, ".html"); + assert_string_equal(rv, "/foo/lol.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, "lol", NULL, ".html"); + assert_string_equal(rv, "/foo/p/lol.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", "lol", NULL, ".html"); + assert_string_equal(rv, "/foo/q/lol.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", "lol", NULL, ".html"); + assert_string_equal(rv, "/foo/p/q/lol.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, "lol", NULL, "/index.html"); + assert_string_equal(rv, "/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, "lol", NULL, "/index.html"); + assert_string_equal(rv, "/foo/p/lol/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", "lol", NULL, "/index.html"); + assert_string_equal(rv, "/foo/q/lol/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", "lol", NULL, "/index.html"); + assert_string_equal(rv, "/foo/p/q/lol/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, "foo", ".html"); + assert_string_equal(rv, "/foo/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, "foo", ".html"); + assert_string_equal(rv, "/foo/p/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, "foo", ".html"); + assert_string_equal(rv, "/foo/q/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, "foo", ".html"); + assert_string_equal(rv, "/foo/p/q/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, "foo", "/index.html"); + assert_string_equal(rv, "/foo/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, "foo", "/index.html"); + assert_string_equal(rv, "/foo/p/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, "foo", "/index.html"); + assert_string_equal(rv, "/foo/q/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, "foo", "/index.html"); + assert_string_equal(rv, "/foo/p/q/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, "index", ".html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, "index", ".html"); + assert_string_equal(rv, "/foo/p/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, "index", ".html"); + assert_string_equal(rv, "/foo/q/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, "index", ".html"); + assert_string_equal(rv, "/foo/p/q/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, NULL, "index", "/index.html"); + assert_string_equal(rv, "/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, NULL, "index", "/index.html"); + assert_string_equal(rv, "/foo/p/index/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", NULL, "index", "/index.html"); + assert_string_equal(rv, "/foo/q/index/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", NULL, "index", "/index.html"); + assert_string_equal(rv, "/foo/p/q/index/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, "bar", "foo", ".html"); + assert_string_equal(rv, "/foo/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, "bar", "foo", ".html"); + assert_string_equal(rv, "/foo/p/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", "bar", "foo", ".html"); + assert_string_equal(rv, "/foo/q/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", "bar", "foo", ".html"); + assert_string_equal(rv, "/foo/p/q/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, NULL, "bar", "foo", "/index.html"); + assert_string_equal(rv, "/foo/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", NULL, "bar", "foo", "/index.html"); + assert_string_equal(rv, "/foo/p/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", NULL, "q", "bar", "foo", "/index.html"); + assert_string_equal(rv, "/foo/q/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2(NULL, "foo", "p", "q", "bar", "foo", "/index.html"); + assert_string_equal(rv, "/foo/p/q/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, NULL, ".html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, NULL, ".html"); + assert_string_equal(rv, "_build/foo/p.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, NULL, ".html"); + assert_string_equal(rv, "_build/foo/q.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, NULL, ".html"); + assert_string_equal(rv, "_build/foo/p/q.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/p/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/q/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/p/q/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, "lol", NULL, ".html"); + assert_string_equal(rv, "_build/foo/lol.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, "lol", NULL, ".html"); + assert_string_equal(rv, "_build/foo/p/lol.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", "lol", NULL, ".html"); + assert_string_equal(rv, "_build/foo/q/lol.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", "lol", NULL, ".html"); + assert_string_equal(rv, "_build/foo/p/q/lol.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, "lol", NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/lol/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, "lol", NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/p/lol/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", "lol", NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/q/lol/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", "lol", NULL, "/index.html"); + assert_string_equal(rv, "_build/foo/p/q/lol/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, "foo", ".html"); + assert_string_equal(rv, "_build/foo/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, "foo", ".html"); + assert_string_equal(rv, "_build/foo/p/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, "foo", ".html"); + assert_string_equal(rv, "_build/foo/q/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, "foo", ".html"); + assert_string_equal(rv, "_build/foo/p/q/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/p/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/q/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/p/q/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, "index", ".html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, "index", ".html"); + assert_string_equal(rv, "_build/foo/p/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, "index", ".html"); + assert_string_equal(rv, "_build/foo/q/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, "index", ".html"); + assert_string_equal(rv, "_build/foo/p/q/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, NULL, "index", "/index.html"); + assert_string_equal(rv, "_build/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, NULL, "index", "/index.html"); + assert_string_equal(rv, "_build/foo/p/index/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", NULL, "index", "/index.html"); + assert_string_equal(rv, "_build/foo/q/index/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", NULL, "index", "/index.html"); + assert_string_equal(rv, "_build/foo/p/q/index/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, "bar", "foo", ".html"); + assert_string_equal(rv, "_build/foo/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, "bar", "foo", ".html"); + assert_string_equal(rv, "_build/foo/p/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", "bar", "foo", ".html"); + assert_string_equal(rv, "_build/foo/q/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", "bar", "foo", ".html"); + assert_string_equal(rv, "_build/foo/p/q/bar/foo.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, NULL, "bar", "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", NULL, "bar", "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/p/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", NULL, "q", "bar", "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/q/bar/foo/index.html"); + free(rv); + + rv = bm_generate_filename2("_build", "foo", "p", "q", "bar", "foo", "/index.html"); + assert_string_equal(rv, "_build/foo/p/q/bar/foo/index.html"); + free(rv); } -- cgit v1.2.3-18-g5258