summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man/blogcfile.5.ronn5
-rw-r--r--src/blogc-make/atom.c10
-rw-r--r--src/blogc-make/ctx.c8
-rw-r--r--src/blogc-make/rules.c42
-rw-r--r--src/blogc-make/settings.c1
-rw-r--r--src/blogc-make/utils.c18
-rw-r--r--src/blogc-make/utils.h8
-rw-r--r--tests/blogc-make/check_atom.c108
-rwxr-xr-xtests/blogc-make/check_blogc_make.sh.in325
-rw-r--r--tests/blogc-make/check_settings.c4
-rw-r--r--tests/blogc-make/check_utils.c640
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
@@ -225,6 +225,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,
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+ "<feed xmlns=\"http://www.w3.org/2005/Atom\">\n"
+ " <title type=\"text\">{{ SITE_TITLE }}{% ifdef FILTER_TAG %} - "
+ "{{ FILTER_TAG }}{% endif %}</title>\n"
+ " <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}"
+ "{% endif %}.xml</id>\n"
+ " <updated>{{ DATE_FIRST_FORMATTED }}</updated>\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/\" />\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}"
+ "/{{ FILTER_TAG }}{% endif %}.xml\" rel=\"self\" />\n"
+ " <author>\n"
+ " <name>{{ AUTHOR_NAME }}</name>\n"
+ " <email>{{ AUTHOR_EMAIL }}</email>\n"
+ " </author>\n"
+ " <subtitle type=\"text\">{{ SITE_TAGLINE }}</subtitle>\n"
+ " {%- block listing %}\n"
+ " <entry>\n"
+ " <title type=\"text\">{{ TITLE }}</title>\n"
+ " <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}.html</id>\n"
+ " <updated>{{ DATE_FORMATTED }}</updated>\n"
+ " <published>{{ DATE_FORMATTED }}</published>\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}.html\" />\n"
+ " <author>\n"
+ " <name>{{ AUTHOR_NAME }}</name>\n"
+ " <email>{{ AUTHOR_EMAIL }}</email>\n"
+ " </author>\n"
+ " <content type=\"html\"><![CDATA[{{ CONTENT }}]]></content>\n"
+ " </entry>\n"
+ " {%- endblock %}\n"
+ "</feed>\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,
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+ "<feed xmlns=\"http://www.w3.org/2005/Atom\">\n"
+ " <title type=\"text\">{{ SITE_TITLE }}{% ifdef FILTER_TAG %} - "
+ "{{ FILTER_TAG }}{% endif %}</title>\n"
+ " <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}"
+ "{% endif %}/index.xml</id>\n"
+ " <updated>{{ DATE_FIRST_FORMATTED }}</updated>\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/\" />\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atom{% ifdef FILTER_TAG %}"
+ "/{{ FILTER_TAG }}{% endif %}/index.xml\" rel=\"self\" />\n"
+ " <author>\n"
+ " <name>{{ AUTHOR_NAME }}</name>\n"
+ " <email>{{ AUTHOR_EMAIL }}</email>\n"
+ " </author>\n"
+ " <subtitle type=\"text\">{{ SITE_TAGLINE }}</subtitle>\n"
+ " {%- block listing %}\n"
+ " <entry>\n"
+ " <title type=\"text\">{{ TITLE }}</title>\n"
+ " <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}/index.html</id>\n"
+ " <updated>{{ DATE_FORMATTED }}</updated>\n"
+ " <published>{{ DATE_FORMATTED }}</published>\n"
+ " <link href=\"{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/post/{{ FILENAME }}/index.html\" />\n"
+ " <author>\n"
+ " <name>{{ AUTHOR_NAME }}</name>\n"
+ " <email>{{ AUTHOR_EMAIL }}</email>\n"
+ " </author>\n"
+ " <content type=\"html\"><![CDATA[{{ CONTENT }}]]></content>\n"
+ " </entry>\n"
+ " {%- endblock %}\n"
+ "</feed>\n");
+
+ free(cmp);
+ bc_trie_free(settings->settings);
+ free(settings);
+}
+
+
+static void
test_atom_empty_file(void **state)
{
bm_settings_t *settings = bc_malloc(sizeof(bm_settings_t));
@@ -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" <<EOF
+cat > "${TEMP}/proj/contents/blog/poost/foo.blogc" <<EOF
TITLE: Foo
DATE: 2016-10-01
----------------
This is foo.
EOF
-cat > "${TEMP}/proj/contents/poost/bar.blogc" <<EOF
+cat > "${TEMP}/proj/contents/blog/poost/bar.blogc" <<EOF
TITLE: Bar
DATE: 2016-09-01
----------------
@@ -1510,6 +1510,7 @@ pagination_prefix = pagination
posts_per_page = 1
atom_posts_per_page = 1
html_ext = .html
+blog_prefix = blog
index_prefix = posts
post_prefix = poost
tag_prefix = taag
@@ -1533,13 +1534,13 @@ bar
EOF
${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" 2>&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" <<EOF
@@ -1558,16 +1559,16 @@ Listing: Bar - Sep 01, 2016
EOF
-diff -uN "${TEMP}/proj/_build/pagination/2.html" "${TEMP}/expected-page-2.html"
+diff -uN "${TEMP}/proj/_build/blog/pagination/2.html" "${TEMP}/expected-page-2.html"
cat > "${TEMP}/expected-atom.xml" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">Lol's Website</title>
- <id>http://example.org/atoom/index.xml</id>
+ <id>http://example.org/blog/atoom/index.xml</id>
<updated>2016-10-01T00:00:00Z</updated>
<link href="http://example.org/" />
- <link href="http://example.org/atoom/index.xml" rel="self" />
+ <link href="http://example.org/blog/atoom/index.xml" rel="self" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1575,10 +1576,10 @@ cat > "${TEMP}/expected-atom.xml" <<EOF
<subtitle type="text">WAT?!</subtitle>
<entry>
<title type="text">Foo</title>
- <id>http://example.org/poost/foo.html</id>
+ <id>http://example.org/blog/poost/foo.html</id>
<updated>2016-10-01T00:00:00Z</updated>
<published>2016-10-01T00:00:00Z</published>
- <link href="http://example.org/poost/foo.html" />
+ <link href="http://example.org/blog/poost/foo.html" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1588,7 +1589,7 @@ cat > "${TEMP}/expected-atom.xml" <<EOF
</entry>
</feed>
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" <<EOF
@@ -1599,7 +1600,7 @@ Foo - Oct 01, 2016
EOF
-diff -uN "${TEMP}/proj/_build/poost/foo.html" "${TEMP}/expected-post-foo.html"
+diff -uN "${TEMP}/proj/_build/blog/poost/foo.html" "${TEMP}/expected-post-foo.html"
cat > "${TEMP}/expected-post-bar.html" <<EOF
@@ -1610,14 +1611,14 @@ Bar - Sep 01, 2016
EOF
-diff -uN "${TEMP}/proj/_build/poost/bar.html" "${TEMP}/expected-post-bar.html"
+diff -uN "${TEMP}/proj/_build/blog/poost/bar.html" "${TEMP}/expected-post-bar.html"
rm -rf "${TEMP}/proj/_build"
### custom settings with some posts and tags
-cat > "${TEMP}/proj/contents/poost/baz.blogc" <<EOF
+cat > "${TEMP}/proj/contents/blog/poost/baz.blogc" <<EOF
TITLE: Baz
DATE: 2016-08-01
TAGS: tag1 tag2
@@ -1633,29 +1634,29 @@ tag2
EOF
${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" 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"
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" <<EOF
@@ -1663,18 +1664,18 @@ Listing: Baz - Aug 01, 2016
EOF
-diff -uN "${TEMP}/proj/_build/pagination/3.html" "${TEMP}/expected-page-3.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/blog/atoom/index.xml" "${TEMP}/expected-atom.xml"
cat > "${TEMP}/expected-atom-tag1.xml" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">Lol's Website - tag1</title>
- <id>http://example.org/atoom/tag1/index.xml</id>
+ <id>http://example.org/blog/atoom/tag1/index.xml</id>
<updated>2016-08-01T00:00:00Z</updated>
<link href="http://example.org/" />
- <link href="http://example.org/atoom/tag1/index.xml" rel="self" />
+ <link href="http://example.org/blog/atoom/tag1/index.xml" rel="self" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1682,10 +1683,10 @@ cat > "${TEMP}/expected-atom-tag1.xml" <<EOF
<subtitle type="text">WAT?!</subtitle>
<entry>
<title type="text">Baz</title>
- <id>http://example.org/poost/baz.html</id>
+ <id>http://example.org/blog/poost/baz.html</id>
<updated>2016-08-01T00:00:00Z</updated>
<published>2016-08-01T00:00:00Z</published>
- <link href="http://example.org/poost/baz.html" />
+ <link href="http://example.org/blog/poost/baz.html" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1695,16 +1696,16 @@ cat > "${TEMP}/expected-atom-tag1.xml" <<EOF
</entry>
</feed>
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" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">Lol's Website - tag2</title>
- <id>http://example.org/atoom/tag2/index.xml</id>
+ <id>http://example.org/blog/atoom/tag2/index.xml</id>
<updated>2016-08-01T00:00:00Z</updated>
<link href="http://example.org/" />
- <link href="http://example.org/atoom/tag2/index.xml" rel="self" />
+ <link href="http://example.org/blog/atoom/tag2/index.xml" rel="self" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1712,10 +1713,10 @@ cat > "${TEMP}/expected-atom-tag2.xml" <<EOF
<subtitle type="text">WAT?!</subtitle>
<entry>
<title type="text">Baz</title>
- <id>http://example.org/poost/baz.html</id>
+ <id>http://example.org/blog/poost/baz.html</id>
<updated>2016-08-01T00:00:00Z</updated>
<published>2016-08-01T00:00:00Z</published>
- <link href="http://example.org/poost/baz.html" />
+ <link href="http://example.org/blog/poost/baz.html" />
<author>
<name>Lol</name>
<email>author@example.com</email>
@@ -1725,7 +1726,7 @@ cat > "${TEMP}/expected-atom-tag2.xml" <<EOF
</entry>
</feed>
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" <<EOF
@@ -1736,9 +1737,9 @@ Baz - Aug 01, 2016
EOF
-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"
cat > "${TEMP}/expected-tag1.html" <<EOF
@@ -1746,8 +1747,8 @@ Listing: tag1 - Baz - Aug 01, 2016
EOF
-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/blog/taag/tag1.html" "${TEMP}/expected-tag1.html"
+diff -uN "${TEMP}/proj/_build/blog/taag/tag1/pagination/1.html" "${TEMP}/expected-tag1.html"
cat > "${TEMP}/expected-tag2.html" <<EOF
@@ -1755,8 +1756,8 @@ Listing: tag2 - Baz - Aug 01, 2016
EOF
-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/tag2.html" "${TEMP}/expected-tag2.html"
+diff -uN "${TEMP}/proj/_build/blog/taag/tag2/pagination/1.html" "${TEMP}/expected-tag2.html"
rm -rf "${TEMP}/proj/_build"
@@ -1782,45 +1783,45 @@ page2
EOF
${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" 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"
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" <<EOF
@@ -1866,23 +1867,23 @@ f
EOF
${TESTS_ENVIRONMENT} ${BLOGC_MAKE} -f "${TEMP}/proj/blogcfile" 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 "_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" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">{{ SITE_TITLE }}{% ifdef FILTER_TAG %} - {{ FILTER_TAG }}{% endif %}</title>
- <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml</id>
+ <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml</id>
<updated>{{ DATE_FIRST_FORMATTED }}</updated>
<link href="{{ BASE_DOMAIN }}{{ BASE_URL }}/" />
- <link href="{{ BASE_DOMAIN }}{{ BASE_URL }}/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml" rel="self" />
+ <link href="{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/atoom{% ifdef FILTER_TAG %}/{{ FILTER_TAG }}{% endif %}/index.xml" rel="self" />
<author>
<name>{{ AUTHOR_NAME }}</name>
<email>{{ AUTHOR_EMAIL }}</email>
@@ -2020,10 +2021,10 @@ cat > "${TEMP}/expected-atom-dump.xml" <<EOF
{%- block listing %}
<entry>
<title type="text">{{ TITLE }}</title>
- <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/poost/{{ FILENAME }}.html</id>
+ <id>{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/poost/{{ FILENAME }}.html</id>
<updated>{{ DATE_FORMATTED }}</updated>
<published>{{ DATE_FORMATTED }}</published>
- <link href="{{ BASE_DOMAIN }}{{ BASE_URL }}/poost/{{ FILENAME }}.html" />
+ <link href="{{ BASE_DOMAIN }}{{ BASE_URL }}/blog/poost/{{ FILENAME }}.html" />
<author>
<name>{{ AUTHOR_NAME }}</name>
<email>{{ AUTHOR_EMAIL }}</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);
}