Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104# The test template is taken from the `./keymap.nix`{ system ? builtins.currentSystem, config ? { }, pkgs ? import ../.. { inherit system config; },}:
with import ../lib/testing-python.nix { inherit system pkgs; };
let readyFile = "/tmp/readerReady"; resultFile = "/tmp/readerResult";
testReader = pkgs.writeScript "test-input-reader" '' 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}.tmp else 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} '';
mkKeyboardTest = name: { default, test }: with pkgs.lib; makeTest { inherit name;
nodes.machine = { services.keyd = { enable = true; keyboards = { inherit default; }; }; };
testScript = '' import shlex
machine.wait_for_unit("keyd.service")
def run_test_case(cmd, test_case_name, inputs, expected): with subtest(test_case_name): assert len(inputs) == len(expected) machine.execute("rm -f ${readyFile} ${resultFile}") # set up process that expects all the keys to be entered machine.succeed( "{} {} {} {} >&2 &".format( cmd, "${testReader}", len(inputs), shlex.quote("".join(expected)), ) ) # wait for reader to be ready machine.wait_for_file("${readyFile}") # send all keys for key in inputs: machine.send_key(key) # wait for result and check machine.wait_for_file("${resultFile}") machine.succeed("grep -q 'PASS:' ${resultFile}") test = ${builtins.toJSON test} run_test_case("openvt -sw --", "${name}", test["press"], test["expect"]) ''; };
inpkgs.lib.mapAttrs mkKeyboardTest { swap-ab_and_ctrl-as-shift = { test.press = [ "a" "ctrl-b" "c" "alt_r-h" ]; test.expect = [ "b" "A" "c" "q" ];
default = { settings.main = { "a" = "b"; "b" = "a"; "control" = "oneshot(shift)"; "rightalt" = "layer(rightalt)"; }; extraConfig = '' [rightalt:G] h = q ''; }; };}