summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/misc
diff options
context:
space:
mode:
authorYarny0 <41838844+Yarny0@users.noreply.github.com>2023-01-08 15:34:14 +0100
committerYarny0 <41838844+Yarny0@users.noreply.github.com>2023-02-04 17:56:39 +0100
commit2d8e156a59f1806c12017a864bde8ed5fdcb7bfa (patch)
tree5b00b9f9580923c95e389d0f56d062f539c986a7 /pkgs/applications/misc
parentb2fdba820a868d805f05562feb07e19960b9ea1d (diff)
tvbrowser: add simple test
This test starts tvbrowser with an Xvfb X server and verifies that all expected windows are created.
Diffstat (limited to 'pkgs/applications/misc')
-rw-r--r--pkgs/applications/misc/tvbrowser/default.nix3
-rw-r--r--pkgs/applications/misc/tvbrowser/test.nix40
2 files changed, 43 insertions, 0 deletions
diff --git a/pkgs/applications/misc/tvbrowser/default.nix b/pkgs/applications/misc/tvbrowser/default.nix
index 0dceca70b096..9d8e387dc32b 100644
--- a/pkgs/applications/misc/tvbrowser/default.nix
+++ b/pkgs/applications/misc/tvbrowser/default.nix
@@ -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/";
diff --git a/pkgs/applications/misc/tvbrowser/test.nix b/pkgs/applications/misc/tvbrowser/test.nix
new file mode 100644
index 000000000000..b5d12ac6bad9
--- /dev/null
+++ b/pkgs/applications/misc/tvbrowser/test.nix
@@ -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"}
+''