Add functional tests for lemonbar bindings
This commit is contained in:
parent
ee5f471b49
commit
b29988b7ec
|
@ -18,7 +18,9 @@ exit_suite() {
|
|||
echo "${FAIL_SUMMARY}"
|
||||
fi
|
||||
export POWERLINE_CURRENT_SUITE="${POWERLINE_CURRENT_SUITE%/*}"
|
||||
exit $FAILED
|
||||
if test "x$1" != "x--continue" ; then
|
||||
exit $FAILED
|
||||
fi
|
||||
}
|
||||
|
||||
fail() {
|
||||
|
|
|
@ -0,0 +1,194 @@
|
|||
#!/bin/sh
|
||||
. tests/common.sh
|
||||
|
||||
enter_suite bar
|
||||
|
||||
TEST_ROOT="$ROOT/tests/bar"
|
||||
TEST_PATH="$TEST_ROOT/path"
|
||||
TEST_STATIC_ROOT="$ROOT/tests/test_bar"
|
||||
|
||||
test -d "$TEST_ROOT" && rm -r "$TEST_ROOT"
|
||||
mkdir "$TEST_ROOT"
|
||||
cp -r "$TEST_STATIC_ROOT/path" "$TEST_ROOT"
|
||||
cp -r "$TEST_STATIC_ROOT/powerline" "$TEST_ROOT"
|
||||
|
||||
export PYTHONPATH="$ROOT${PYTHONPATH:+:}$PYTHONPATH"
|
||||
|
||||
ln -s "$(which "${PYTHON}")" "$TEST_PATH"/python
|
||||
ln -s "$(which sed)" "$TEST_PATH"
|
||||
ln -s "$(which cat)" "$TEST_PATH"
|
||||
ln -s "$(which mkdir)" "$TEST_PATH"
|
||||
ln -s "$(which basename)" "$TEST_PATH"
|
||||
ln -s "$TEST_PATH/lemonbar" "$TEST_PATH/bar-aint-recursive"
|
||||
|
||||
DEPRECATED_SCRIPT="$ROOT/powerline/bindings/bar/powerline-bar.py"
|
||||
|
||||
run() {
|
||||
env -i \
|
||||
LANG=C \
|
||||
PATH="$TEST_PATH" \
|
||||
XDG_CONFIG_HOME="$TEST_ROOT" \
|
||||
XDG_CONFIG_DIRS="$TEST_ROOT/dummy" \
|
||||
PYTHONPATH="$PYTHONPATH" \
|
||||
TEST_ROOT="$TEST_ROOT" \
|
||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \
|
||||
"$@" || true
|
||||
}
|
||||
|
||||
display_log() {
|
||||
local log_file="$1"
|
||||
echo "$log_file:"
|
||||
echo '============================================================'
|
||||
cat -v "$log_file"
|
||||
echo
|
||||
echo '____________________________________________________________'
|
||||
}
|
||||
|
||||
check_log() {
|
||||
local log_file="$1"
|
||||
local text="$2"
|
||||
local warns="$3"
|
||||
if test "$warns" = "warns" ; then
|
||||
local warning="$(head -n1 "$log_file" | sed 's/.*://')"
|
||||
local expwarning="The 'bar' bindings are deprecated, please switch to 'lemonbar'"
|
||||
if test "x$warning" != "x$expwarning" ; then
|
||||
echo "Got: $warning"
|
||||
echo "Exp: $expwarning"
|
||||
fail "warn" F "Expected warning"
|
||||
fi
|
||||
sed -r -i -e '1d' "$log_file"
|
||||
fi
|
||||
local line="$(head -n1 "$log_file")"
|
||||
local linenum="$(cat "$log_file" | wc -l)"
|
||||
if test $linenum -lt 5 ; then
|
||||
fail "log:lt" F "Script was run not enough times"
|
||||
return 1
|
||||
elif test $linenum -gt 15 ; then
|
||||
fail "log:gt" E "Script was run too many times"
|
||||
return 1
|
||||
fi
|
||||
local expline="%{l}%{F#ffd0d0d0}%{B#ff303030} $text-left %{F-B--u}%{F#ff303030} %{F-B--u}%{r}%{F#ff303030} %{F-B--u}%{F#ffd0d0d0}%{B#ff303030} $text-right %{F-B--u}"
|
||||
if test "x$expline" != "x$line" ; then
|
||||
echo "Line: '$line'"
|
||||
echo "Expected: '$expline'"
|
||||
fail "log:line" F "Unexpected line"
|
||||
return 1
|
||||
fi
|
||||
local ret=0
|
||||
while test $linenum -gt 0 ; do
|
||||
echo "$line" >> "$TEST_ROOT/ok"
|
||||
linenum=$(( linenum - 1 ))
|
||||
done
|
||||
if ! diff "$TEST_ROOT/ok" "$log_file" ; then
|
||||
fail "log:diff" F "Unexpected output"
|
||||
ret=1
|
||||
fi
|
||||
rm "$TEST_ROOT/ok"
|
||||
return $ret
|
||||
}
|
||||
|
||||
killscript() {
|
||||
kill -KILL $1 || true
|
||||
}
|
||||
|
||||
if ! test -e "$DEPRECATED_SCRIPT" ; then
|
||||
# TODO: uncomment when skip is available
|
||||
# skip "deprecated" "Missing deprecated bar bindings script"
|
||||
:
|
||||
else
|
||||
enter_suite "deprecated"
|
||||
run python "$DEPRECATED_SCRIPT" $args > "$TEST_ROOT/deprecated.log" 2>&1 &
|
||||
SPID=$!
|
||||
sleep 5
|
||||
killscript $SPID
|
||||
if ! check_log "$TEST_ROOT/deprecated.log" "default" warns ; then
|
||||
display_log "$TEST_ROOT/deprecated.log"
|
||||
fail "log" F "Checking log failed"
|
||||
fi
|
||||
rm "$TEST_ROOT/deprecated.log"
|
||||
exit_suite --continue
|
||||
fi
|
||||
|
||||
LEMONBAR_SCRIPT="$ROOT/powerline/bindings/lemonbar/powerline-lemonbar.py"
|
||||
|
||||
if ! test -e "$LEMONBAR_SCRIPT" ; then
|
||||
# TODO: uncomment when skip is available
|
||||
# skip "lemonbar" "Missing lemonbar bindings script"
|
||||
:
|
||||
else
|
||||
enter_suite "lemonbar"
|
||||
for args in "" "-i0.5" "--interval=0.5" "-- test args" "-c bar-aint-recursive" "--height=10"; do
|
||||
rm -rf "$TEST_ROOT/results"
|
||||
run python "$LEMONBAR_SCRIPT" $args > "$TEST_ROOT/lemonbar.log" 2>&1 &
|
||||
SPID=$!
|
||||
sleep 5
|
||||
killscript $SPID
|
||||
sleep 0.5
|
||||
enter_suite "args($args)"
|
||||
fnum=0
|
||||
for file in "$TEST_ROOT/results"/*.log ; do
|
||||
if ! test -e "$file" ; then
|
||||
fail "log" E "Log file is missing"
|
||||
break
|
||||
fi
|
||||
fnum=$(( fnum + 1 ))
|
||||
args_file="${file%.log}.args"
|
||||
if ! test -e "$args_file" ; then
|
||||
fail "args" E "$args_file is missing"
|
||||
else
|
||||
cat "$args_file" >> "$TEST_ROOT/args.log"
|
||||
fi
|
||||
text="dvi"
|
||||
if cat "$args_file" | grep -q +1 ; then
|
||||
text="default"
|
||||
fi
|
||||
if ! check_log "$file" "$text" ; then
|
||||
display_log "$file"
|
||||
fail "log" F "Checking log failed"
|
||||
fi
|
||||
rm "$file"
|
||||
done
|
||||
if test "$fnum" -ne 2 ; then
|
||||
fail "fnum" F "Expected two output files"
|
||||
fi
|
||||
if test "x${args#--height}" != "x$args" ; then
|
||||
height="${args#--height}"
|
||||
height="${height# }"
|
||||
height="${height#=}"
|
||||
height="${height%% *}"
|
||||
fi
|
||||
command="lemonbar"
|
||||
if test "x${args#-c}" != "x$args" ; then
|
||||
command="${args#-c}"
|
||||
command="${command# }"
|
||||
command="${command#=}"
|
||||
command="${command%% *}"
|
||||
fi
|
||||
received_args="$(cat "$TEST_ROOT/args.log" | sort)"
|
||||
rm "$TEST_ROOT/args.log"
|
||||
script_args="${args#*-- }"
|
||||
script_args="${script_args# }"
|
||||
if test "x${script_args}" '=' "x$args" ; then
|
||||
script_args=
|
||||
fi
|
||||
expected_args="$command -g 1920x$height+0${script_args:+ }$script_args${NL}$command -g 1920x$height+1${script_args:+ }$script_args"
|
||||
if test "x$expected_args" != "x$received_args" ; then
|
||||
echo "args:${NL}<$received_args>"
|
||||
echo "expected:${NL}<$expected_args>"
|
||||
fail "args" F "Expected different args"
|
||||
fi
|
||||
if ! test -z "$(cat "$TEST_ROOT/lemonbar.log")" ; then
|
||||
display_log "$TEST_ROOT/lemonbar.log"
|
||||
fail "stderr" E "Unexpected script output"
|
||||
fi
|
||||
rm "$TEST_ROOT/lemonbar.log"
|
||||
exit_suite --continue
|
||||
done
|
||||
exit_suite --continue
|
||||
fi
|
||||
|
||||
if test $FAILED -eq 0 ; then
|
||||
rm -r "$TEST_ROOT"
|
||||
fi
|
||||
|
||||
exit_suite
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
RES_DIR="$TEST_ROOT/results"
|
||||
mkdir -p "$RES_DIR"
|
||||
RES_FILE="$RES_DIR/$$"
|
||||
while test -e "$RES_FILE.log" ; do
|
||||
RES_FILE="$RES_FILE.${RANDOM:-`date +%N | sed s/^0*//`}"
|
||||
done
|
||||
|
||||
echo $(basename $0) "$@" > "$RES_FILE.args"
|
||||
cat > "$RES_FILE.log"
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
|
||||
cat << EOF
|
||||
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 16384 x 16384
|
||||
DVI-I-0 disconnected (normal left inverted right x axis y axis)
|
||||
VGA-0 connected 1920x1200+1+0 (normal left inverted right x axis y axis) 520mm x 330mm
|
||||
1920x1200 59.95*+
|
||||
1920x1080 60.00
|
||||
1680x1050 59.95
|
||||
1600x1200 60.00
|
||||
1440x900 59.89
|
||||
1280x1024 75.02 60.02
|
||||
1280x800 59.81
|
||||
1152x864 75.00
|
||||
1024x768 75.03 60.00
|
||||
800x600 75.00 60.32
|
||||
640x480 75.00 59.94
|
||||
DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 520mm x 330mm
|
||||
1920x1200 59.95*+
|
||||
1920x1080 60.00
|
||||
1680x1050 59.95
|
||||
1600x1200 60.00
|
||||
1440x900 59.89
|
||||
1280x1024 75.02 60.02
|
||||
1280x800 59.81
|
||||
1152x864 75.00
|
||||
1024x768 75.03 60.00
|
||||
800x600 75.00 60.32
|
||||
640x480 75.00 59.94
|
||||
HDMI-0 disconnected (normal left inverted right x axis y axis)
|
||||
EOF
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"ext": {
|
||||
"wm": {
|
||||
"local_themes": {
|
||||
"DVI-I-1": "dvi"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"segment_data": {
|
||||
"time": {
|
||||
"display": false
|
||||
},
|
||||
"powerline.segments.common.time.date": {
|
||||
"display": false
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"segments": {
|
||||
"left": [
|
||||
{
|
||||
"type": "string",
|
||||
"highlight_groups": ["time"],
|
||||
"contents": "default-left"
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
{
|
||||
"type": "string",
|
||||
"highlight_groups": ["time"],
|
||||
"contents": "default-right"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"segments": {
|
||||
"left": [
|
||||
{
|
||||
"type": "string",
|
||||
"highlight_groups": ["time"],
|
||||
"contents": "dvi-left"
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
{
|
||||
"type": "string",
|
||||
"highlight_groups": ["time"],
|
||||
"contents": "dvi-right"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue