mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 20:07:04 +01:00
The block_compulsive_opening split moved launch_with_timer into lib/cco_wrapper.sh, and tests 17 and 18 grep the entry script alone. CI went red on "launch_with_timer function exists — Not found at expected location": a false failure about code that is present and working, one file over. Both assertions are about a feature existing, so they now search the entry script together with lib/cco_*.sh. That restores what they were always checking and does not go stale on the next split. The lib list is built with a loop and an -f test rather than a bare glob, so an unmatched pattern cannot land in the array as a literal and no shellcheck suppression is needed. Verified by running the suite: both checks PASS, 18 passed. The one remaining local failure is test 19, which inspects /usr/bin on this machine — signal and discord are not currently wrapped here and beeper is not installed. That is machine state, predates this change, and is not what CI reported. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F3PzGc75gBcdxP3PkHXGcV
132 lines
4.6 KiB
Bash
Executable File
132 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Security hardening tests: compulsive-opening block + screen locker.
|
|
# Sourced by test_security_hardening.sh; inherits its strict mode,
|
|
# colors, counters (PASS/FAIL/SKIP), LIVE_SECTION and test_result().
|
|
|
|
sec_tests_compulsive_block() {
|
|
# ==================================================================
|
|
# COMPULSIVE BLOCK TESTS
|
|
# ==================================================================
|
|
echo "--- COMPULSIVE OPENING BLOCK ---"
|
|
|
|
compulsive_dir="$REPO_DIR/scripts/periodic_background/digital_wellbeing"
|
|
compulsive_file="$compulsive_dir/block_compulsive_opening.sh"
|
|
|
|
# The blocker was split into lib/cco_*.sh under the 250-line cap, so these
|
|
# two checks search the entry script AND its libs. Grepping the entry
|
|
# script alone made them report "not found" for code that had simply moved
|
|
# one file over — a false failure that says nothing about the feature.
|
|
# Searching the set keeps the assertion about the FEATURE existing, which
|
|
# is what it was always for, and survives the next split too.
|
|
compulsive_sources=("$compulsive_file")
|
|
for compulsive_lib in "$compulsive_dir"/lib/cco_*.sh; do
|
|
[[ -f "$compulsive_lib" ]] && compulsive_sources+=("$compulsive_lib")
|
|
done
|
|
|
|
# Test 17: Auto-close timer configuration exists
|
|
if [[ -f "$compulsive_file" ]]; then
|
|
if grep -qs "AUTO_CLOSE_TIMEOUT_MINUTES" "${compulsive_sources[@]}"; then
|
|
test_result "Auto-close timer configuration exists" "pass"
|
|
else
|
|
test_result "Auto-close timer configuration exists" "fail" "Variable not found"
|
|
fi
|
|
else
|
|
test_result "Auto-close timer configuration exists" "skip" "Script not found"
|
|
fi
|
|
|
|
# Test 18: launch_with_timer function exists
|
|
if [[ -f "$compulsive_file" ]]; then
|
|
if grep -qs "launch_with_timer" "${compulsive_sources[@]}"; then
|
|
test_result "launch_with_timer function exists" "pass"
|
|
else
|
|
test_result "launch_with_timer function exists" "fail" "Function not found"
|
|
fi
|
|
else
|
|
test_result "launch_with_timer function exists" "skip" "Script not found"
|
|
fi
|
|
|
|
# Test 19: Compulsive block wrappers installed
|
|
wrappers_ok=true
|
|
for app in beeper signal-desktop discord; do
|
|
if [[ -f "/usr/bin/$app" ]]; then
|
|
if grep -q "block-compulsive-opening" "/usr/bin/$app" 2>/dev/null; then
|
|
: # OK
|
|
else
|
|
wrappers_ok=false
|
|
fi
|
|
fi
|
|
done
|
|
if [[ "$wrappers_ok" == true ]]; then
|
|
test_result "Compulsive block wrappers installed" "pass"
|
|
else
|
|
test_result "Compulsive block wrappers installed" "fail" "Some wrappers missing or incorrect"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
}
|
|
|
|
sec_tests_screen_locker() {
|
|
# ==================================================================
|
|
# SCREEN LOCKER TESTS
|
|
# ==================================================================
|
|
echo "--- SCREEN LOCKER ---"
|
|
|
|
screen_locker="$HOME/testsAndMisc/python_pkg/screen_locker/screen_lock.py"
|
|
|
|
# Test 20: Screen locker exists
|
|
if [[ -f "$screen_locker" ]]; then
|
|
test_result "Screen locker script exists" "pass"
|
|
else
|
|
test_result "Screen locker script exists" "skip" "Not found at expected location"
|
|
fi
|
|
|
|
# Test 21: Running option removed
|
|
if [[ -f "$screen_locker" ]]; then
|
|
# Check that there's no "Running" button in ask_workout_type
|
|
if grep -A 20 "def ask_workout_type" "$screen_locker" | grep -q '"Running"'; then
|
|
test_result "Running workout option removed" "fail" "Still present in ask_workout_type"
|
|
else
|
|
test_result "Running workout option removed" "pass"
|
|
fi
|
|
else
|
|
test_result "Running workout option removed" "skip" "Script not found"
|
|
fi
|
|
|
|
# Test 22: Table tennis minimum sets validation
|
|
if [[ -f "$screen_locker" ]]; then
|
|
if grep -q "MIN_TABLE_TENNIS_SETS" "$screen_locker"; then
|
|
test_result "Table tennis minimum sets validation exists" "pass"
|
|
else
|
|
test_result "Table tennis minimum sets validation exists" "fail" "Constant not found"
|
|
fi
|
|
else
|
|
test_result "Table tennis minimum sets validation exists" "skip" "Script not found"
|
|
fi
|
|
|
|
# Test 23: Table tennis verification question
|
|
if [[ -f "$screen_locker" ]]; then
|
|
if grep -q "ask_table_tennis_verification" "$screen_locker"; then
|
|
test_result "Table tennis verification question exists" "pass"
|
|
else
|
|
test_result "Table tennis verification question exists" "fail" "Function not found"
|
|
fi
|
|
else
|
|
test_result "Table tennis verification question exists" "skip" "Script not found"
|
|
fi
|
|
|
|
# Test 24: 60 second submit delay for table tennis
|
|
if [[ -f "$screen_locker" ]]; then
|
|
if grep -q "TABLE_TENNIS_SUBMIT_DELAY = 60" "$screen_locker"; then
|
|
test_result "Table tennis 60-second submit delay" "pass"
|
|
else
|
|
test_result "Table tennis 60-second submit delay" "fail" "Constant not set to 60"
|
|
fi
|
|
else
|
|
test_result "Table tennis 60-second submit delay" "skip" "Script not found"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
}
|