1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-22 20:15:07 +00:00

fix: pass through sudo's native prompt instead of hardcoding 'Password:' (#599)

* pass through sudo prompt instead of hardcoding Password:

* simplify: remove redundant retry loop, sudo handles retries internally

* keep stty safety net and styled prefix

* fix: clear clamshell sudo prompt lines correctly

---------

Co-authored-by: Tw93 <hitw93@gmail.com>
This commit is contained in:
Yuval Dinodia
2026-03-20 19:33:44 -04:00
committed by GitHub
parent 2c2249b9a5
commit 7403f4d35e
2 changed files with 70 additions and 44 deletions

View File

@@ -70,3 +70,59 @@ setup() {
result=$(bash -c "source '$PROJECT_ROOT/lib/core/common.sh'; source '$PROJECT_ROOT/lib/core/sudo.sh'; echo \$MOLE_SUDO_ESTABLISHED")
[[ "$result" == "false" ]] || [[ -z "$result" ]]
}
@test "request_sudo_access clears four lines in clamshell mode when Touch ID hint is shown" {
run bash -c '
source "'"$PROJECT_ROOT"'/lib/core/common.sh"
source "'"$PROJECT_ROOT"'/lib/core/sudo.sh"
tty_file="$(mktemp)"
chmod 600 "$tty_file"
sudo() {
case "$1" in
-n) return 1 ;;
-k) return 0 ;;
*) return 1 ;;
esac
}
tty() { printf "%s\n" "$tty_file"; }
is_clamshell_mode() { return 0; }
check_touchid_support() { return 0; }
_request_password() { return 0; }
safe_clear_lines() { printf "CLEAR:%s\n" "$1"; }
request_sudo_access "Admin access required"
'
[ "$status" -eq 0 ]
[[ "$output" == *"CLEAR:4"* ]]
}
@test "request_sudo_access keeps three-line cleanup in clamshell mode without Touch ID" {
run bash -c '
source "'"$PROJECT_ROOT"'/lib/core/common.sh"
source "'"$PROJECT_ROOT"'/lib/core/sudo.sh"
tty_file="$(mktemp)"
chmod 600 "$tty_file"
sudo() {
case "$1" in
-n) return 1 ;;
-k) return 0 ;;
*) return 1 ;;
esac
}
tty() { printf "%s\n" "$tty_file"; }
is_clamshell_mode() { return 0; }
check_touchid_support() { return 1; }
_request_password() { return 0; }
safe_clear_lines() { printf "CLEAR:%s\n" "$1"; }
request_sudo_access "Admin access required"
'
[ "$status" -eq 0 ]
[[ "$output" == *"CLEAR:3"* ]]
}