| 
									
										
										
										
											2019-11-05 19:56:21 -05:00
										 |  |  |  | # 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 ? "" | 
					
						
							| 
									
										
										
										
											2019-12-05 23:53:46 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       # Extra attributes to pass to makeTest. | 
					
						
							|  |  |  |  |       # They will be recursively merged into the attrset created by this function. | 
					
						
							|  |  |  |  |     , ... | 
					
						
							|  |  |  |  |     }@args: | 
					
						
							|  |  |  |  |     makeTest | 
					
						
							|  |  |  |  |       (recursiveUpdate | 
					
						
							|  |  |  |  |         rec { | 
					
						
							|  |  |  |  |           name = tested.name; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           meta = { | 
					
						
							|  |  |  |  |             maintainers = tested.meta.maintainers; | 
					
						
							|  |  |  |  |           }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           machine = { ... }: { | 
					
						
							|  |  |  |  |             imports = [ | 
					
						
							|  |  |  |  |               testConfig | 
					
						
							|  |  |  |  |             ] ++ optional withX11 ../common/x11.nix; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             environment.systemPackages = with pkgs; [ gnome-desktop-testing ]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 15:17:42 +02:00
										 |  |  |  |             # The installed tests need to be added to the test VM’s closure. | 
					
						
							|  |  |  |  |             # Otherwise, their dependencies might not actually be registered | 
					
						
							|  |  |  |  |             # as valid paths in the VM’s Nix store database, | 
					
						
							|  |  |  |  |             # and `nix-store --query` commands run as part of the tests | 
					
						
							|  |  |  |  |             # (for example when building Flatpak runtimes) will fail. | 
					
						
							|  |  |  |  |             environment.variables.TESTED_PACKAGE_INSTALLED_TESTS = "${tested.installedTests}/share"; | 
					
						
							| 
									
										
										
										
											2019-12-05 23:53:46 +01:00
										 |  |  |  |           }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           testScript = | 
					
						
							|  |  |  |  |             optionalString withX11 ''
 | 
					
						
							|  |  |  |  |               machine.wait_for_x() | 
					
						
							|  |  |  |  |             '' +
 | 
					
						
							|  |  |  |  |             optionalString (preTestScript != "") ''
 | 
					
						
							|  |  |  |  |               ${preTestScript} | 
					
						
							|  |  |  |  |             '' +
 | 
					
						
							|  |  |  |  |             ''
 | 
					
						
							|  |  |  |  |               machine.succeed( | 
					
						
							|  |  |  |  |                   "gnome-desktop-testing-runner ${testRunnerFlags} -d '${tested.installedTests}/share'" | 
					
						
							|  |  |  |  |               ) | 
					
						
							|  |  |  |  |             '';
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         (removeAttrs args [ | 
					
						
							|  |  |  |  |           "tested" | 
					
						
							|  |  |  |  |           "testConfig" | 
					
						
							|  |  |  |  |           "preTestScript" | 
					
						
							|  |  |  |  |           "withX11" | 
					
						
							|  |  |  |  |           "testRunnerFlags" | 
					
						
							|  |  |  |  |         ]) | 
					
						
							|  |  |  |  |       ); | 
					
						
							| 
									
										
										
										
											2019-11-05 19:56:21 -05:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | in | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   colord = callInstalledTest ./colord.nix {}; | 
					
						
							|  |  |  |  |   flatpak = callInstalledTest ./flatpak.nix {}; | 
					
						
							|  |  |  |  |   flatpak-builder = callInstalledTest ./flatpak-builder.nix {}; | 
					
						
							|  |  |  |  |   fwupd = callInstalledTest ./fwupd.nix {}; | 
					
						
							| 
									
										
										
										
											2019-11-07 13:59:11 +01:00
										 |  |  |  |   gcab = callInstalledTest ./gcab.nix {}; | 
					
						
							| 
									
										
										
										
											2019-11-05 19:56:21 -05:00
										 |  |  |  |   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 {}; | 
					
						
							| 
									
										
										
										
											2019-11-07 15:05:42 +01:00
										 |  |  |  |   ibus = callInstalledTest ./ibus.nix {}; | 
					
						
							| 
									
										
										
										
											2019-11-07 08:07:51 -05:00
										 |  |  |  |   libgdata = callInstalledTest ./libgdata.nix {}; | 
					
						
							| 
									
										
										
										
											2020-02-08 04:36:49 +01:00
										 |  |  |  |   glib-testing = callInstalledTest ./glib-testing.nix {}; | 
					
						
							| 
									
										
										
										
											2020-03-30 07:37:07 +02:00
										 |  |  |  |   libjcat = callInstalledTest ./libjcat.nix {}; | 
					
						
							| 
									
										
										
										
											2019-11-07 08:02:33 -05:00
										 |  |  |  |   libxmlb = callInstalledTest ./libxmlb.nix {}; | 
					
						
							| 
									
										
										
										
											2020-02-08 06:16:13 +01:00
										 |  |  |  |   malcontent = callInstalledTest ./malcontent.nix {}; | 
					
						
							| 
									
										
										
										
											2019-11-05 19:56:21 -05:00
										 |  |  |  |   ostree = callInstalledTest ./ostree.nix {}; | 
					
						
							|  |  |  |  |   xdg-desktop-portal = callInstalledTest ./xdg-desktop-portal.nix {}; | 
					
						
							|  |  |  |  | } |