#!/bin/sh # Checks that the configuration documents stay consistent with each other. # The manual documents every key the reference config sets, the reference # config sets every key the manual documents and puts scan-path after every # global setting, and both settings sections of the manual keep their entries # sorted. test_description='Check the configuration documents' CGIT_TEST_NO_CREATE_REPOS=YesPlease . ./setup.sh ROOT="$TEST_OUTPUT_DIRECTORY/.." test_expect_success 'extract the key lists' ' sed -n "/^Global settings$/,/^Repository-specific cgitrc file$/p" "$ROOT/MANUAL.txt" | sed -n "s/^\([a-z][a-zA-Z0-9.<>-]*\)::$/\1/p" | sort >manual-keys && sed -n "s/^#\{0,1\}\([a-z][a-zA-Z0-9.<>-]*\)=.*/\1/p" "$ROOT/custom/cgitrc" | sed -e "s/^mimetype\..*/mimetype./" | sort -u >example-keys && sed -n "s/^#\{0,1\}\(repo\.module-link\)\..*=.*/\1./p" "$ROOT/custom/cgitrc" >>example-keys && sort -o example-keys example-keys && test -s manual-keys && test -s example-keys ' test_expect_success 'the reference config sets every documented key' ' comm -23 manual-keys example-keys >missing && test_must_be_empty missing ' test_expect_success 'every key the reference config sets is documented' ' comm -13 manual-keys example-keys >undocumented && test_must_be_empty undocumented ' # A scanned repository inherits the global settings above scan-path, so the # sample keeps none below it. test_expect_success 'the reference config scans after every global setting' ' sed -n "/^#\{0,1\}scan-path=/,\$p" "$ROOT/custom/cgitrc" | sed -n "s/^#\{0,1\}\([a-z][a-zA-Z0-9.<>-]*\)=.*/\1/p" | grep -v "^repo\." >after-scan-path && echo scan-path >expect && test_cmp expect after-scan-path ' test_expect_success 'the manual lists its global settings in order' ' sed -n "/^Global settings$/,/^Repository settings$/p" "$ROOT/MANUAL.txt" | sed -n "s/^\([a-z][a-zA-Z0-9.<>-]*\)::$/\1/p" >global-order && LC_ALL=C sort -c global-order ' test_expect_success 'the manual lists its repository settings in order' ' sed -n "/^Repository settings$/,/^Repository-specific cgitrc file$/p" "$ROOT/MANUAL.txt" | sed -n "s/^\(repo\.[a-zA-Z0-9.<>-]*\)::$/\1/p" >repo-order && LC_ALL=C sort -c repo-order ' test_done