mirror of
https://github.com/tw93/Mole.git
synced 2026-02-12 23:50:15 +00:00
Add macOS update check edge case tests
This commit is contained in:
@@ -220,6 +220,91 @@ EOF
|
|||||||
[[ "$output" == *"MACOS_UPDATE_AVAILABLE=true"* ]]
|
[[ "$output" == *"MACOS_UPDATE_AVAILABLE=true"* ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "check_macos_update clears update flag when softwareupdate reports no updates" {
|
||||||
|
run bash --noprofile --norc <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
|
source "$PROJECT_ROOT/lib/core/common.sh"
|
||||||
|
source "$PROJECT_ROOT/lib/check/all.sh"
|
||||||
|
|
||||||
|
defaults() { echo "1"; }
|
||||||
|
|
||||||
|
run_with_timeout() {
|
||||||
|
shift
|
||||||
|
if [[ "${1:-}" == "softwareupdate" && "${2:-}" == "-l" && "${3:-}" == "--no-scan" ]]; then
|
||||||
|
cat <<'OUT'
|
||||||
|
Software Update Tool
|
||||||
|
|
||||||
|
Finding available software
|
||||||
|
No new software available.
|
||||||
|
OUT
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 124
|
||||||
|
}
|
||||||
|
|
||||||
|
start_inline_spinner(){ :; }
|
||||||
|
stop_inline_spinner(){ :; }
|
||||||
|
|
||||||
|
check_macos_update
|
||||||
|
echo "MACOS_UPDATE_AVAILABLE=$MACOS_UPDATE_AVAILABLE"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" == *"System up to date"* ]]
|
||||||
|
[[ "$output" == *"MACOS_UPDATE_AVAILABLE=false"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "check_macos_update keeps update flag when softwareupdate times out" {
|
||||||
|
run bash --noprofile --norc <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
|
source "$PROJECT_ROOT/lib/core/common.sh"
|
||||||
|
source "$PROJECT_ROOT/lib/check/all.sh"
|
||||||
|
|
||||||
|
defaults() { echo "1"; }
|
||||||
|
|
||||||
|
run_with_timeout() {
|
||||||
|
shift
|
||||||
|
if [[ "${1:-}" == "softwareupdate" && "${2:-}" == "-l" && "${3:-}" == "--no-scan" ]]; then
|
||||||
|
return 124
|
||||||
|
fi
|
||||||
|
return 124
|
||||||
|
}
|
||||||
|
|
||||||
|
start_inline_spinner(){ :; }
|
||||||
|
stop_inline_spinner(){ :; }
|
||||||
|
|
||||||
|
check_macos_update
|
||||||
|
echo "MACOS_UPDATE_AVAILABLE=$MACOS_UPDATE_AVAILABLE"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" == *"Update available"* ]]
|
||||||
|
[[ "$output" == *"MACOS_UPDATE_AVAILABLE=true"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "check_macos_update skips softwareupdate when defaults shows no updates" {
|
||||||
|
run bash --noprofile --norc <<'EOF'
|
||||||
|
set -euo pipefail
|
||||||
|
source "$PROJECT_ROOT/lib/core/common.sh"
|
||||||
|
source "$PROJECT_ROOT/lib/check/all.sh"
|
||||||
|
|
||||||
|
defaults() { echo "0"; }
|
||||||
|
|
||||||
|
run_with_timeout() {
|
||||||
|
echo "SHOULD_NOT_CALL_SOFTWAREUPDATE"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_macos_update
|
||||||
|
echo "MACOS_UPDATE_AVAILABLE=$MACOS_UPDATE_AVAILABLE"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "$output" == *"System up to date"* ]]
|
||||||
|
[[ "$output" == *"MACOS_UPDATE_AVAILABLE=false"* ]]
|
||||||
|
[[ "$output" != *"SHOULD_NOT_CALL_SOFTWAREUPDATE"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
@test "run_with_timeout succeeds without GNU timeout" {
|
@test "run_with_timeout succeeds without GNU timeout" {
|
||||||
run bash --noprofile --norc -c '
|
run bash --noprofile --norc -c '
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|||||||
Reference in New Issue
Block a user