#!@BASH@

set -xe -o pipefail

export LC_ALL=C

export BLOGC=@abs_top_builddir@/blogc

TEMP="$(mktemp -d)"
[[ -n "${TEMP}" ]]

trap_func() {
    [[ -e "${TEMP}/output.txt" ]] && cat "${TEMP}/output.txt"
    [[ -n "${TEMP}" ]] && rm -rf "${TEMP}"
}

trap trap_func EXIT

mkdir -p "${TEMP}"/proj{,/templates,/content/post}


### minimal settings, will produce no file

cat > "${TEMP}/proj/blogcfile" <<EOF
[global]
AUTHOR_NAME = Lol
AUTHOR_EMAIL = author@example.com
SITE_TITLE = Lol's Website
SITE_TAGLINE = WAT?!
BASE_DOMAIN = http://example.org
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1


### default settings with some posts

cat > "${TEMP}/proj/content/post/foo.txt" <<EOF
TITLE: Foo
DATE: 2016-10-01
----------------
This is foo.
EOF

cat > "${TEMP}/proj/content/post/bar.txt" <<EOF
TITLE: Bar
DATE: 2016-09-01
----------------
This is bar.
EOF

cat > "${TEMP}/proj/templates/main.tmpl" <<EOF
{% block listing %}
Listing: {% ifdef FILTER_TAG %}{{ FILTER_TAG }} - {% endif %}{{ TITLE }} - {{ DATE_FORMATTED }}
{% endblock %}
{% block entry %}
{{ TITLE }}{% if MAKE_TYPE == "post" %} - {{ DATE_FORMATTED }}{% endif %}

{{ CONTENT }}
{% endblock %}
EOF

cat >> "${TEMP}/proj/blogcfile" <<EOF
[posts]
foo
bar
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt"
grep "_build/index\\.html" "${TEMP}/output.txt"
grep "_build/atom\\.xml" "${TEMP}/output.txt"
grep "_build/page/1/index\\.html" "${TEMP}/output.txt"
grep "_build/post/foo/index\\.html" "${TEMP}/output.txt"
grep "_build/post/bar/index\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

cat > "${TEMP}/expected-index.html" <<EOF

Listing: Foo - Oct 01, 2016, 12:00 AM GMT

Listing: Bar - Sep 01, 2016, 12:00 AM GMT


EOF
diff -uN "${TEMP}/proj/_build/index.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_build/page/1/index.html" "${TEMP}/expected-index.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>/atom.xml</id>
  <updated>2016-10-01T00:00:00Z</updated>
  <link href="http://example.org/" />
  <link href="http://example.org/atom.xml" rel="self" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Foo</title>
    <id>/post/foo/</id>
    <updated>2016-10-01T00:00:00Z</updated>
    <published>2016-10-01T00:00:00Z</published>
    <link href="http://example.org/post/foo/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is foo.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="text">Bar</title>
    <id>/post/bar/</id>
    <updated>2016-09-01T00:00:00Z</updated>
    <published>2016-09-01T00:00:00Z</published>
    <link href="http://example.org/post/bar/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is bar.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_build/atom.xml" "${TEMP}/expected-atom.xml"

cat > "${TEMP}/expected-post-foo.html" <<EOF


Foo - Oct 01, 2016, 12:00 AM GMT

<p>This is foo.</p>


EOF
diff -uN "${TEMP}/proj/_build/post/foo/index.html" "${TEMP}/expected-post-foo.html"

cat > "${TEMP}/expected-post-bar.html" <<EOF


Bar - Sep 01, 2016, 12:00 AM GMT

<p>This is bar.</p>


EOF
diff -uN "${TEMP}/proj/_build/post/bar/index.html" "${TEMP}/expected-post-bar.html"

rm -rf "${TEMP}/proj/_build"


### default settings with some posts and tags

cat > "${TEMP}/proj/content/post/baz.txt" <<EOF
TITLE: Baz
DATE: 2016-08-01
TAGS: tag1 tag2
----------------
This is baz.
EOF

cat >> "${TEMP}/proj/blogcfile" <<EOF
baz
[tags]
tag1
tag2
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt"
grep "_build/index\\.html" "${TEMP}/output.txt"
grep "_build/atom\\.xml" "${TEMP}/output.txt"
grep "_build/atom/tag1\\.xml" "${TEMP}/output.txt"
grep "_build/atom/tag2\\.xml" "${TEMP}/output.txt"
grep "_build/page/1/index\\.html" "${TEMP}/output.txt"
grep "_build/post/foo/index\\.html" "${TEMP}/output.txt"
grep "_build/post/bar/index\\.html" "${TEMP}/output.txt"
grep "_build/post/baz/index\\.html" "${TEMP}/output.txt"
grep "_build/tag/tag1/index\\.html" "${TEMP}/output.txt"
grep "_build/tag/tag2/index\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

cat > "${TEMP}/expected-index.html" <<EOF

Listing: Foo - Oct 01, 2016, 12:00 AM GMT

Listing: Bar - Sep 01, 2016, 12:00 AM GMT

Listing: Baz - Aug 01, 2016, 12:00 AM GMT


EOF
diff -uN "${TEMP}/proj/_build/index.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_build/page/1/index.html" "${TEMP}/expected-index.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>/atom.xml</id>
  <updated>2016-10-01T00:00:00Z</updated>
  <link href="http://example.org/" />
  <link href="http://example.org/atom.xml" rel="self" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Foo</title>
    <id>/post/foo/</id>
    <updated>2016-10-01T00:00:00Z</updated>
    <published>2016-10-01T00:00:00Z</published>
    <link href="http://example.org/post/foo/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is foo.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="text">Bar</title>
    <id>/post/bar/</id>
    <updated>2016-09-01T00:00:00Z</updated>
    <published>2016-09-01T00:00:00Z</published>
    <link href="http://example.org/post/bar/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is bar.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="text">Baz</title>
    <id>/post/baz/</id>
    <updated>2016-08-01T00:00:00Z</updated>
    <published>2016-08-01T00:00:00Z</published>
    <link href="http://example.org/post/baz/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is baz.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_build/atom.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>/atom/tag1.xml</id>
  <updated>2016-08-01T00:00:00Z</updated>
  <link href="http://example.org/" />
  <link href="http://example.org/atom/tag1.xml" rel="self" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Baz</title>
    <id>/post/baz/</id>
    <updated>2016-08-01T00:00:00Z</updated>
    <published>2016-08-01T00:00:00Z</published>
    <link href="http://example.org/post/baz/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is baz.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_build/atom/tag1.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>/atom/tag2.xml</id>
  <updated>2016-08-01T00:00:00Z</updated>
  <link href="http://example.org/" />
  <link href="http://example.org/atom/tag2.xml" rel="self" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Baz</title>
    <id>/post/baz/</id>
    <updated>2016-08-01T00:00:00Z</updated>
    <published>2016-08-01T00:00:00Z</published>
    <link href="http://example.org/post/baz/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is baz.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_build/atom/tag2.xml" "${TEMP}/expected-atom-tag2.xml"

cat > "${TEMP}/expected-post-baz.html" <<EOF


Baz - Aug 01, 2016, 12:00 AM GMT

<p>This is baz.</p>


EOF
diff -uN "${TEMP}/proj/_build/post/foo/index.html" "${TEMP}/expected-post-foo.html"
diff -uN "${TEMP}/proj/_build/post/bar/index.html" "${TEMP}/expected-post-bar.html"
diff -uN "${TEMP}/proj/_build/post/baz/index.html" "${TEMP}/expected-post-baz.html"

cat > "${TEMP}/expected-tag1.html" <<EOF

Listing: tag1 - Baz - Aug 01, 2016, 12:00 AM GMT


EOF
diff -uN "${TEMP}/proj/_build/tag/tag1/index.html" "${TEMP}/expected-tag1.html"

cat > "${TEMP}/expected-tag2.html" <<EOF

Listing: tag2 - Baz - Aug 01, 2016, 12:00 AM GMT


EOF
diff -uN "${TEMP}/proj/_build/tag/tag2/index.html" "${TEMP}/expected-tag2.html"

rm -rf "${TEMP}/proj/_build"


### default settings with some posts, pages and tags

cat > "${TEMP}/proj/content/page1.txt" <<EOF
TITLE: Page 1
-------------
This is page 1.
EOF

cat > "${TEMP}/proj/content/page2.txt" <<EOF
TITLE: Page 2
-------------
This is page 2.
EOF

cat >> "${TEMP}/proj/blogcfile" <<EOF
[pages]
page1
page2
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt"
grep "_build/index\\.html" "${TEMP}/output.txt"
grep "_build/atom\\.xml" "${TEMP}/output.txt"
grep "_build/atom/tag1\\.xml" "${TEMP}/output.txt"
grep "_build/atom/tag2\\.xml" "${TEMP}/output.txt"
grep "_build/page/1/index\\.html" "${TEMP}/output.txt"
grep "_build/post/foo/index\\.html" "${TEMP}/output.txt"
grep "_build/post/bar/index\\.html" "${TEMP}/output.txt"
grep "_build/post/baz/index\\.html" "${TEMP}/output.txt"
grep "_build/tag/tag1/index\\.html" "${TEMP}/output.txt"
grep "_build/tag/tag2/index\\.html" "${TEMP}/output.txt"
grep "_build/page1/index\\.html" "${TEMP}/output.txt"
grep "_build/page2/index\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

diff -uN "${TEMP}/proj/_build/index.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_build/page/1/index.html" "${TEMP}/expected-index.html"

diff -uN "${TEMP}/proj/_build/atom.xml" "${TEMP}/expected-atom.xml"

diff -uN "${TEMP}/proj/_build/atom/tag1.xml" "${TEMP}/expected-atom-tag1.xml"
diff -uN "${TEMP}/proj/_build/atom/tag2.xml" "${TEMP}/expected-atom-tag2.xml"

diff -uN "${TEMP}/proj/_build/post/foo/index.html" "${TEMP}/expected-post-foo.html"
diff -uN "${TEMP}/proj/_build/post/bar/index.html" "${TEMP}/expected-post-bar.html"
diff -uN "${TEMP}/proj/_build/post/baz/index.html" "${TEMP}/expected-post-baz.html"

diff -uN "${TEMP}/proj/_build/tag/tag1/index.html" "${TEMP}/expected-tag1.html"
diff -uN "${TEMP}/proj/_build/tag/tag2/index.html" "${TEMP}/expected-tag2.html"

cat > "${TEMP}/expected-page1.html" <<EOF


Page 1

<p>This is page 1.</p>


EOF
diff -uN "${TEMP}/proj/_build/page1/index.html" "${TEMP}/expected-page1.html"

cat > "${TEMP}/expected-page2.html" <<EOF


Page 2

<p>This is page 2.</p>


EOF
diff -uN "${TEMP}/proj/_build/page2/index.html" "${TEMP}/expected-page2.html"

rm -rf "${TEMP}/proj"
mkdir -p "${TEMP}"/proj{,/temp,/contents/poost}


### custom settings with some posts

cat > "${TEMP}/proj/contents/poost/foo.blogc" <<EOF
TITLE: Foo
DATE: 2016-10-01
----------------
This is foo.
EOF

cat > "${TEMP}/proj/contents/poost/bar.blogc" <<EOF
TITLE: Bar
DATE: 2016-09-01
----------------
This is bar.
EOF

cat > "${TEMP}/proj/temp/main.html" <<EOF
{% block listing %}
Listing: {% ifdef FILTER_TAG %}{{ FILTER_TAG }} - {% endif %}{{ TITLE }} - {{ DATE_FORMATTED }}
{% endblock %}
{% block entry %}
{{ TITLE }}{% if MAKE_TYPE == "post" %} - {{ DATE_FORMATTED }}{% endif %}

{{ CONTENT }}
{% endblock %}
EOF

cat > "${TEMP}/proj/blogcfile" <<EOF
[settings]
content_dir = contents
template_dir = temp
main_template = main.html
source_ext = .blogc
output_dir = _blogc_build
pagination_prefix = pagination
posts_per_page = 1
atom_posts_per_page = 1
html_ext = .html
index_prefix = posts
post_prefix = poost
tag_prefix = taag
atom_prefix = atoom
atom_ext = /index.xml
date_format = %b %d, %Y
locale = en_US.utf8

[global]
AUTHOR_NAME = Lol
AUTHOR_EMAIL = author@example.com
SITE_TITLE = Lol's Website
SITE_TAGLINE = WAT?!
BASE_DOMAIN = http://example.org

[posts]
foo
bar
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/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/pagination/1\\.html" "${TEMP}/output.txt"
grep "_blogc_build/pagination/2\\.html" "${TEMP}/output.txt"
grep "_blogc_build/poost/foo\\.html" "${TEMP}/output.txt"
grep "_blogc_build/poost/bar\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

cat > "${TEMP}/expected-index.html" <<EOF

Listing: Foo - Oct 01, 2016


EOF
diff -uN "${TEMP}/proj/_blogc_build/posts.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/1.html" "${TEMP}/expected-index.html"

cat > "${TEMP}/expected-page-2.html" <<EOF

Listing: Bar - Sep 01, 2016


EOF
diff -uN "${TEMP}/proj/_blogc_build/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>/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" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Foo</title>
    <id>/poost/foo/</id>
    <updated>2016-10-01T00:00:00Z</updated>
    <published>2016-10-01T00:00:00Z</published>
    <link href="http://example.org/poost/foo/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is foo.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_blogc_build/atoom/index.xml" "${TEMP}/expected-atom.xml"

cat > "${TEMP}/expected-post-foo.html" <<EOF


Foo - Oct 01, 2016

<p>This is foo.</p>


EOF
diff -uN "${TEMP}/proj/_blogc_build/poost/foo.html" "${TEMP}/expected-post-foo.html"

cat > "${TEMP}/expected-post-bar.html" <<EOF


Bar - Sep 01, 2016

<p>This is bar.</p>


EOF
diff -uN "${TEMP}/proj/_blogc_build/poost/bar.html" "${TEMP}/expected-post-bar.html"

rm -rf "${TEMP}/proj/_build"


### default settings with some posts and tags

cat > "${TEMP}/proj/contents/poost/baz.blogc" <<EOF
TITLE: Baz
DATE: 2016-08-01
TAGS: tag1 tag2
----------------
This is baz.
EOF

cat >> "${TEMP}/proj/blogcfile" <<EOF
baz
[tags]
tag1
tag2
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/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 "_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/tag2\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

diff -uN "${TEMP}/proj/_blogc_build/posts.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/1.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/2.html" "${TEMP}/expected-page-2.html"

cat > "${TEMP}/expected-page-3.html" <<EOF

Listing: Baz - Aug 01, 2016


EOF
diff -uN "${TEMP}/proj/_blogc_build/pagination/3.html" "${TEMP}/expected-page-3.html"

diff -uN "${TEMP}/proj/_blogc_build/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>/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" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Baz</title>
    <id>/poost/baz/</id>
    <updated>2016-08-01T00:00:00Z</updated>
    <published>2016-08-01T00:00:00Z</published>
    <link href="http://example.org/poost/baz/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is baz.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_blogc_build/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>/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" />
  <author>
    <name>Lol</name>
    <email>author@example.com</email>
  </author>
  <subtitle type="text">WAT?!</subtitle>
  
  <entry>
    <title type="text">Baz</title>
    <id>/poost/baz/</id>
    <updated>2016-08-01T00:00:00Z</updated>
    <published>2016-08-01T00:00:00Z</published>
    <link href="http://example.org/poost/baz/" />
    <author>
      <name>Lol</name>
      <email>author@example.com</email>
    </author>
    <content type="html"><![CDATA[<p>This is baz.</p>
]]></content>
  </entry>
  
</feed>
EOF
diff -uN "${TEMP}/proj/_blogc_build/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml"

cat > "${TEMP}/expected-post-baz.html" <<EOF


Baz - Aug 01, 2016

<p>This is baz.</p>


EOF
diff -uN "${TEMP}/proj/_blogc_build/poost/foo.html" "${TEMP}/expected-post-foo.html"
diff -uN "${TEMP}/proj/_blogc_build/poost/bar.html" "${TEMP}/expected-post-bar.html"
diff -uN "${TEMP}/proj/_blogc_build/poost/baz.html" "${TEMP}/expected-post-baz.html"

cat > "${TEMP}/expected-tag1.html" <<EOF

Listing: tag1 - Baz - Aug 01, 2016


EOF
diff -uN "${TEMP}/proj/_blogc_build/taag/tag1.html" "${TEMP}/expected-tag1.html"

cat > "${TEMP}/expected-tag2.html" <<EOF

Listing: tag2 - Baz - Aug 01, 2016


EOF
diff -uN "${TEMP}/proj/_blogc_build/taag/tag2.html" "${TEMP}/expected-tag2.html"

rm -rf "${TEMP}/proj/_blogc_build"


### default settings with some posts, pages and tags

cat > "${TEMP}/proj/contents/page1.blogc" <<EOF
TITLE: Page 1
-------------
This is page 1.
EOF

cat > "${TEMP}/proj/contents/page2.blogc" <<EOF
TITLE: Page 2
-------------
This is page 2.
EOF

cat >> "${TEMP}/proj/blogcfile" <<EOF
[pages]
page1
page2
EOF

${TESTS_ENVIRONMENT} @abs_top_builddir@/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 "_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/tag2\\.html" "${TEMP}/output.txt"
grep "_blogc_build/page1\\.html" "${TEMP}/output.txt"
grep "_blogc_build/page2\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

diff -uN "${TEMP}/proj/_blogc_build/posts.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/1.html" "${TEMP}/expected-index.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/2.html" "${TEMP}/expected-page-2.html"
diff -uN "${TEMP}/proj/_blogc_build/pagination/3.html" "${TEMP}/expected-page-3.html"

diff -uN "${TEMP}/proj/_blogc_build/atoom/index.xml" "${TEMP}/expected-atom.xml"
diff -uN "${TEMP}/proj/_blogc_build/atoom/tag1/index.xml" "${TEMP}/expected-atom-tag1.xml"
diff -uN "${TEMP}/proj/_blogc_build/atoom/tag2/index.xml" "${TEMP}/expected-atom-tag2.xml"

diff -uN "${TEMP}/proj/_blogc_build/poost/foo.html" "${TEMP}/expected-post-foo.html"
diff -uN "${TEMP}/proj/_blogc_build/poost/bar.html" "${TEMP}/expected-post-bar.html"
diff -uN "${TEMP}/proj/_blogc_build/poost/baz.html" "${TEMP}/expected-post-baz.html"

diff -uN "${TEMP}/proj/_blogc_build/taag/tag1.html" "${TEMP}/expected-tag1.html"
diff -uN "${TEMP}/proj/_blogc_build/taag/tag2.html" "${TEMP}/expected-tag2.html"

cat > "${TEMP}/expected-page1.html" <<EOF


Page 1

<p>This is page 1.</p>


EOF
diff -uN "${TEMP}/proj/_blogc_build/page1.html" "${TEMP}/expected-page1.html"

cat > "${TEMP}/expected-page2.html" <<EOF


Page 2

<p>This is page 2.</p>


EOF
diff -uN "${TEMP}/proj/_blogc_build/page2.html" "${TEMP}/expected-page2.html"


### clean rule

${TESTS_ENVIRONMENT} @abs_top_builddir@/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 "_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/tag2\\.html" "${TEMP}/output.txt"
grep "_blogc_build/page1\\.html" "${TEMP}/output.txt"
grep "_blogc_build/page2\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

[[ ! -d "${TEMP}/proj/_blogc_build" ]]

export OUTPUT_DIR="${TEMP}/___blogc_build"

${TESTS_ENVIRONMENT} @abs_top_builddir@/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 "___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/tag2\\.html" "${TEMP}/output.txt"
grep "___blogc_build/page1\\.html" "${TEMP}/output.txt"
grep "___blogc_build/page2\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

${TESTS_ENVIRONMENT} @abs_top_builddir@/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 "___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/tag2\\.html" "${TEMP}/output.txt"
grep "___blogc_build/page1\\.html" "${TEMP}/output.txt"
grep "___blogc_build/page2\\.html" "${TEMP}/output.txt"

rm "${TEMP}/output.txt"

[[ ! -d "${OUTPUT_DIR}" ]]

unset OUTPUT_DIR