# The tsm-client GUI first tries to connect to a server. # We can't simulate a server, so we just check if # it reports the correct connection failure error. # After that the test persuades the GUI # to show its main application window # and verifies some configuration information. import ./make-test-python.nix ( { lib, pkgs, ... }: { name = "tsm-client"; enableOCR = true; nodes.machine = { pkgs, ... }: { imports = [ ./common/x11.nix ]; programs.tsmClient = { enable = true; package = pkgs.tsm-client-withGui; defaultServername = "testserver"; servers.testserver = { # 192.0.0.8 is a "dummy address" according to RFC 7600 tcpserveraddress = "192.0.0.8"; nodename = "SOME-NODE"; passworddir = "/tmp"; }; }; }; testScript = '' machine.succeed("which dsmj") # fail early if this is missing machine.wait_for_x() machine.execute("DSM_LOG=/tmp dsmj -optfile=/dev/null >&2 &") # does it report the "TCP/IP connection failure" error code? machine.wait_for_window("IBM Storage Protect") machine.wait_for_text("ANS2610S") machine.send_key("esc") # it asks to continue to restore a local backupset now; # "yes" (return) leads to the main application window machine.wait_for_text("backupset") machine.send_key("ret") # main window: navigate to "Connection Information" machine.wait_for_text("Welcome") machine.send_key("alt-f") # "File" menu machine.send_key("c") # "Connection Information" # "Connection Information" dialog box machine.wait_for_window("Connection Information") machine.wait_for_text("SOME-NODE") machine.wait_for_text("${pkgs.tsm-client.passthru.unwrapped.version}") machine.shutdown() ''; meta.maintainers = [ lib.maintainers.yarny ]; } )