112 lines
2.1 KiB
Bash
112 lines
2.1 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# Copyright 2016 The Chromium OS Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
# Regression test for inject-keys.py. Works by creating a "fake" ectool
|
||
|
# and comparing expected ectool commands with expected ones.
|
||
|
|
||
|
TMPX=/tmp/inject-key-test$$_x
|
||
|
TMPY=/tmp/inject-key-test$$_y
|
||
|
|
||
|
cleanup() {
|
||
|
rm -f ./ectool $TMPX $TMPY
|
||
|
}
|
||
|
|
||
|
fail() {
|
||
|
echo $*
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
trap cleanup SIGINT
|
||
|
|
||
|
PATH=.:$PATH
|
||
|
|
||
|
if [ -e ectool ]; then
|
||
|
if [ "$(echo $(cat ectool))" != '#! /bin/bash echo $*' ]; then
|
||
|
echo "./ectool exists, please remove it to run this script"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
echo "#! /bin/bash" > ectool
|
||
|
echo 'echo $*' >> ectool
|
||
|
chmod a+x ectool
|
||
|
|
||
|
# tests that should fail
|
||
|
|
||
|
# bad args
|
||
|
./inject-keys.py >& /dev/null && fail "undetected zero args"
|
||
|
./inject-keys.py -k >& /dev/null && fail "undetected mismatched args (1)"
|
||
|
./inject-keys.py -k a b >& /dev/null && fail "undetected mismatched args (2)"
|
||
|
./inject-keys.py -z a >& /dev/null && fail "undetected bad flag"
|
||
|
|
||
|
# bad key
|
||
|
./inject-keys.py -p foobar >& /dev/null && fail "undetected bad key"
|
||
|
|
||
|
# tests that should succeed with the expected output
|
||
|
|
||
|
# simple string
|
||
|
./inject-keys.py -s abcd > $TMPX
|
||
|
|
||
|
cat > $TMPY <<EOF
|
||
|
kbpress 4 1 1
|
||
|
kbpress 4 1 0
|
||
|
kbpress 0 3 1
|
||
|
kbpress 0 3 0
|
||
|
kbpress 5 2 1
|
||
|
kbpress 5 2 0
|
||
|
kbpress 4 2 1
|
||
|
kbpress 4 2 0
|
||
|
EOF
|
||
|
|
||
|
cmp $TMPX $TMPY || fail $TMPX and $TMPY differ
|
||
|
|
||
|
# string with shifted characters
|
||
|
./inject-keys.py -s A@%Bx > $TMPX
|
||
|
|
||
|
cat > $TMPY <<EOF
|
||
|
kbpress 5 7 1
|
||
|
kbpress 4 1 1
|
||
|
kbpress 4 1 0
|
||
|
kbpress 5 7 0
|
||
|
kbpress 5 7 1
|
||
|
kbpress 6 4 1
|
||
|
kbpress 6 4 0
|
||
|
kbpress 5 7 0
|
||
|
kbpress 5 7 1
|
||
|
kbpress 3 3 1
|
||
|
kbpress 3 3 0
|
||
|
kbpress 5 7 0
|
||
|
kbpress 5 7 1
|
||
|
kbpress 0 3 1
|
||
|
kbpress 0 3 0
|
||
|
kbpress 5 7 0
|
||
|
kbpress 5 4 1
|
||
|
kbpress 5 4 0
|
||
|
EOF
|
||
|
|
||
|
cmp $TMPX $TMPY || fail $TMPX and $TMPY differ
|
||
|
|
||
|
# keystroke injection
|
||
|
./inject-keys.py -k enter > $TMPX
|
||
|
|
||
|
cat > $TMPY <<EOF
|
||
|
kbpress 4 11 1
|
||
|
kbpress 4 11 0
|
||
|
EOF
|
||
|
|
||
|
cmp $TMPX $TMPY || fail $TMPX and $TMPY differ
|
||
|
|
||
|
# key event injection
|
||
|
./inject-keys.py -p enter > $TMPX
|
||
|
|
||
|
cat > $TMPY <<EOF
|
||
|
kbpress 4 11 1
|
||
|
EOF
|
||
|
|
||
|
cmp $TMPX $TMPY || fail $TMPX and $TMPY differ
|
||
|
|
||
|
cleanup
|