test-gitpages-setup.sh (2025B)
1 #!/bin/sh 2 3 set -eu 4 5 WORKDIR="" 6 TARGET="" 7 8 log() { printf 'test: %s\n' "$1"; } 9 die() { 10 printf 'test: error: %s\n' "$1" >&2 11 exit 1 12 } 13 14 cleanup() { 15 if [ -n "$WORKDIR" ] && [ -d "$WORKDIR" ]; then 16 rm -rf "$WORKDIR" 17 fi 18 } 19 20 setup_dirs() { 21 WORKDIR="$(mktemp -d -t gitpages_test.XXXXXX)" \ 22 || die "mktemp failed" 23 24 trap cleanup EXIT HUP INT TERM 25 26 TARGET="$WORKDIR/repos" 27 mkdir "$TARGET" 28 29 # Quiet git default‑branch hint 30 GIT_CONFIG_NOSYSTEM=1 \ 31 git config --global init.defaultBranch main 32 33 log "created test workspace in $WORKDIR" 34 } 35 36 setup_repos() { 37 git init --bare "$TARGET/foo.git" 38 git init --bare "$TARGET/bar.git" 39 log "created foo.git and bar.git" 40 } 41 42 run_gitpages_init() { 43 log "running gitpages-init-repos.sh" 44 45 # Feed 3 lines per repo: desc, owner, url 46 ( 47 printf '%s\n' "Description for foo" 48 printf '%s\n' "user@foo.org" 49 printf '%s\n' "https://foo.example.com" 50 51 printf '%s\n' "Description for bar" 52 printf '%s\n' "user@bar.org" 53 printf '%s\n' "https://bar.example.com" 54 ) | ./gitpages.sh setup "$TARGET" 55 } 56 57 inspect_repos() { 58 log "contents of repos:" 59 for repo in "$TARGET"/*.git; do 60 if [ -d "$repo" ]; then 61 repo_name=$(basename "$repo" .git) 62 printf '\n== %s ==\n' "$repo_name" 63 64 if [ -f "$repo/description" ]; then 65 printf 'desc:\n' 66 cat "$repo/description" 67 else 68 printf 'desc: (MISSING!)\n' 69 fi 70 71 if [ -f "$repo/owner" ]; then 72 printf '\nowner:\n' 73 cat "$repo/owner" 74 else 75 printf 'owner: (MISSING!)\n' 76 fi 77 78 if [ -f "$repo/url" ]; then 79 printf '\nurl:\n' 80 cat "$repo/url" 81 else 82 printf 'url: (MISSING!)\n' 83 fi 84 85 hook="$repo/hooks/post-receive" 86 if [ -f "$hook" ]; then 87 printf '\npost-receive (head 10):\n' 88 head -10 "$hook" 89 else 90 printf 'post-receive hook: (MISSING!)\n' 91 fi 92 fi 93 done 94 } 95 96 main() { 97 setup_dirs 98 setup_repos 99 run_gitpages_init 100 inspect_repos 101 102 log "test complete" 103 } 104 105 main