From 797c77a00a50009239bc2b6576283e49fbd63b40 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Tue, 8 Oct 2019 22:46:27 +0200 Subject: [PATCH] tests: reduce number of downloads This replaces some derivation outputs by simple strings rather than full Nix store paths. This removes the need to download the whole derivation when all we need is a static string. --- tests/modules/misc/xsession/basic.nix | 15 ++- .../misc/xsession/keyboard-without-layout.nix | 15 ++- .../programs/alacritty/empty-settings.nix | 6 ++ .../programs/alacritty/example-settings.nix | 6 ++ .../bash/session-variables-expected.txt | 2 +- .../programs/bash/session-variables.nix | 9 +- .../programs/firefox/profile-settings.nix | 18 ++++ .../programs/firefox/state-version-19_09.nix | 18 ++++ tests/modules/programs/git-with-email.nix | 1 + .../programs/git-with-str-extra-config.nix | 3 +- tests/modules/programs/git.nix | 1 + .../programs/gpg/override-defaults.nix | 6 ++ .../tmux/disable-confirmation-prompt.nix | 24 ++--- .../programs/tmux/emacs-with-plugins.conf | 6 +- .../programs/tmux/emacs-with-plugins.nix | 38 ++++--- tests/modules/programs/tmux/vi-all-true.nix | 23 ++-- .../programs/zsh/session-variables.nix | 8 +- .../i3-keybindings-expected.conf | 100 ++++++++++++++++++ .../window-managers/i3-keybindings.nix | 27 +++-- 19 files changed, 259 insertions(+), 67 deletions(-) create mode 100644 tests/modules/services/window-managers/i3-keybindings-expected.conf diff --git a/tests/modules/misc/xsession/basic.nix b/tests/modules/misc/xsession/basic.nix index 60623d1b..d86b57dd 100644 --- a/tests/modules/misc/xsession/basic.nix +++ b/tests/modules/misc/xsession/basic.nix @@ -14,6 +14,16 @@ with lib; profileExtra = "profile extra commands"; }; + nixpkgs.overlays = [ + (self: super: { + xorg = super.xorg // { + setxkbmap = super.xorg.setxkbmap // { + outPath = "@setxkbmap@"; + }; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.xprofile assertFileContent \ @@ -28,10 +38,7 @@ with lib; assertFileExists home-files/.config/systemd/user/setxkbmap.service assertFileContent \ home-files/.config/systemd/user/setxkbmap.service \ - ${pkgs.substituteAll { - src = ./basic-setxkbmap-expected.service; - inherit (pkgs.xorg) setxkbmap; - }} + ${./basic-setxkbmap-expected.service} ''; }; } diff --git a/tests/modules/misc/xsession/keyboard-without-layout.nix b/tests/modules/misc/xsession/keyboard-without-layout.nix index b7eb3dec..5f89a29e 100644 --- a/tests/modules/misc/xsession/keyboard-without-layout.nix +++ b/tests/modules/misc/xsession/keyboard-without-layout.nix @@ -20,14 +20,21 @@ with lib; profileExtra = "profile extra commands"; }; + nixpkgs.overlays = [ + (self: super: { + xorg = super.xorg // { + setxkbmap = super.xorg.setxkbmap // { + outPath = "@setxkbmap@"; + }; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.config/systemd/user/setxkbmap.service assertFileContent \ home-files/.config/systemd/user/setxkbmap.service \ - ${pkgs.substituteAll { - src = ./keyboard-without-layout-expected.service; - inherit (pkgs.xorg) setxkbmap; - }} + ${./keyboard-without-layout-expected.service} ''; }; } diff --git a/tests/modules/programs/alacritty/empty-settings.nix b/tests/modules/programs/alacritty/empty-settings.nix index f3f8486a..5fd2792a 100644 --- a/tests/modules/programs/alacritty/empty-settings.nix +++ b/tests/modules/programs/alacritty/empty-settings.nix @@ -6,6 +6,12 @@ with lib; config = { programs.alacritty.enable = true; + nixpkgs.overlays = [ + (self: super: { + alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; + }) + ]; + nmt.script = '' assertPathNotExists home-files/.config/alacritty ''; diff --git a/tests/modules/programs/alacritty/example-settings.nix b/tests/modules/programs/alacritty/example-settings.nix index 2c84710d..0caa8025 100644 --- a/tests/modules/programs/alacritty/example-settings.nix +++ b/tests/modules/programs/alacritty/example-settings.nix @@ -23,6 +23,12 @@ with lib; }; }; + nixpkgs.overlays = [ + (self: super: { + alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; + }) + ]; + nmt.script = '' assertFileContent \ home-files/.config/alacritty/alacritty.yml \ diff --git a/tests/modules/programs/bash/session-variables-expected.txt b/tests/modules/programs/bash/session-variables-expected.txt index c586477e..e13d63d4 100644 --- a/tests/modules/programs/bash/session-variables-expected.txt +++ b/tests/modules/programs/bash/session-variables-expected.txt @@ -1,6 +1,6 @@ # -*- mode: sh -*- -. "@homeDirectory@/.nix-profile/etc/profile.d/hm-session-vars.sh" +. "/home/testuser/.nix-profile/etc/profile.d/hm-session-vars.sh" export V1="v1" export V2="v2-v1" diff --git a/tests/modules/programs/bash/session-variables.nix b/tests/modules/programs/bash/session-variables.nix index a7a69a2a..ea789a1d 100644 --- a/tests/modules/programs/bash/session-variables.nix +++ b/tests/modules/programs/bash/session-variables.nix @@ -13,16 +13,13 @@ with lib; }; }; + home.homeDirectory = "/home/testuser"; + nmt.script = '' assertFileExists home-files/.profile assertFileContent \ home-files/.profile \ - ${ - pkgs.substituteAll { - src = ./session-variables-expected.txt; - inherit (config.home) homeDirectory; - } - } + ${./session-variables-expected.txt} ''; }; } diff --git a/tests/modules/programs/firefox/profile-settings.nix b/tests/modules/programs/firefox/profile-settings.nix index 45465b1d..f1e9be92 100644 --- a/tests/modules/programs/firefox/profile-settings.nix +++ b/tests/modules/programs/firefox/profile-settings.nix @@ -11,6 +11,24 @@ with lib; }; }; + nixpkgs.overlays = [ + (self: super: { + firefox-unwrapped = + pkgs.runCommand + "firefox-0" + { + meta.description = "I pretend to be Firefox"; + preferLocalBuild = true; + allowSubstitutes = false; + } + '' + mkdir -p "$out/bin" + touch "$out/bin/firefox" + chmod 755 "$out/bin/firefox" + ''; + }) + ]; + nmt.script = '' assertFileRegex \ home-path/bin/firefox \ diff --git a/tests/modules/programs/firefox/state-version-19_09.nix b/tests/modules/programs/firefox/state-version-19_09.nix index 0c930961..4d65d7a7 100644 --- a/tests/modules/programs/firefox/state-version-19_09.nix +++ b/tests/modules/programs/firefox/state-version-19_09.nix @@ -8,6 +8,24 @@ with lib; programs.firefox.enable = true; + nixpkgs.overlays = [ + (self: super: { + firefox-unwrapped = + pkgs.runCommand + "firefox-0" + { + meta.description = "I pretend to be Firefox"; + preferLocalBuild = true; + allowSubstitutes = false; + } + '' + mkdir -p "$out/bin" + touch "$out/bin/firefox" + chmod 755 "$out/bin/firefox" + ''; + }) + ]; + nmt.script = '' assertFileRegex \ home-path/bin/firefox \ diff --git a/tests/modules/programs/git-with-email.nix b/tests/modules/programs/git-with-email.nix index f8a762dc..a7107aa8 100644 --- a/tests/modules/programs/git-with-email.nix +++ b/tests/modules/programs/git-with-email.nix @@ -8,6 +8,7 @@ with lib; config = { programs.git = { enable = true; + package = pkgs.gitMinimal; userEmail = "hm@example.com"; userName = "H. M. Test"; }; diff --git a/tests/modules/programs/git-with-str-extra-config.nix b/tests/modules/programs/git-with-str-extra-config.nix index 734c5ee7..3dbc497a 100644 --- a/tests/modules/programs/git-with-str-extra-config.nix +++ b/tests/modules/programs/git-with-str-extra-config.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -6,6 +6,7 @@ with lib; config = { programs.git = { enable = true; + package = pkgs.gitMinimal; extraConfig = '' This can be anything. ''; diff --git a/tests/modules/programs/git.nix b/tests/modules/programs/git.nix index c5203e41..3a84bf77 100644 --- a/tests/modules/programs/git.nix +++ b/tests/modules/programs/git.nix @@ -24,6 +24,7 @@ in programs.git = mkMerge [ { enable = true; + package = pkgs.gitMinimal; aliases = { a1 = "foo"; a2 = "bar"; diff --git a/tests/modules/programs/gpg/override-defaults.nix b/tests/modules/programs/gpg/override-defaults.nix index 850334dc..96234d0d 100644 --- a/tests/modules/programs/gpg/override-defaults.nix +++ b/tests/modules/programs/gpg/override-defaults.nix @@ -14,6 +14,12 @@ with lib; }; }; + nixpkgs.overlays = [ + (self: super: { + gnupg = pkgs.writeScriptBin "dummy-gnupg" ""; + }) + ]; + nmt.script = '' assertFileExists home-files/.gnupg/gpg.conf assertFileContent home-files/.gnupg/gpg.conf ${./override-defaults-expected.conf} diff --git a/tests/modules/programs/tmux/disable-confirmation-prompt.nix b/tests/modules/programs/tmux/disable-confirmation-prompt.nix index 82c53438..e3d13a4b 100644 --- a/tests/modules/programs/tmux/disable-confirmation-prompt.nix +++ b/tests/modules/programs/tmux/disable-confirmation-prompt.nix @@ -2,27 +2,27 @@ with lib; -let - - substituteExpected = path: pkgs.substituteAll { - src = path; - - sensible_rtp = pkgs.tmuxPlugins.sensible.rtp; - }; - -in - { config = { programs.tmux = { enable = true; disableConfirmationPrompt = true; }; - + + nixpkgs.overlays = [ + (self: super: { + tmuxPlugins = super.tmuxPlugins // { + sensible = super.tmuxPlugins.sensible // { + rtp = "@sensible_rtp@"; + }; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.tmux.conf assertFileContent home-files/.tmux.conf \ - ${substituteExpected ./disable-confirmation-prompt.conf} + ${./disable-confirmation-prompt.conf} ''; }; } diff --git a/tests/modules/programs/tmux/emacs-with-plugins.conf b/tests/modules/programs/tmux/emacs-with-plugins.conf index b047c97a..66b10183 100644 --- a/tests/modules/programs/tmux/emacs-with-plugins.conf +++ b/tests/modules/programs/tmux/emacs-with-plugins.conf @@ -37,18 +37,18 @@ set -g history-limit 2000 # tmuxplugin-logging # --------------------- -run-shell @tmuxplugin_logging@/share/tmux-plugins/logging/logging.tmux +run-shell @tmuxplugin_logging_rtp@ # tmuxplugin-prefix-highlight # --------------------- -run-shell @tmuxplugin_prefix_highlight@/share/tmux-plugins/prefix-highlight/prefix_highlight.tmux +run-shell @tmuxplugin_prefix_highlight_rtp@ # tmuxplugin-fzf-tmux-url # --------------------- -run-shell @tmuxplugin_fzf_tmux_url@/share/tmux-plugins/fzf-tmux-url/fzf-url.tmux +run-shell @tmuxplugin_fzf_tmux_url_rtp@ # ============================================= # diff --git a/tests/modules/programs/tmux/emacs-with-plugins.nix b/tests/modules/programs/tmux/emacs-with-plugins.nix index 5e147b72..f9bccaa2 100644 --- a/tests/modules/programs/tmux/emacs-with-plugins.nix +++ b/tests/modules/programs/tmux/emacs-with-plugins.nix @@ -2,19 +2,6 @@ with lib; -let - - substituteExpected = path: pkgs.substituteAll { - src = path; - - tmuxplugin_fzf_tmux_url = pkgs.tmuxPlugins.fzf-tmux-url; - tmuxplugin_logging = pkgs.tmuxPlugins.logging; - tmuxplugin_prefix_highlight = pkgs.tmuxPlugins.prefix-highlight; - tmuxplugin_sensible_rtp = pkgs.tmuxPlugins.sensible.rtp; - }; - -in - { config = { programs.tmux = { @@ -32,10 +19,31 @@ in ]; }; + nixpkgs.overlays = [ + (self: super: { + tmuxPlugins = super.tmuxPlugins // { + fzf-tmux-url = super.tmuxPlugins.fzf-tmux-url // { + rtp = "@tmuxplugin_fzf_tmux_url_rtp@"; + }; + + logging = super.tmuxPlugins.logging // { + rtp = "@tmuxplugin_logging_rtp@"; + }; + + prefix-highlight = super.tmuxPlugins.prefix-highlight // { + rtp = "@tmuxplugin_prefix_highlight_rtp@"; + }; + + sensible = super.tmuxPlugins.sensible // { + rtp = "@tmuxplugin_sensible_rtp@"; + }; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.tmux.conf - assertFileContent home-files/.tmux.conf \ - ${substituteExpected ./emacs-with-plugins.conf} + assertFileContent home-files/.tmux.conf ${./emacs-with-plugins.conf} ''; }; } diff --git a/tests/modules/programs/tmux/vi-all-true.nix b/tests/modules/programs/tmux/vi-all-true.nix index e88ed587..70787128 100644 --- a/tests/modules/programs/tmux/vi-all-true.nix +++ b/tests/modules/programs/tmux/vi-all-true.nix @@ -2,15 +2,7 @@ with lib; -let - - substituteExpected = path: pkgs.substituteAll { - src = path; - - sensible_rtp = pkgs.tmuxPlugins.sensible.rtp; - }; - -in { +{ config = { programs.tmux = { aggressiveResize = true; @@ -21,10 +13,19 @@ in { reverseSplit = true; }; + nixpkgs.overlays = [ + (self: super: { + tmuxPlugins = super.tmuxPlugins // { + sensible = super.tmuxPlugins.sensible // { + rtp = "@sensible_rtp@"; + }; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.tmux.conf - assertFileContent home-files/.tmux.conf \ - ${substituteExpected ./vi-all-true.conf} + assertFileContent home-files/.tmux.conf ${./vi-all-true.conf} ''; }; } diff --git a/tests/modules/programs/zsh/session-variables.nix b/tests/modules/programs/zsh/session-variables.nix index a87d3982..ca903619 100644 --- a/tests/modules/programs/zsh/session-variables.nix +++ b/tests/modules/programs/zsh/session-variables.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -13,6 +13,12 @@ with lib; }; }; + nixpkgs.overlays = [ + (self: super: { + zsh = pkgs.writeScriptBin "dummy-zsh" ""; + }) + ]; + nmt.script = '' assertFileExists home-files/.zshrc assertFileRegex home-files/.zshrc 'export V1="v1"' diff --git a/tests/modules/services/window-managers/i3-keybindings-expected.conf b/tests/modules/services/window-managers/i3-keybindings-expected.conf new file mode 100644 index 00000000..fbf9fe34 --- /dev/null +++ b/tests/modules/services/window-managers/i3-keybindings-expected.conf @@ -0,0 +1,100 @@ +font pango:monospace 8 +floating_modifier Mod1 +new_window normal 2 +new_float normal 2 +hide_edge_borders none +force_focus_wrapping no +focus_follows_mouse yes +focus_on_window_activation smart +mouse_warping output +workspace_layout default + +client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577 +client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a +client.unfocused #333333 #222222 #888888 #292d2e #222222 +client.urgent #2f343a #900000 #ffffff #900000 #900000 +client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c +client.background #ffffff + +bindsym Mod1+1 workspace 1 +bindsym Mod1+2 workspace 2 +bindsym Mod1+3 workspace 3 +bindsym Mod1+4 workspace 4 +bindsym Mod1+5 workspace 5 +bindsym Mod1+6 workspace 6 +bindsym Mod1+7 workspace 7 +bindsym Mod1+8 workspace 8 +bindsym Mod1+9 workspace 9 +bindsym Mod1+Down focus down +bindsym Mod1+Invented invented-key-command +bindsym Mod1+Left overridden-command +bindsym Mod1+Return exec i3-sensible-terminal + +bindsym Mod1+Shift+1 move container to workspace 1 +bindsym Mod1+Shift+2 move container to workspace 2 +bindsym Mod1+Shift+3 move container to workspace 3 +bindsym Mod1+Shift+4 move container to workspace 4 +bindsym Mod1+Shift+5 move container to workspace 5 +bindsym Mod1+Shift+6 move container to workspace 6 +bindsym Mod1+Shift+7 move container to workspace 7 +bindsym Mod1+Shift+8 move container to workspace 8 +bindsym Mod1+Shift+9 move container to workspace 9 +bindsym Mod1+Shift+Down move down +bindsym Mod1+Shift+Left move left +bindsym Mod1+Shift+Right move right +bindsym Mod1+Shift+Up move up +bindsym Mod1+Shift+c reload +bindsym Mod1+Shift+e exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit' +bindsym Mod1+Shift+q kill +bindsym Mod1+Shift+r restart +bindsym Mod1+Shift+space floating toggle +bindsym Mod1+Up focus up +bindsym Mod1+d exec @dmenu@/bin/dmenu_run +bindsym Mod1+e layout toggle split +bindsym Mod1+f fullscreen toggle +bindsym Mod1+h split h +bindsym Mod1+r mode resize +bindsym Mod1+s layout stacking +bindsym Mod1+space focus mode_toggle +bindsym Mod1+v split v +bindsym Mod1+w layout tabbed + +mode "resize" { +bindsym Down resize grow height 10 px or 10 ppt +bindsym Escape mode default +bindsym Left resize shrink width 10 px or 10 ppt +bindsym Return mode default +bindsym Right resize grow width 10 px or 10 ppt +bindsym Up resize shrink height 10 px or 10 ppt +} + + +bar { + + font pango:monospace 8 + mode dock + hidden_state hide + position bottom + status_command @i3status@/bin/i3status + i3bar_command @i3@/bin/i3bar + workspace_buttons yes + strip_workspace_numbers no + tray_output primary + colors { + background #000000 + statusline #ffffff + separator #666666 + focused_workspace #4c7899 #285577 #ffffff + active_workspace #333333 #5f676a #ffffff + inactive_workspace #333333 #222222 #888888 + urgent_workspace #2f343a #900000 #ffffff + binding_mode #2f343a #900000 #ffffff + } + +} + + + + + + diff --git a/tests/modules/services/window-managers/i3-keybindings.nix b/tests/modules/services/window-managers/i3-keybindings.nix index b5ee4fd8..89e545be 100644 --- a/tests/modules/services/window-managers/i3-keybindings.nix +++ b/tests/modules/services/window-managers/i3-keybindings.nix @@ -18,17 +18,26 @@ with lib; }; }; + nixpkgs.overlays = [ + (self: super: { + dmenu = super.dmenu // { + outPath = "@dmenu@"; + }; + + i3 = super.i3 // { + outPath = "@i3@"; + }; + + i3status = super.i3status // { + outPath = "@i3status@"; + }; + }) + ]; + nmt.script = '' assertFileExists home-files/.config/i3/config - - assertFileRegex home-files/.config/i3/config \ - 'bindsym Mod1+Left overridden-command' - - assertFileNotRegex home-files/.config/i3/config \ - 'Mod1+Right' - - assertFileRegex home-files/.config/i3/config \ - 'bindsym Mod1+Invented invented-key-command' + assertFileContent home-files/.config/i3/config \ + ${./i3-keybindings-expected.conf} ''; }; }