The test script is also ported to python.wip/yesman
parent
ceec19f682
commit
eee5986ac3
@ -1,18 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "colord"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.colord.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.colord.installedTests}/share'"); |
||||
''; |
||||
}) |
@ -1,20 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "flatpak-builder"; |
||||
meta = { |
||||
maintainers = pkgs.flatpak-builder.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
services.flatpak.enable = true; |
||||
xdg.portal.enable = true; |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing flatpak-builder ] ++ flatpak-builder.installedTestsDependencies; |
||||
virtualisation.diskSize = 2048; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.flatpak-builder.installedTests}/share' --timeout 3600"); |
||||
''; |
||||
}) |
@ -1,26 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "flatpak"; |
||||
meta = { |
||||
maintainers = pkgs.flatpak.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
imports = [ ./common/x11.nix ]; |
||||
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 gnome-desktop-testing ostree python2 ]; |
||||
virtualisation.memorySize = 2047; |
||||
virtualisation.diskSize = 1024; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->waitForX(); |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.flatpak.installedTests}/share' --timeout 3600"); |
||||
''; |
||||
}) |
@ -1,21 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: { |
||||
name = "fwupd"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.fwupd.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
services.fwupd.enable = true; |
||||
services.fwupd.blacklistPlugins = []; # don't blacklist test plugin |
||||
services.fwupd.enableTestRemote = true; |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
environment.variables.XDG_DATA_DIRS = [ "${pkgs.fwupd.installedTests}/share" ]; |
||||
virtualisation.memorySize = 768; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner"); |
||||
''; |
||||
}) |
@ -1,21 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: { |
||||
name = "gdk-pixbuf"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.gdk-pixbuf.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
environment.variables.XDG_DATA_DIRS = [ "${pkgs.gdk-pixbuf.installedTests}/share" ]; |
||||
|
||||
# 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; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -t 1800"); # increase timeout to 1800s |
||||
''; |
||||
}) |
@ -1,19 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: { |
||||
name = "gjs"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.gjs.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
imports = [ ./common/x11.nix ]; |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
environment.variables.XDG_DATA_DIRS = [ "${pkgs.gjs.installedTests}/share" ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->waitForX; |
||||
$machine->succeed("gnome-desktop-testing-runner"); |
||||
''; |
||||
}) |
@ -1,17 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "glib-networking"; |
||||
meta = { |
||||
maintainers = pkgs.glib-networking.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.glib-networking.installedTests}/share'"); |
||||
''; |
||||
}) |
@ -1,42 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, lib, ... }: |
||||
|
||||
let |
||||
|
||||
# gsettings tool with access to gsettings-desktop-schemas |
||||
desktop-gsettings = with pkgs; 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 |
||||
''; |
||||
}; |
||||
|
||||
in |
||||
|
||||
{ |
||||
name = "gnome-photos"; |
||||
meta = { |
||||
maintainers = pkgs.gnome-photos.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
imports = [ ./common/x11.nix ]; |
||||
programs.dconf.enable = true; |
||||
services.gnome3.at-spi2-core.enable = true; # needed for dogtail |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing desktop-gsettings ]; |
||||
services.dbus.packages = with pkgs; [ gnome-photos ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->waitForX; |
||||
# dogtail needs accessibility enabled |
||||
$machine->succeed("desktop-gsettings set org.gnome.desktop.interface toolkit-accessibility true 2>&1"); |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.gnome-photos.installedTests}/share' 2>&1"); |
||||
''; |
||||
}) |
@ -1,18 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "graphene"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.graphene.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.graphene.installedTests}/share'"); |
||||
''; |
||||
}) |
@ -0,0 +1,5 @@ |
||||
{ pkgs, makeInstalledTest, ... }: |
||||
|
||||
makeInstalledTest { |
||||
tested = pkgs.colord; |
||||
} |
@ -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 {}; |
||||
} |
@ -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"; |
||||
} |
@ -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"; |
||||
} |
@ -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; |
||||
}; |
||||
} |
@ -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"; |
||||
} |
@ -0,0 +1,6 @@ |
||||
{ pkgs, makeInstalledTest, ... }: |
||||
|
||||
makeInstalledTest { |
||||
tested = pkgs.gjs; |
||||
withX11 = true; |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ pkgs, makeInstalledTest, ... }: |
||||
|
||||
makeInstalledTest { |
||||
tested = pkgs.glib-networking; |
||||
} |
@ -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" |
||||
) |
||||
''; |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ pkgs, makeInstalledTest, ... }: |
||||
|
||||
makeInstalledTest { |
||||
tested = pkgs.graphene; |
||||
} |
@ -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 |
||||
]); |
||||
}; |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ pkgs, makeInstalledTest, ... }: |
||||
|
||||
makeInstalledTest { |
||||
tested = pkgs.xdg-desktop-portal; |
||||
} |
@ -1,21 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, lib, ... }: { |
||||
name = "ostree"; |
||||
|
||||
meta = { |
||||
maintainers = pkgs.ostree.meta.maintainers; |
||||
}; |
||||
|
||||
# TODO: Wrap/patch the tests directly in the package |
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ |
||||
gnome-desktop-testing ostree gnupg (python3.withPackages (p: with p; [ pyyaml ])) |
||||
]; |
||||
|
||||
environment.variables.GI_TYPELIB_PATH = lib.makeSearchPath "lib/girepository-1.0" (with pkgs; [ gtk3 pango.out ostree gdk-pixbuf atk ]); # for GJS tests |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d ${pkgs.ostree.installedTests}/share"); |
||||
''; |
||||
}) |
@ -1,17 +0,0 @@ |
||||
# run installed tests |
||||
import ./make-test.nix ({ pkgs, ... }: |
||||
|
||||
{ |
||||
name = "xdg-desktop-portal"; |
||||
meta = { |
||||
maintainers = pkgs.xdg-desktop-portal.meta.maintainers; |
||||
}; |
||||
|
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; |
||||
}; |
||||
|
||||
testScript = '' |
||||
$machine->succeed("gnome-desktop-testing-runner -d '${pkgs.xdg-desktop-portal.installedTests}/share'"); |
||||
''; |
||||
}) |
Loading…
Reference in new issue