X-Git-Url: https://plomlompom.com/repos/?p=redo-blog;a=blobdiff_plain;f=test.sh;h=ce50d29a7a50aef30fa56e48c973e663a2276336;hp=c64c2e935f5281bb134b518f7d0df9f743841756;hb=7849f6d516ab555c83ae9d979c71e874383b9c17;hpb=d962915f35c07c652aaf127e7ccb0aad1725e871 diff --git a/test.sh b/test.sh index c64c2e9..ce50d29 100755 --- a/test.sh +++ b/test.sh @@ -1,27 +1,137 @@ #!/bin/sh -rm -rf test/test_dir -./add_dir.sh test/test_dir -cp test/test_files/test.md test/test_dir/ -cp test/test_files/foo.rst test/test_dir/ -cp test/test_files/bar\ baz.md test/test_dir/ -cd test/test_dir -redo -cd ../.. -for file in test/test_files/*.html test/test_files/*.meta; do - cmp_file=`echo "$file" | sed 's/test_files/test_dir/'` - printf "== %s diff test ==\n" "$cmp_file" - diff "$file" "$cmp_file" +uuid_pattern='[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + +blog_meta_file_test() +{ + meta_file="$1" + printf "== %s meta file pattern match test ==\n" "$meta_file" + if cat "$meta_file" | sed -n '1p' | grep -Eq '^'"$uuid_pattern"'$' \ + && cat "$meta_file" | sed -n '2p' | grep -Eq "^[0-9]+$"; then + echo "== test SUCCESS ==" + else + echo "== test FAILURE ==" + fi +} + +article_meta_file_test() +{ + meta_file="$1" + printf "== %s meta file pattern match test ==\n" "$meta_file" + if cat "$meta_file" | sed -n '1p' | grep -Eq '^'"$uuid_pattern"'$' \ + && cat "$meta_file" | sed -n '2p' | grep -Eq "^[0-9]+_[0-9]+$" \ + && cat "$meta_file" | sed -n '3p' | grep -Eq "^[0-9a-f]{32}$" \ + && cat "$meta_file" | sed -n '2p' | grep -Eq "^[0-9]+_[0-9]+$"; then + echo "== test SUCCESS ==" + else + echo "== test FAILURE ==" + fi +} + +diff_test() +{ + expected_file="$1" + generated_file="$2" + printf "== %s diff test ==\n" "$generated_file" + diff "$expected_file" "$generated_file" if [ "$?" = "0" ]; then echo "== test SUCCESS ==" else echo "== test FAILURE ==" fi -done -uuid_file=test/test_dir/uuid.meta -printf "== %s UUID pattern match test ==\n" "$uuid_file" -if cat "$uuid_file" | grep -Eq "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"; then - echo "== test SUCCESS ==" +} + +# Set up test directory, run file creations. +expected_files_dir="test/test_files" +generated_files_dir="test/test_dir" +rm -rf "$generated_files_dir" +./add_dir.sh "$generated_files_dir" +working_dir=$(pwd) +cd "$generated_files_dir" +redo +cp "$working_dir/$expected_files_dir"/te\"\;st.md . +redo +cp "$working_dir/$expected_files_dir"/bar\ baz.md . +redo +cp "$working_dir/$expected_files_dir"/foo.rst . +cp "$working_dir/$expected_files_dir"/foo.links . +redo + +# Test file modification tracking. +update_datetime_start=$(cat "metadata/bar baz.feed_snippet" | grep '') +sleep 1 +sed -i '2d' bar\ baz.md +redo +update_datetime_after_invisible_change=$(cat "metadata/bar baz.feed_snippet" | grep '') +printf "== testing \"bar baz\"' update tag remaining unchanged with invisible source file change ==\n" +if [ "$update_datetime_start" = "$update_datetime_after_invisible_change" ]; then + echo "== test SUCCESS ==" else - echo "== test FAILURE ==" + echo "== test FAILURE ==" +fi +sleep 1 +sed -i '2d' bar\ baz.md +redo +update_datetime_after_visible_change=$(cat "metadata/bar baz.feed_snippet" | grep '') +printf "== testing \"bar baz\"' update tag changing with visible source file change ==\n" +if [ "$update_datetime_start" = "$update_datetime_after_visible_change" ]; then + echo "== test FAILURE ==" +else + echo "== test SUCCESS ==" fi +cp "$working_dir/$expected_files_dir"/bar\ baz.md . +redo + +# Compare metadata files. +cd "$working_dir" +blog_meta_file_test "$generated_files_dir""/metadata/automatic_metadata" +for file in "$expected_files_dir"/metadata/*; do + basename=$(basename "$file") + cmp_file="$generated_files_dir/metadata/$basename" + diff_test "$file" "$cmp_file" +done + +# Compare .links files. +cd "$working_dir" +for file in "$expected_files_dir"/*.links "$expected_files_dir"/*.captcha; do + basename=$(basename "$file") + cmp_file="$generated_files_dir/$basename" + diff_test "$file" "$cmp_file" +done + +# Compare generated HTML files. Ignore variable dates. +for file in "$expected_files_dir"/*.html.ignoring; do + basename=$(basename "$file") + cmp_file="$generated_files_dir/${basename%.ignoring}" + if [ ! "$file" = "$expected_files_dir""/index.html.ignoring" ]; then + article_meta_file_test "${generated_files_dir}/metadata/${basename%.html.ignoring}.automatic_metadata" + fi + generated_file="$cmp_file".ignoring + cat "$cmp_file" | \ + sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/IGNORE/g' \ + > "$generated_file" + diff_test "$file" "$generated_file" +done + +# Compare feed files. Ignore variable dates and UUIDs. +original_file="$generated_files_dir""/feed.xml" +generated_file="$original_file".ignoring +expected_file="$expected_files_dir""/feed.xml.ignoring" +cat "$original_file" | \ + sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}Z/IGNORE/g' | \ + sed 's/urn:uuid:[0-9a-f]\{8\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{12\}/urn:uuid:IGNORE/g' \ + > "$generated_file" +diff_test "$expected_file" "$generated_file" +rm "$generated_file" + +# Check symbolic links. +for file in "$generated_files_dir"/feed.xml "$generated_files_dir"/*.html; do + basename=$(basename "$file") + linkname=$(readlink "$generated_files_dir/public/$basename") + printf "== public/%s symbolic link test ==\n" "$basename" + if [ "$working_dir/$generated_files_dir/$basename" = "$linkname" ]; then + echo "== test SUCCESS ==" + else + echo "== test FAILURE ==" + fi +done