diff --git a/nixos/tests/installed-tests/default.nix b/nixos/tests/installed-tests/default.nix index 9b11ce7a4fa90..8e997ee4aeb9b 100644 --- a/nixos/tests/installed-tests/default.nix +++ b/nixos/tests/installed-tests/default.nix @@ -88,6 +88,7 @@ in glib-networking = callInstalledTest ./glib-networking.nix {}; gnome-photos = callInstalledTest ./gnome-photos.nix {}; graphene = callInstalledTest ./graphene.nix {}; + ibus = callInstalledTest ./ibus.nix {}; libgdata = callInstalledTest ./libgdata.nix {}; libxmlb = callInstalledTest ./libxmlb.nix {}; ostree = callInstalledTest ./ostree.nix {}; diff --git a/nixos/tests/installed-tests/ibus.nix b/nixos/tests/installed-tests/ibus.nix new file mode 100644 index 0000000000000..af54b612b507b --- /dev/null +++ b/nixos/tests/installed-tests/ibus.nix @@ -0,0 +1,20 @@ +{ pkgs, makeInstalledTest, ... }: + +makeInstalledTest { + tested = pkgs.ibus; + + testConfig = { + i18n.inputMethod.enabled = "ibus"; + }; + + preTestScript = '' + # ibus has ibus-desktop-testing-runner but it tries to manage desktop session so we just spawn ibus-daemon ourselves + machine.succeed("ibus-daemon --daemonize --verbose") + ''; + + withX11 = true; + + # TODO: ibus-daemon is currently crashing or something + # maybe make ibus systemd service that auto-restarts? + meta.broken = true; +} diff --git a/pkgs/tools/inputmethods/ibus/default.nix b/pkgs/tools/inputmethods/ibus/default.nix index 86b2931aebb36..4951074bc43ae 100644 --- a/pkgs/tools/inputmethods/ibus/default.nix +++ b/pkgs/tools/inputmethods/ibus/default.nix @@ -30,6 +30,7 @@ , wayland ? null , buildPackages , runtimeShell +, nixosTests }: assert withWayland -> wayland != null && libxkbcommon != null; @@ -67,7 +68,7 @@ stdenv.mkDerivation rec { }) ]; - outputs = [ "out" "dev" ]; + outputs = [ "out" "dev" "installedTests" ]; postPatch = '' echo \#!${runtimeShell} > data/dconf/make-dconf-override-db.sh @@ -84,11 +85,17 @@ stdenv.mkDerivation rec { (enableFeature enablePython2Library "python-library") (enableFeature enablePython2Library "python2") # XXX: python2 library does not work anyway (enableFeature enableUI "ui") + "--enable-install-tests" "--with-unicode-emoji-dir=${unicode-emoji}/share/unicode/emoji" "--with-emoji-annotation-dir=${cldr-emoji-annotation}/share/unicode/cldr/common/annotations" "--with-ucd-dir=${unicode-character-database}/share/unicode" ]; + makeFlags = [ + "test_execsdir=${placeholder ''installedTests''}/libexec/installed-tests/ibus" + "test_sourcesdir=${placeholder ''installedTests''}/share/installed-tests/ibus" + ]; + nativeBuildInputs = [ autoreconfHook gtk-doc @@ -128,6 +135,25 @@ stdenv.mkDerivation rec { $out/bin/ibus version ''; + postInstall = '' + # It has some hardcoded FHS paths and also we do not use it + # since we set up the environment in NixOS tests anyway. + moveToOutput "bin/ibus-desktop-testing-runner" "$installedTests" + ''; + + postFixup = '' + # set necessary environment also for tests + for f in $installedTests/libexec/installed-tests/ibus/*; do + wrapGApp $f + done + ''; + + passthru = { + tests = { + installed-tests = nixosTests.installed-tests.ibus; + }; + }; + meta = { homepage = "https://github.com/ibus/ibus"; description = "Intelligent Input Bus, input method framework";