#!/bin/bash # Functional test for dashcam-transfer-mount.sh using fake tools on PATH. set -u SCRIPT="$(cd "$(dirname "$0")/.." && pwd)/dashcam-transfer-mount.sh" WORK=$(mktemp -d) trap 'rm -rf "$WORK"' EXIT FAKEBIN="$WORK/bin" mkdir -p "$FAKEBIN" LOGGER_FILE="$WORK/logger.log" MOUNT_LOG="$WORK/mount.log" FSCK_LOG="$WORK/fsck.log" MOUNT_MARKER="$WORK/mounted" START_MARKER="$WORK/started" export LOGGER_FILE MOUNT_LOG FSCK_LOG MOUNT_MARKER START_MARKER cat > "$FAKEBIN/logger" <<'EOF' #!/bin/bash echo "logger: $*" >> "$LOGGER_FILE" EOF cat > "$FAKEBIN/systemctl" <<'EOF' #!/bin/bash if [ "$1" = "is-active" ]; then case "$2" in --quiet) ;; *) echo "$SYSTEMCTL_STATE" ;; esac [ "$SYSTEMCTL_STATE" = "active" ] elif [ "$1" = "start" ]; then touch "$START_MARKER" fi EOF cat > "$FAKEBIN/mount" <<'EOF' #!/bin/bash echo "mount $*" >> "$MOUNT_LOG" touch "$MOUNT_MARKER" exit 0 EOF cat > "$FAKEBIN/umount" <<'EOF' #!/bin/bash exit 0 EOF cat > "$FAKEBIN/mountpoint" <<'EOF' #!/bin/bash exit 1 EOF cat > "$FAKEBIN/fsck.exfat" <<'EOF' #!/bin/bash echo "fsck $*" >> "$FSCK_LOG" exit 0 EOF cat > "$FAKEBIN/lsblk" <<'EOF' #!/bin/bash exit 0 EOF chmod +x "$FAKEBIN"/* pass=0 fail=0 check() { # $1=desc, $2=condition if eval "$2"; then echo "PASS: $1" pass=$((pass + 1)) else echo "FAIL: $1" fail=$((fail + 1)) fi } # Test 1: service already active → skip, never unmount/mount/start export SYSTEMCTL_STATE=active rm -f "$MOUNT_MARKER" "$START_MARKER" "$LOGGER_FILE" "$MOUNT_LOG" "$FSCK_LOG" PATH="$FAKEBIN:$PATH" DASHCAM_MAX_WAIT=0 "$SCRIPT" sde1 check "service actief → exit zonder mount" 'test ! -e "$MOUNT_MARKER"' check "service actief → geen service start" 'test ! -e "$START_MARKER"' check "service actief → skip gelogd" 'grep -q "al bezig" "$LOGGER_FILE"' # Test 2: service inactive → mount, fsck, start export SYSTEMCTL_STATE=inactive rm -f "$MOUNT_MARKER" "$START_MARKER" "$LOGGER_FILE" "$MOUNT_LOG" "$FSCK_LOG" PATH="$FAKEBIN:$PATH" DASHCAM_MAX_WAIT=0 "$SCRIPT" sde1 check "service inactief → gemount" 'test -e "$MOUNT_MARKER"' check "service inactief → service gestart" 'test -e "$START_MARKER"' check "fsck.exfat uitgevoerd" 'test -s "$FSCK_LOG"' check "mount gelogd" 'grep -q "mounted, starting transfer" "$LOGGER_FILE"' echo "=== $pass pass, $fail fail ===" [ "$fail" -eq 0 ]