aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix142
1 files changed, 142 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix b/infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix
new file mode 100644
index 000000000000..cbeb95d33b0c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/nixos/tests/fcitx/default.nix
@@ -0,0 +1,142 @@
+import ../make-test-python.nix (
+ {
+ pkgs, ...
+ }:
+ # copy_from_host works only for store paths
+ rec {
+ name = "fcitx";
+ machine =
+ {
+ pkgs,
+ ...
+ }:
+ {
+ virtualisation.memorySize = 1024;
+
+ imports = [
+ ../common/user-account.nix
+ ];
+
+ environment.systemPackages = [
+ # To avoid clashing with xfce4-terminal
+ pkgs.alacritty
+ ];
+
+
+ services.xserver =
+ {
+ enable = true;
+
+ displayManager = {
+ lightdm.enable = true;
+ autoLogin = {
+ enable = true;
+ user = "alice";
+ };
+ };
+
+ desktopManager.xfce.enable = true;
+ };
+
+ i18n = {
+ inputMethod = {
+ enabled = "fcitx";
+ fcitx.engines = [
+ pkgs.fcitx-engines.m17n
+ pkgs.fcitx-engines.table-extra
+ ];
+ };
+ };
+ }
+ ;
+
+ testScript = { nodes, ... }:
+ let
+ user = nodes.machine.config.users.users.alice;
+ userName = user.name;
+ userHome = user.home;
+ xauth = "${userHome}/.Xauthority";
+ fcitx_confdir = "${userHome}/.config/fcitx";
+ in
+ ''
+ # We need config files before login session
+ # So copy first thing
+
+ # Point and click would be expensive,
+ # So configure using files
+ machine.copy_from_host(
+ "${./profile}",
+ "${fcitx_confdir}/profile",
+ )
+ machine.copy_from_host(
+ "${./config}",
+ "${fcitx_confdir}/config",
+ )
+
+ start_all()
+
+ machine.wait_for_file("${xauth}")
+ machine.succeed("xauth merge ${xauth}")
+
+ machine.sleep(5)
+
+ machine.succeed("su - ${userName} -c 'alacritty&'")
+ machine.succeed("su - ${userName} -c 'fcitx&'")
+ machine.sleep(10)
+
+ ### Type on terminal
+ machine.send_chars("echo ")
+ machine.sleep(1)
+
+ ### Start fcitx Unicode input
+ machine.send_key("ctrl-alt-shift-u")
+ machine.sleep(5)
+ machine.sleep(1)
+
+ ### Search for smiling face
+ machine.send_chars("smil")
+ machine.sleep(1)
+
+ ### Navigate to the second one
+ machine.send_key("tab")
+ machine.sleep(1)
+
+ ### Choose it
+ machine.send_key("\n")
+ machine.sleep(1)
+
+ ### Start fcitx language input
+ machine.send_key("ctrl-spc")
+ machine.sleep(1)
+
+ ### Default zhengma, enter 一下
+ machine.send_chars("a2")
+ machine.sleep(1)
+
+ ### Switch to Harvard Kyoto
+ machine.send_key("alt-shift")
+ machine.sleep(1)
+
+ ### Enter क
+ machine.send_chars("ka ")
+ machine.sleep(1)
+
+ machine.send_key("alt-shift")
+ machine.sleep(1)
+
+ ### Turn off Fcitx
+ machine.send_key("ctrl-spc")
+ machine.sleep(1)
+
+ ### Redirect typed characters to a file
+ machine.send_chars(" > fcitx_test.out\n")
+ machine.sleep(1)
+ machine.screenshot("terminal_chars")
+
+ ### Verify that file contents are as expected
+ file_content = machine.succeed("cat ${userHome}/fcitx_test.out")
+ assert file_content == "☺一下क\n"
+ ''
+ ;
+ }
+)