Files
fedora-tools/plasma-always-show-unlock/tests/test-plasma-always-show-unlock
T

91 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-License-Identifier: MIT
set -euo pipefail
if (( $# != 3 )); then
printf 'Usage: %s SCRIPT PATCH FIXTURE\n' "${0##*/}" >&2
exit 2
fi
script=$1
patch_file=$2
fixture=$3
tmpdir=$(mktemp -d)
trap 'rm -rf -- "$tmpdir"' EXIT
root="$tmpdir/root"
target_dir="$root/usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen"
target="$target_dir/LockScreenUi.qml"
mkdir -p "$target_dir"
cp "$fixture" "$target"
run_tool() {
PLASMA_ALWAYS_SHOW_UNLOCK_ROOT="$root" \
PLASMA_ALWAYS_SHOW_UNLOCK_PATCH="$patch_file" \
bash "$script" "$@"
}
if run_tool status >/dev/null 2>&1; then
printf 'Expected an unpatched fixture.\n' >&2
exit 1
fi
run_tool apply >/dev/null
run_tool status >/dev/null
grep -q 'function onViewVisibleChanged()' "$target"
grep -q 'id: resumeAuthenticationTimer' "$target"
grep -q 'id: postGraceAuthenticationTimer' "$target"
grep -q 'FedoraToolsFingerprintRetry {' "$target"
grep -q 'fingerprintType: ScreenLocker.Authenticator.Fingerprint' "$target"
grep -q 'interval: 1500' "$target"
grep -q 'interval: 6000' "$target"
grep -q 'running: root.viewVisible' "$target"
grep -q 'onTriggered: authenticator.startAuthenticating()' "$target"
grep -q 'function onResumingFromSuspend()' "$target"
[[ $(grep -c 'resumeAuthenticationTimer.restart()' "$target") -eq 1 ]]
grep -q 'cursorShape: Qt.ArrowCursor' "$target"
grep -q 'state: "on"' "$target"
grep -q 'opacity: 0' "$target"
grep -q 'lockScreenUiVisible: true' "$target"
grep -q 'lockScreenRoot.uiVisible = false' "$target"
if grep -q 'seenPositionChange\|running: parent.uiVisible\|repeat: true' "$target"; then
printf 'The patched fixture still contains prompt-hiding logic.\n' >&2
exit 1
fi
patched_checksum=$(sha256sum "$target")
run_tool apply >/dev/null
[[ $(sha256sum "$target") == "$patched_checksum" ]]
run_tool revert >/dev/null
cmp "$fixture" "$target"
run_tool revert >/dev/null
cmp "$fixture" "$target"
sed -i 's/property bool seenPositionChange: false/property bool unexpectedState: false/' "$target"
unsupported_checksum=$(sha256sum "$target")
if run_tool apply >/dev/null 2>&1; then
printf 'Expected an unsupported modified fixture to be rejected.\n' >&2
exit 1
fi
[[ $(sha256sum "$target") == "$unsupported_checksum" ]]
if run_tool revert >/dev/null 2>&1; then
printf 'Expected an unsupported modified fixture to be rejected on revert.\n' >&2
exit 1
fi
[[ $(sha256sum "$target") == "$unsupported_checksum" ]]
status=0
run_tool status >/dev/null 2>&1 || status=$?
[[ $status -eq 2 ]]
rm -- "$target"
if run_tool apply >/dev/null 2>&1; then
printf 'Expected a missing lock screen to be rejected.\n' >&2
exit 1
fi
[[ ! -e $target ]]
printf 'plasma-always-show-unlock tests passed\n'