diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/t0202-stats.sh81
1 file changed, 81 insertions, 0 deletions
diff --git a/tests/t0202-stats.sh b/tests/t0202-stats.sh
new file mode 100755
index 0000000..1589776
--- /dev/null
+++ b/tests/t0202-stats.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+test_description='Check the statistics page'
+. ./setup.sh
+
+# The default test config carries no enable-stats.
+test_expect_success 'stats are off by default' '
+ cgit_url "foo/stats" >tmp &&
+ grep "Status: 404" tmp &&
+ cgit_url "foo" >tmp &&
+ ! grep ">stats</a>" tmp
+'
+
+# A repo with one commit dated now, so the authors table has something
+# to count beside the 2005-dated fixture commits. The commit graph
+# makes the language walk take the graph lookup path, which once
+# returned another commit after the history walk released memory.
+test_expect_success 'set up a stats config' '
+ mkrepo repos/pulse 2 &&
+ (
+ cd repos/pulse &&
+ GIT_AUTHOR_DATE="@$(date +%s) +0000" \
+ GIT_COMMITTER_DATE="@$(date +%s) +0000" \
+ git commit --allow-empty -m fresh &&
+ git commit-graph write --reachable
+ ) &&
+ {
+ echo "virtual-root=/" &&
+ echo "cache-size=0" &&
+ echo "enable-stats=1" &&
+ echo "repo.url=stat" &&
+ echo "repo.path=$PWD/repos/pulse/.git"
+ } >statsrc &&
+ {
+ echo "virtual-root=/" &&
+ echo "cache-size=0" &&
+ echo "enable-stats=1" &&
+ echo "max-stats=month" &&
+ echo "repo.url=stat" &&
+ echo "repo.path=$PWD/repos/pulse/.git"
+ } >statmaxrc
+'
+
+statq() { CGIT_CONFIG="$PWD/statsrc" QUERY_STRING="$1" cgit; }
+
+test_expect_success 'stats tab appears when enabled' '
+ statq "url=stat/" >tmp &&
+ grep ">stats</a>" tmp
+'
+
+test_expect_success 'stats page renders both sections' '
+ statq "url=stat/stats/" >tmp &&
+ grep "<h2>Languages" tmp &&
+ grep "<h2>Commits per author" tmp
+'
+
+test_expect_success 'stat options sit above the content' '
+ tr -d "\n" <tmp | sed "s/<h2>Commits per author.*//" | grep "cgit-panel"
+'
+
+test_expect_success 'extensionless fixture files fold into Other' '
+ grep "<th>Language</th><th>Size</th><th>Share</th>" tmp &&
+ grep "class=.left.>Other" tmp
+'
+
+test_expect_success 'all four periods offered when max-stats is unset' '
+ statq "url=stat/stats/" >tmp &&
+ grep "<option value=.w." tmp &&
+ grep "<option value=.m." tmp &&
+ grep "<option value=.q." tmp &&
+ grep "<option value=.y." tmp
+'
+
+test_expect_success 'max-stats bounds the selectable periods' '
+ CGIT_CONFIG="$PWD/statmaxrc" QUERY_STRING="url=stat/stats/&period=y" cgit >tmp &&
+ grep "Statistics type disabled" tmp &&
+ CGIT_CONFIG="$PWD/statmaxrc" QUERY_STRING="url=stat/stats/" cgit >tmp &&
+ ! grep "<option value=.q." tmp
+'
+
+test_done