diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
Gather page output into one buffer
Diffstat (limited to 'tests/t0020-validate-cache.sh')
| -rwxr-xr-x | tests/t0020-validate-cache.sh | 49 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 49 insertions, 0 deletions
diff --git a/tests/t0020-validate-cache.sh b/tests/t0020-validate-cache.sh index 657765d..7e6334c 100755 --- a/tests/t0020-validate-cache.sh +++ b/tests/t0020-validate-cache.sh @@ -75,4 +75,53 @@ test_expect_success 'verify cache-size=1021' ' test_cmp output.full output.second ' +# --- A cached page must hold everything the uncached one produced ----------- +# Page output is buffered, so the slot is only complete if the buffer is +# emptied before the generated content is measured. The blob here is larger +# than one buffer, so a missing flush would truncate the cached copy. +test_expect_success 'set up a repo with a page larger than the output buffer' ' + mkrepo repos/bigpage 1 && + ( + cd repos/bigpage && + awk "BEGIN{for(i=0;i<20000;i++) print \"line \" i \" of the big file\"}" >big.txt && + git add big.txt && + git commit -m "add big.txt" + ) && + { + echo "virtual-root=/" && + echo "cache-root=$PWD/cache2" && + echo "cache-size=64" && + echo "enable-tree-linenumbers=1" && + echo "repo.url=bigpage" && + echo "repo.path=$PWD/repos/bigpage/.git" + } >bigrc && + rm -rf cache2 && mkdir cache2 +' + +bigq() { CGIT_CONFIG="$PWD/bigrc" QUERY_STRING="$1" cgit; } + +test_expect_success 'the first request fills the slot and the second replays it' ' + bigq "url=bigpage/tree/big.txt" >big.first && + test $(wc -c <big.first) -gt 65536 && + bigq "url=bigpage/tree/big.txt" >big.second && + strip_headers <big.first >big.first.body && + strip_headers <big.second >big.second.body && + test_cmp big.first.body big.second.body +' + +test_expect_success 'the cached body matches one generated with the cache off' ' + sed -e "s/^cache-size=64$/cache-size=0/" bigrc >bignocache && + CGIT_CONFIG="$PWD/bignocache" QUERY_STRING="url=bigpage/tree/big.txt" cgit >big.nocache && + strip_headers <big.nocache >big.nocache.body && + # The footer carries the time the page was generated, which differs + # between the two runs by construction. + sed -e "s/generated by .*//" big.nocache.body >big.a && + sed -e "s/generated by .*//" big.second.body >big.b && + test_cmp big.a big.b +' + +test_expect_success 'the page ends where it should, so nothing was dropped' ' + tail -c 200 big.second.body | grep "</html>" +' + test_done |
