test_needs_rebuild_no_output() { . "$project_dir/lib/config.sh" . "$project_dir/lib/runtime.sh" . "$project_dir/lib/builder.sh" tmpdir="${TMPDIR:-/tmp}/kewt_test.$$" mkdir -p "$tmpdir" echo "test" > "$tmpdir/src.md" needs_rebuild "$tmpdir/src.md" "$tmpdir/out.html" result=$? assert_eq "0" "$result" "rebuild when output missing" rm -rf "$tmpdir" } test_needs_rebuild_output_newer() { . "$project_dir/lib/config.sh" . "$project_dir/lib/runtime.sh" . "$project_dir/lib/builder.sh" tmpdir="${TMPDIR:-/tmp}/kewt_test.$$" mkdir -p "$tmpdir" echo "test" > "$tmpdir/src.md" sleep 1 echo "test" > "$tmpdir/out.html" needs_rebuild "$tmpdir/src.md" "$tmpdir/out.html" result=$? assert_eq "1" "$result" "no rebuild when output newer" rm -rf "$tmpdir" } test_needs_rebuild_source_newer() { . "$project_dir/lib/config.sh" . "$project_dir/lib/runtime.sh" . "$project_dir/lib/builder.sh" tmpdir="${TMPDIR:-/tmp}/kewt_test.$$" mkdir -p "$tmpdir" echo "old" > "$tmpdir/out.html" sleep 1 echo "new" > "$tmpdir/src.md" needs_rebuild "$tmpdir/src.md" "$tmpdir/out.html" result=$? assert_eq "0" "$result" "rebuild when source newer" rm -rf "$tmpdir" } test_escape_html_text() { . "$project_dir/lib/generator.sh" result=$(escape_html_text "