44# Usage: $(basename "$0") [--log[=FILE]] [--debug] [-h]
55#
66
7- # 1) Locate real path & module’s script dir
7+ # #############################################################################
8+ # 1) Resolve paths and load logging helpers
9+ # #############################################################################
810case " $0 " in
9- * /* ) SCRIPT_PATH=" $0 " ;;
10- * ) SCRIPT_PATH=" $PWD /$0 " ;;
11+ * /* ) SCRIPT_PATH=" $0 " ;;
12+ * ) SCRIPT_PATH=" $PWD /$0 " ;;
1113esac
12- SCRIPT_DIR=" $( cd " $( dirname " $SCRIPT_PATH " ) " && pwd) "
13-
14- # 2) Compute project root (two levels up) & export
15- PROJECT_ROOT=" $( cd " $SCRIPT_DIR /../.." && pwd) "
14+ SCRIPT_DIR=" $( cd -- " $( dirname -- " $SCRIPT_PATH " ) " && pwd) "
15+ PROJECT_ROOT=" $( cd -- " $SCRIPT_DIR /../.." && pwd) "
1616export PROJECT_ROOT
1717
18- # 3) Source logging helper & parse flags
1918. " $PROJECT_ROOT /logs/logging.sh"
19+
20+ # #############################################################################
21+ # 2) Parse flags and initialize logging
22+ # #############################################################################
2023parse_logging_flags " $@ "
21- eval " set -- $REMAINING_ARGS "
24+ set -- $REMAINING_ARGS
2225
23- # 4) Turn on xtrace if debugging, else initialize our own log
24- if [ " $DEBUG_MODE " -eq 1 ] || [ " $FORCE_LOG " -eq 1 ]; then
25- set -x
26- NEED_FINALIZE=0
26+ if { [ " $FORCE_LOG " -eq 1 ] || [ " $DEBUG_MODE " -eq 1 ]; } && [ -z " $LOGGING_INITIALIZED " ]; then
27+ module=$( basename " $SCRIPT_DIR " )
28+ init_logging " ${module} -$( basename " $0 " ) "
2729else
28- init_logging " test-$( basename " $SCRIPT_DIR " ) "
29- NEED_FINALIZE=1
30+ init_logging " $0 "
3031fi
32+ trap finalize_logging EXIT
33+ [ " $DEBUG_MODE " -eq 1 ] && set -x
3134
32- # 5) Handle help
35+ # #############################################################################
36+ # 3) Show help
37+ # #############################################################################
3338if [ " $1 " = " -h" ] || [ " $1 " = " --help" ]; then
3439 echo " Usage: $0 [--log[=FILE]] [--debug] [-h]"
35- [ " $NEED_FINALIZE " -eq 1 ] && finalize_logging
3640 exit 0
3741fi
3842
39- # 6) Load secrets
43+ # #############################################################################
44+ # 4) Load secrets & validate
45+ # #############################################################################
4046. " $PROJECT_ROOT /config/load_secrets.sh"
4147: " ${OBS_USER:? OBS_USER must be set in secrets} "
4248: " ${GIT_USER:? GIT_USER must be set in secrets} "
4349: " ${VAULT:? VAULT must be set in secrets} "
4450: " ${GIT_SERVER:? GIT_SERVER must be set in secrets} "
4551
46- # 7) Compute paths
52+ # #############################################################################
53+ # 5) Compute paths
54+ # #############################################################################
4755OBS_HOME=" /home/${OBS_USER} "
4856BARE_REPO=" /home/${GIT_USER} /vaults/${VAULT} .git"
4957WORK_TREE=" ${OBS_HOME} /vaults/${VAULT} "
5058
51- # 8) Test helpers
59+ # #############################################################################
60+ # 6) Test helpers
61+ # #############################################################################
5262run_test () {
5363 desc=" $2 "
5464 if eval " $1 " > /dev/null 2>&1 ; then
@@ -72,7 +82,9 @@ check_entry() {
7282 " safe.directory for $3 : $2 "
7383}
7484
75- # 9) Define & run tests
85+ # #############################################################################
86+ # 7) Define & run tests
87+ # #############################################################################
7688run_tests () {
7789 echo " 1..45"
7890
@@ -95,7 +107,7 @@ run_tests() {
95107 # Bare repo ownership & perms
96108 run_test " stat -f '%Su:%Sg' ${BARE_REPO} | grep -q '^${GIT_USER} :vault\$ '" \
97109 " ownership of '${BARE_REPO} ' is '${GIT_USER} :vault'"
98- run_test " ! find ${BARE_REPO} \( -not -user ${GIT_USER} -or -not -group vault \) -print | grep -q ." \
110+ run_test " ! find ${BARE_REPO} \\ ( -not -user ${GIT_USER} -or -not -group vault \ \ ) -print | grep -q ." \
99111 " all files under '${BARE_REPO} ' are owned by ${GIT_USER} :vault"
100112 run_test " ! find ${BARE_REPO} -not -perm -g=r -print | grep -q ." " all entries under '${BARE_REPO} ' are group-readable"
101113 run_test " ! find ${BARE_REPO} -not -perm -g=w -print | grep -q ." " all entries under '${BARE_REPO} ' are group-writable"
@@ -166,8 +178,11 @@ run_tests() {
166178
167179run_tests
168180
169- # 10) Finalize logging if we created our own
170- [ " $NEED_FINALIZE " -eq 1 ] && finalize_logging
171-
172- # 11) Exit with failure status if any test failed
173- exit $( [ " $TEST_FAILED " -ne 0 ] && echo 1 || echo 0)
181+ # #############################################################################
182+ # 8) Exit with status
183+ # #############################################################################
184+ if [ " $TEST_FAILED " -ne 0 ]; then
185+ exit 1
186+ else
187+ exit 0
188+ fi
0 commit comments