aboutsummaryrefslogtreecommitdiff
path: root/nixos/tests/keymap.nix
diff options
context:
space:
mode:
authorxeji <xeji@cat3.de>2018-04-25 00:06:11 +0200
committerxeji <xeji@cat3.de>2018-04-25 10:16:52 +0200
commit6891bda37071bbecdb343ff941ba893511f5fd70 (patch)
tree5ba6b12c571cc74fd131dedbc05b3a9d47c62c08 /nixos/tests/keymap.nix
parentd3d41b51f17c733cd5bf3250fdd1b33ae1a1f39c (diff)
nixos/tests/keymap: wait for xdotool to succeed
xdotool failed in rare cases when a window was already created but not yet decorated by the window manager. also prevent a (never observed but possible) race condition
Diffstat (limited to 'nixos/tests/keymap.nix')
-rw-r--r--nixos/tests/keymap.nix12
1 files changed, 7 insertions, 5 deletions
diff --git a/nixos/tests/keymap.nix b/nixos/tests/keymap.nix
index abff90d5047d..be880388314c 100644
--- a/nixos/tests/keymap.nix
+++ b/nixos/tests/keymap.nix
@@ -8,17 +8,19 @@ let
testReader = pkgs.writeScript "test-input-reader" ''
#!${pkgs.stdenv.shell}
- rm -f ${resultFile}
+ rm -f ${resultFile} ${resultFile}.tmp
logger "testReader: START: Waiting for $1 characters, expecting '$2'."
touch ${readyFile}
read -r -N $1 chars
rm -f ${readyFile}
if [ "$chars" == "$2" ]; then
- logger -s "testReader: PASS: Got '$2' as expected." 2>${resultFile}
+ logger -s "testReader: PASS: Got '$2' as expected." 2>${resultFile}.tmp
else
- logger -s "testReader: FAIL: Expected '$2' but got '$chars'." 2>${resultFile}
+ logger -s "testReader: FAIL: Expected '$2' but got '$chars'." 2>${resultFile}.tmp
fi
+ # rename after the file is written to prevent a race condition
+ mv ${resultFile}.tmp ${resultFile}
'';
@@ -52,7 +54,7 @@ let
if ($desc eq "Xorg keymap") {
# make sure the xterm window is open and has focus
$machine->waitForWindow(qr/testterm/);
- $machine->succeed("${pkgs.xdotool}/bin/xdotool search --name testterm windowactivate --sync");
+ $machine->waitUntilSucceeds("${pkgs.xdotool}/bin/xdotool search --sync --onlyvisible --class testterm windowfocus --sync");
}
# wait for reader to be ready
@@ -71,7 +73,7 @@ let
$machine->waitForX;
mkTest "VT keymap", "openvt -sw --";
- mkTest "Xorg keymap", "DISPLAY=:0 xterm -title testterm -fullscreen -e";
+ mkTest "Xorg keymap", "DISPLAY=:0 xterm -title testterm -class testterm -fullscreen -e";
'';
};