at 23.11-pre 3.6 kB view raw
1import ../make-test-python.nix ({ lib, ... }: 2rec { 3 name = "fcitx5"; 4 meta.maintainers = with lib.maintainers; [ nevivurn ]; 5 6 nodes.machine = { pkgs, ... }: 7 { 8 imports = [ 9 ../common/user-account.nix 10 ]; 11 12 environment.systemPackages = [ 13 # To avoid clashing with xfce4-terminal 14 pkgs.alacritty 15 ]; 16 17 services.xserver = { 18 enable = true; 19 20 displayManager = { 21 lightdm.enable = true; 22 autoLogin = { 23 enable = true; 24 user = "alice"; 25 }; 26 }; 27 28 desktopManager.xfce.enable = true; 29 }; 30 31 i18n.inputMethod = { 32 enabled = "fcitx5"; 33 fcitx5.addons = [ 34 pkgs.fcitx5-chinese-addons 35 pkgs.fcitx5-hangul 36 pkgs.fcitx5-m17n 37 pkgs.fcitx5-mozc 38 ]; 39 }; 40 }; 41 42 testScript = { nodes, ... }: 43 let 44 user = nodes.machine.users.users.alice; 45 xauth = "${user.home}/.Xauthority"; 46 fcitx_confdir = "${user.home}/.config/fcitx5"; 47 in 48 '' 49 start_all() 50 51 machine.wait_for_x() 52 machine.wait_for_file("${xauth}") 53 machine.succeed("xauth merge ${xauth}") 54 machine.sleep(5) 55 56 machine.succeed("su - ${user.name} -c 'kill $(pgrep fcitx5)'") 57 machine.sleep(1) 58 59 machine.copy_from_host( 60 "${./profile}", 61 "${fcitx_confdir}/profile", 62 ) 63 machine.copy_from_host( 64 "${./config}", 65 "${fcitx_confdir}/config", 66 ) 67 68 machine.succeed("su - ${user.name} -c 'alacritty >&2 &'") 69 machine.succeed("su - ${user.name} -c 'fcitx5 >&2 &'") 70 machine.sleep(10) 71 72 ### Type on terminal 73 machine.send_chars("echo ") 74 machine.sleep(1) 75 76 ### Start fcitx Unicode input 77 machine.send_key("ctrl-alt-shift-u") 78 machine.sleep(1) 79 80 ### Search for smiling face 81 machine.send_chars("smil") 82 machine.sleep(1) 83 84 ### Navigate to the second one 85 machine.send_key("tab") 86 machine.sleep(1) 87 88 ### Choose it 89 machine.send_key("\n") 90 machine.sleep(1) 91 92 ### Start fcitx language input 93 machine.send_key("ctrl-spc") 94 machine.sleep(1) 95 96 ### Default wubi, enter 97 machine.send_chars("gggh ") 98 machine.sleep(1) 99 100 ### Switch to Hangul 101 machine.send_key("alt-shift") 102 machine.sleep(1) 103 104 ### Enter 105 machine.send_chars("gks") 106 machine.sleep(1) 107 108 ### Switch to Harvard Kyoto 109 machine.send_key("alt-shift") 110 machine.sleep(1) 111 112 ### Enter 113 machine.send_chars("ka") 114 machine.sleep(1) 115 116 ### Switch to Mozc 117 machine.send_key("alt-shift") 118 machine.sleep(1) 119 120 ### Enter 121 machine.send_chars("ka\n") 122 machine.sleep(1) 123 124 ### Turn off Fcitx 125 machine.send_key("ctrl-spc") 126 machine.sleep(1) 127 128 ### Redirect typed characters to a file 129 machine.send_chars(" > fcitx_test.out\n") 130 machine.sleep(1) 131 machine.screenshot("terminal_chars") 132 133 ### Verify that file contents are as expected 134 file_content = machine.succeed("cat ${user.home}/fcitx_test.out") 135 assert file_content == "\n" 136 '' 137 ; 138})