tvbrowser: add simple test

This test starts tvbrowser with an Xvfb X server
and verifies that all expected windows are created.
This commit is contained in:
Yarny0 2023-01-08 15:34:14 +01:00
parent b2fdba820a
commit 2d8e156a59
2 changed files with 43 additions and 0 deletions

View file

@ -6,6 +6,7 @@
, ant
, jdk
, makeWrapper
, callPackage
}:
let
@ -72,6 +73,8 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
passthru.tests.startwindow = callPackage ./test.nix {};
meta = with lib; {
description = "Electronic TV Program Guide";
homepage = "https://www.tvbrowser.org/";

View file

@ -0,0 +1,40 @@
{ lib
, xvfb-run
, tvbrowser
, runCommand
, writeShellApplication
, xorg
}:
let
testScript = writeShellApplication {
name = "tvbrowser-test-script";
runtimeInputs = [ xorg.xwininfo tvbrowser ];
text = ''
function find_tvbrowser_windows {
for window_name in java tvbrowser-TVBrowser 'Setup assistant' ; do
grep -q "$window_name" "$1" || return 1
done
}
tvbrowser &
for _ in {0..900} ; do
xwininfo -root -tree \
| sed 's/.*0x[0-9a-f]* \"\([^\"]*\)\".*/\1/; t; d' \
| tee window-names
echo
if find_tvbrowser_windows window-names ; then
break
fi
sleep 1
done
find_tvbrowser_windows window-names
'';
};
in
runCommand
"tvbrowser-test"
{ buildInputs = [ xvfb-run ]; }
''
HOME=$PWD xvfb-run ${lib.getExe testScript}
touch ${placeholder "out"}
''