diff options
context:
space:
mode:
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Renumber the test scripts into themed ranges
t000x the ground the suite stands on: git version, html validity, the cache t01xx page content, one script per page t02xx features that cut across pages: filters, submodule links, dates, limits t03xx defence, the security regressions and the $HOME promise t04xx the helper tools under tools/
Diffstat (limited to 'tests/t0201-filters.sh')
-rwxr-xr-xtests/t0201-filters.sh70
1 file changed, 70 insertions, 0 deletions
diff --git a/tests/t0201-filters.sh b/tests/t0201-filters.sh
new file mode 100755
index 0000000..88533f4
--- /dev/null
+++ b/tests/t0201-filters.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# Checks the source, about, commit and email filters, which hand a piece of
+# page content to an outside program before it is written out. The whole
+# body runs once per kind of filter, the exec kind always and the lua kind
+# only where cgit was built with lua, because both have to produce the same
+# page from the same repository.
+
+test_description='Check filtered content'
+. ./setup.sh
+
+prefixes="exec"
+if [ $CGIT_HAS_LUA -eq 1 ]; then
+ prefixes="$prefixes lua"
+fi
+
+for prefix in $prefixes
+do
+ test_expect_success "generate filter-$prefix/tree/a%2bb" "
+ cgit_url 'filter-$prefix/tree/a%2bb' >tmp
+ "
+
+ test_expect_success "check whether the $prefix source filter works" '
+ grep "<code>a+b HELLO$" tmp
+ '
+
+ test_expect_success "generate filter-$prefix/about/" "
+ cgit_url 'filter-$prefix/about/' >tmp
+ "
+
+ test_expect_success "check whether the $prefix about filter works" '
+ grep "<div id='"'"'summary'"'"'>a+b HELLO$" tmp
+ '
+
+ test_expect_success "generate filter-$prefix/commit/" "
+ cgit_url 'filter-$prefix/commit/' >tmp
+ "
+
+ test_expect_success "check whether the $prefix commit filter works" '
+ grep "<div class='"'"'commit-subject'"'"'>ADD A+B" tmp
+ '
+
+ test_expect_success "check whether the $prefix email filter works for authors" '
+ grep "<author@example.com> commit A U THOR &LT;AUTHOR@EXAMPLE.COM&GT;" tmp
+ '
+
+ test_expect_success "check whether the $prefix email filter works for committers" '
+ grep "<committer@example.com> commit C O MITTER &LT;COMMITTER@EXAMPLE.COM&GT;" tmp
+ '
+
+ # Page output is buffered, so whatever was written before a filter
+ # opens has to leave the buffer before the filter takes over stdout,
+ # and whatever was written while it was open has to leave before
+ # stdout is handed back, since those bytes are meant for the filter.
+ # A missed flush reorders the page rather than losing any of it,
+ # so the two tests below confirm that the markup around the filtered
+ # text is still on the side of it that it belongs on.
+ test_expect_success "the $prefix source filter output stays inside its cell" "
+ cgit_url 'filter-$prefix/tree/a%2bb' >tmp &&
+ tr -d '\n' <tmp >flat.out &&
+ grep '<code>a+b HELLO</code>' flat.out
+ "
+
+ test_expect_success "the $prefix about filter output stays inside its div" "
+ cgit_url 'filter-$prefix/about/' >tmp &&
+ grep \"<div id='summary'>a+b HELLO\" tmp
+ "
+done
+
+test_done