summaryrefslogtreecommitdiffstats
path: root/nixos/tests/installed-tests
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2019-11-05 19:56:21 -0500
committerworldofpeace <worldofpeace@protonmail.ch>2019-11-06 19:18:28 -0500
commiteee5986ac3c77d045016165c67bfcda8c9cfc795 (patch)
tree9d47029ee26dfac89259f141b7172c1786c37c78 /nixos/tests/installed-tests
parentceec19f682c6fe3507e47f7bbb6af0e34a3cdbd3 (diff)
nixos/tests: add gnome-installed-tests with builder function
The test script is also ported to python.
Diffstat (limited to 'nixos/tests/installed-tests')
-rw-r--r--nixos/tests/installed-tests/colord.nix5
-rw-r--r--nixos/tests/installed-tests/default.nix77
-rw-r--r--nixos/tests/installed-tests/flatpak-builder.nix14
-rw-r--r--nixos/tests/installed-tests/flatpak.nix19
-rw-r--r--nixos/tests/installed-tests/fwupd.nix12
-rw-r--r--nixos/tests/installed-tests/gdk-pixbuf.nix13
-rw-r--r--nixos/tests/installed-tests/gjs.nix6
-rw-r--r--nixos/tests/installed-tests/glib-networking.nix5
-rw-r--r--nixos/tests/installed-tests/gnome-photos.nix35
-rw-r--r--nixos/tests/installed-tests/graphene.nix5
-rw-r--r--nixos/tests/installed-tests/ostree.nix23
-rw-r--r--nixos/tests/installed-tests/xdg-desktop-portal.nix5
12 files changed, 219 insertions, 0 deletions
diff --git a/nixos/tests/installed-tests/colord.nix b/nixos/tests/installed-tests/colord.nix
new file mode 100644
index 000000000000..77e6b917fe68
--- /dev/null
+++ b/nixos/tests/installed-tests/colord.nix
@@ -0,0 +1,5 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.colord;
+}
diff --git a/nixos/tests/installed-tests/default.nix b/nixos/tests/installed-tests/default.nix
new file mode 100644
index 000000000000..7867a61e3dd1
--- /dev/null
+++ b/nixos/tests/installed-tests/default.nix
@@ -0,0 +1,77 @@
+# NixOS tests for gnome-desktop-testing-runner using software
+# See https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests
+
+{ system ? builtins.currentSystem,
+ config ? {},
+ pkgs ? import ../../.. { inherit system config; }
+}:
+
+with import ../../lib/testing-python.nix { inherit system pkgs; };
+with pkgs.lib;
+
+let
+
+ callInstalledTest = pkgs.newScope { inherit makeInstalledTest; };
+
+ makeInstalledTest =
+ { # Package to test. Needs to have an installedTests output
+ tested
+
+ # Config to inject into machine
+ , testConfig ? {}
+
+ # Test script snippet to inject before gnome-desktop-testing-runner begins.
+ # This is useful for extra setup the environment may need before the runner begins.
+ , preTestScript ? ""
+
+ # Does test need X11?
+ , withX11 ? false
+
+ # Extra flags to pass to gnome-desktop-testing-runner.
+ , testRunnerFlags ? ""
+ }:
+ makeTest rec {
+ name = tested.name;
+
+ meta = {
+ maintainers = tested.meta.maintainers;
+ };
+
+ machine = { ... }: {
+ imports = [
+ testConfig
+ ] ++ optional withX11 ../common/x11.nix;
+
+ environment.systemPackages = with pkgs; [ gnome-desktop-testing ];
+
+ };
+
+ testScript =
+ optionalString withX11 ''
+ machine.wait_for_x()
+ '' +
+ optionalString (preTestScript != "") ''
+ ${preTestScript}
+ '' +
+ ''
+ machine.succeed(
+ "gnome-desktop-testing-runner ${testRunnerFlags} -d '${tested.installedTests}/share'"
+ )
+ '';
+ };
+
+in
+
+{
+ colord = callInstalledTest ./colord.nix {};
+ flatpak = callInstalledTest ./flatpak.nix {};
+ flatpak-builder = callInstalledTest ./flatpak-builder.nix {};
+ fwupd = callInstalledTest ./fwupd.nix {};
+ gdk-pixbuf = callInstalledTest ./gdk-pixbuf.nix {};
+ gjs = callInstalledTest ./gjs.nix {};
+ glib-networking = callInstalledTest ./glib-networking.nix {};
+ gnome-photos = callInstalledTest ./gnome-photos.nix {};
+ graphene = callInstalledTest ./graphene.nix {};
+ ostree = callInstalledTest ./ostree.nix {};
+ xdg-desktop-portal = callInstalledTest ./xdg-desktop-portal.nix {};
+}
diff --git a/nixos/tests/installed-tests/flatpak-builder.nix b/nixos/tests/installed-tests/flatpak-builder.nix
new file mode 100644
index 000000000000..31b9f2b258fd
--- /dev/null
+++ b/nixos/tests/installed-tests/flatpak-builder.nix
@@ -0,0 +1,14 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.flatpak-builder;
+
+ testConfig = {
+ services.flatpak.enable = true;
+ xdg.portal.enable = true;
+ environment.systemPackages = with pkgs; [ flatpak-builder ] ++ flatpak-builder.installedTestsDependencies;
+ virtualisation.diskSize = 2048;
+ };
+
+ testRunnerFlags = "--timeout 3600";
+}
diff --git a/nixos/tests/installed-tests/flatpak.nix b/nixos/tests/installed-tests/flatpak.nix
new file mode 100644
index 000000000000..cbd25484e3df
--- /dev/null
+++ b/nixos/tests/installed-tests/flatpak.nix
@@ -0,0 +1,19 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.flatpak;
+ withX11 = true;
+
+ testConfig = {
+ services.xserver.desktopManager.gnome3.enable = true; # TODO: figure out minimal environment where the tests work
+ # common/x11.nix enables the auto display manager (lightdm)
+ services.xserver.displayManager.gdm.enable = false;
+ environment.gnome3.excludePackages = pkgs.gnome3.optionalPackages;
+ services.flatpak.enable = true;
+ environment.systemPackages = with pkgs; [ gnupg ostree python2 ];
+ virtualisation.memorySize = 2047;
+ virtualisation.diskSize = 1024;
+ };
+
+ testRunnerFlags = "--timeout 3600";
+}
diff --git a/nixos/tests/installed-tests/fwupd.nix b/nixos/tests/installed-tests/fwupd.nix
new file mode 100644
index 000000000000..b9f761e99582
--- /dev/null
+++ b/nixos/tests/installed-tests/fwupd.nix
@@ -0,0 +1,12 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.fwupd;
+
+ testConfig = {
+ services.fwupd.enable = true;
+ services.fwupd.blacklistPlugins = []; # don't blacklist test plugin
+ services.fwupd.enableTestRemote = true;
+ virtualisation.memorySize = 768;
+ };
+}
diff --git a/nixos/tests/installed-tests/gdk-pixbuf.nix b/nixos/tests/installed-tests/gdk-pixbuf.nix
new file mode 100644
index 000000000000..3d0011a427a4
--- /dev/null
+++ b/nixos/tests/installed-tests/gdk-pixbuf.nix
@@ -0,0 +1,13 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.gdk-pixbuf;
+
+ testConfig = {
+ # Tests allocate a lot of memory trying to exploit a CVE
+ # but qemu-system-i386 has a 2047M memory limit
+ virtualisation.memorySize = if pkgs.stdenv.isi686 then 2047 else 4096;
+ };
+
+ testRunnerFlags = "--timeout 1800";
+}
diff --git a/nixos/tests/installed-tests/gjs.nix b/nixos/tests/installed-tests/gjs.nix
new file mode 100644
index 000000000000..1656e9de171b
--- /dev/null
+++ b/nixos/tests/installed-tests/gjs.nix
@@ -0,0 +1,6 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.gjs;
+ withX11 = true;
+}
diff --git a/nixos/tests/installed-tests/glib-networking.nix b/nixos/tests/installed-tests/glib-networking.nix
new file mode 100644
index 000000000000..b58d4df21fca
--- /dev/null
+++ b/nixos/tests/installed-tests/glib-networking.nix
@@ -0,0 +1,5 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.glib-networking;
+}
diff --git a/nixos/tests/installed-tests/gnome-photos.nix b/nixos/tests/installed-tests/gnome-photos.nix
new file mode 100644
index 000000000000..05e7ccb65ad5
--- /dev/null
+++ b/nixos/tests/installed-tests/gnome-photos.nix
@@ -0,0 +1,35 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.gnome-photos;
+
+ withX11 = true;
+
+ testConfig = {
+ programs.dconf.enable = true;
+ services.gnome3.at-spi2-core.enable = true; # needed for dogtail
+ environment.systemPackages = with pkgs; [
+ # gsettings tool with access to gsettings-desktop-schemas
+ (stdenv.mkDerivation {
+ name = "desktop-gsettings";
+ dontUnpack = true;
+ nativeBuildInputs = [ glib wrapGAppsHook ];
+ buildInputs = [ gsettings-desktop-schemas ];
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out/bin
+ ln -s ${glib.bin}/bin/gsettings $out/bin/desktop-gsettings
+ runHook postInstall
+ '';
+ })
+ ];
+ services.dbus.packages = with pkgs; [ gnome-photos ];
+ };
+
+ preTestScript = ''
+ # dogtail needs accessibility enabled
+ machine.succeed(
+ "desktop-gsettings set org.gnome.desktop.interface toolkit-accessibility true 2>&1"
+ )
+ '';
+}
diff --git a/nixos/tests/installed-tests/graphene.nix b/nixos/tests/installed-tests/graphene.nix
new file mode 100644
index 000000000000..e43339abd88c
--- /dev/null
+++ b/nixos/tests/installed-tests/graphene.nix
@@ -0,0 +1,5 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.graphene;
+}
diff --git a/nixos/tests/installed-tests/ostree.nix b/nixos/tests/installed-tests/ostree.nix
new file mode 100644
index 000000000000..eef7cace54cc
--- /dev/null
+++ b/nixos/tests/installed-tests/ostree.nix
@@ -0,0 +1,23 @@
+{ pkgs, lib, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.ostree;
+
+ # TODO: Wrap/patch the tests directly in the package
+ testConfig = {
+ environment.systemPackages = with pkgs; [
+ (python3.withPackages (p: with p; [ pyyaml ]))
+ gnupg
+ ostree
+ ];
+
+ # for GJS tests
+ environment.variables.GI_TYPELIB_PATH = lib.makeSearchPath "lib/girepository-1.0" (with pkgs; [
+ gtk3
+ pango.out
+ ostree
+ gdk-pixbuf
+ atk
+ ]);
+ };
+}
diff --git a/nixos/tests/installed-tests/xdg-desktop-portal.nix b/nixos/tests/installed-tests/xdg-desktop-portal.nix
new file mode 100644
index 000000000000..b16008ff4add
--- /dev/null
+++ b/nixos/tests/installed-tests/xdg-desktop-portal.nix
@@ -0,0 +1,5 @@
+{ pkgs, makeInstalledTest, ... }:
+
+makeInstalledTest {
+ tested = pkgs.xdg-desktop-portal;
+}