about summary refs log tree commit diff
path: root/pkgs/applications/misc/tvbrowser/test.nix
blob: bee843ccbecc818553d7766866e94804ad7279c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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"}
''