89 lines
2.6 KiB
Bash
Executable File
89 lines
2.6 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 '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'
|