From c220f242cde2d8f8a858eeaf2caf8ffe4d265ba3 Mon Sep 17 00:00:00 2001 From: damidoug Date: Fri, 14 Nov 2025 21:06:04 +0100 Subject: [PATCH] aerospace: add more tests and fix expected values --- .../programs/aerospace/aerospace-colemak.nix | 41 ---------- .../programs/aerospace/aerospace-no-xdg.nix | 28 +++++++ .../aerospace/aerospace-settings-no-xdg.nix | 78 +++++++++++++++++++ .../programs/aerospace/aerospace-settings.nix | 78 +++++++++++++++++++ .../modules/programs/aerospace/aerospace.nix | 26 +------ .../aerospace/colemak-settings-expected.toml | 14 ---- tests/modules/programs/aerospace/default.nix | 4 +- .../programs/aerospace/settings-expected.toml | 18 +++++ 8 files changed, 209 insertions(+), 78 deletions(-) delete mode 100644 tests/modules/programs/aerospace/aerospace-colemak.nix create mode 100644 tests/modules/programs/aerospace/aerospace-no-xdg.nix create mode 100644 tests/modules/programs/aerospace/aerospace-settings-no-xdg.nix create mode 100644 tests/modules/programs/aerospace/aerospace-settings.nix delete mode 100644 tests/modules/programs/aerospace/colemak-settings-expected.toml diff --git a/tests/modules/programs/aerospace/aerospace-colemak.nix b/tests/modules/programs/aerospace/aerospace-colemak.nix deleted file mode 100644 index 7014e2924..000000000 --- a/tests/modules/programs/aerospace/aerospace-colemak.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ config, pkgs, ... }: -let - hmPkgs = pkgs.extend ( - self: super: { - aerospace = config.lib.test.mkStubPackage { - name = "aerospace"; - buildScript = '' - mkdir -p $out/bin - touch $out/bin/aerospace - chmod 755 $out/bin/aerospace - ''; - }; - } - ); -in -{ - programs.aerospace = { - enable = true; - package = hmPkgs.aerospace; - - userSettings = { - gaps = { - outer.left = 8; - outer.bottom = 8; - outer.top = 8; - outer.right = 8; - }; - mode.main.binding = { - alt-h = "focus left"; - alt-j = "focus down"; - alt-k = "focus up"; - alt-l = "focus right"; - }; - key-mapping.preset = "colemak"; - }; - }; - - nmt.script = '' - assertFileContent home-files/.config/aerospace/aerospace.toml ${./colemak-settings-expected.toml} - ''; -} diff --git a/tests/modules/programs/aerospace/aerospace-no-xdg.nix b/tests/modules/programs/aerospace/aerospace-no-xdg.nix new file mode 100644 index 000000000..84ce54b27 --- /dev/null +++ b/tests/modules/programs/aerospace/aerospace-no-xdg.nix @@ -0,0 +1,28 @@ +{ config, pkgs, ... }: +let + hmPkgs = pkgs.extend ( + self: super: { + aerospace = config.lib.test.mkStubPackage { + name = "aerospace"; + buildScript = '' + mkdir -p $out/bin + touch $out/bin/aerospace + chmod 755 $out/bin/aerospace + ''; + }; + } + ); +in +{ + xdg.enable = false; + + programs.aerospace = { + enable = true; + package = hmPkgs.aerospace; + }; + + nmt.script = '' + # aerospace just create the config file if we open it by hand, otherwise he's use directly the default config + assertPathNotExists "home-files/.aerospace.toml" + ''; +} diff --git a/tests/modules/programs/aerospace/aerospace-settings-no-xdg.nix b/tests/modules/programs/aerospace/aerospace-settings-no-xdg.nix new file mode 100644 index 000000000..a18c57c80 --- /dev/null +++ b/tests/modules/programs/aerospace/aerospace-settings-no-xdg.nix @@ -0,0 +1,78 @@ +{ config, pkgs, ... }: +let + hmPkgs = pkgs.extend ( + self: super: { + aerospace = config.lib.test.mkStubPackage { + name = "aerospace"; + buildScript = '' + mkdir -p $out/bin + touch $out/bin/aerospace + chmod 755 $out/bin/aerospace + ''; + }; + } + ); +in +{ + xdg.enable = false; + + programs.aerospace = { + enable = true; + package = hmPkgs.aerospace; + + launchd.enable = true; + + settings = { + gaps = { + outer.left = 8; + outer.bottom = 8; + outer.top = 8; + outer.right = 8; + }; + mode.main.binding = { + alt-enter = '' + exec-and-forget osascript -e ' + tell application "Terminal" + do script + activate + end tell' + ''; + alt-h = "focus left"; + alt-j = "focus down"; + alt-k = "focus up"; + alt-l = "focus right"; + }; + on-window-detected = [ + { + "if".app-id = "com.apple.finder"; + run = "move-node-to-workspace 9"; + } + + { + "if" = { + app-id = "com.apple.systempreferences"; + app-name-regex-substring = "settings"; + window-title-regex-substring = "substring"; + workspace = "workspace-name"; + during-aerospace-startup = true; + }; + check-further-callbacks = true; + run = [ + "layout floating" + "move-node-to-workspace S" + ]; + } + ]; + }; + }; + + nmt.script = '' + assertPathNotExists "home-files/.config/aerospace"; + assertFileExists "home-files/.aerospace.toml" + assertFileContent "home-files/.aerospace.toml" ${./settings-expected.toml} + + serviceFile=$(normalizeStorePaths LaunchAgents/org.nix-community.home.aerospace.plist) + assertFileExists $serviceFile + assertFileContent "$serviceFile" ${./aerospace-service-expected.plist} + ''; +} diff --git a/tests/modules/programs/aerospace/aerospace-settings.nix b/tests/modules/programs/aerospace/aerospace-settings.nix new file mode 100644 index 000000000..29d441ef5 --- /dev/null +++ b/tests/modules/programs/aerospace/aerospace-settings.nix @@ -0,0 +1,78 @@ +{ config, pkgs, ... }: +let + hmPkgs = pkgs.extend ( + self: super: { + aerospace = config.lib.test.mkStubPackage { + name = "aerospace"; + buildScript = '' + mkdir -p $out/bin + touch $out/bin/aerospace + chmod 755 $out/bin/aerospace + ''; + }; + } + ); +in +{ + xdg.enable = true; + + programs.aerospace = { + enable = true; + package = hmPkgs.aerospace; + + launchd.enable = true; + + settings = { + gaps = { + outer.left = 8; + outer.bottom = 8; + outer.top = 8; + outer.right = 8; + }; + mode.main.binding = { + alt-enter = '' + exec-and-forget osascript -e ' + tell application "Terminal" + do script + activate + end tell' + ''; + alt-h = "focus left"; + alt-j = "focus down"; + alt-k = "focus up"; + alt-l = "focus right"; + }; + on-window-detected = [ + { + "if".app-id = "com.apple.finder"; + run = "move-node-to-workspace 9"; + } + + { + "if" = { + app-id = "com.apple.systempreferences"; + app-name-regex-substring = "settings"; + window-title-regex-substring = "substring"; + workspace = "workspace-name"; + during-aerospace-startup = true; + }; + check-further-callbacks = true; + run = [ + "layout floating" + "move-node-to-workspace S" + ]; + } + ]; + }; + }; + + nmt.script = '' + assertPathNotExists "home-files/.aerospace.toml"; + assertFileExists "home-files/.config/aerospace/aerospace.toml" + assertFileContent "home-files/.config/aerospace/aerospace.toml" ${./settings-expected.toml} + + serviceFile=$(normalizeStorePaths LaunchAgents/org.nix-community.home.aerospace.plist) + assertFileExists $serviceFile + assertFileContent "$serviceFile" ${./aerospace-service-expected.plist} + ''; +} diff --git a/tests/modules/programs/aerospace/aerospace.nix b/tests/modules/programs/aerospace/aerospace.nix index 080a781e7..f2429786d 100644 --- a/tests/modules/programs/aerospace/aerospace.nix +++ b/tests/modules/programs/aerospace/aerospace.nix @@ -14,33 +14,15 @@ let ); in { + xdg.enable = true; + programs.aerospace = { enable = true; package = hmPkgs.aerospace; - - launchd.enable = true; - - userSettings = { - gaps = { - outer.left = 8; - outer.bottom = 8; - outer.top = 8; - outer.right = 8; - }; - mode.main.binding = { - alt-h = "focus left"; - alt-j = "focus down"; - alt-k = "focus up"; - alt-l = "focus right"; - }; - }; }; nmt.script = '' - assertFileContent home-files/.config/aerospace/aerospace.toml ${./settings-expected.toml} - - serviceFile=$(normalizeStorePaths LaunchAgents/org.nix-community.home.aerospace.plist) - assertFileExists $serviceFile - assertFileContent "$serviceFile" ${./aerospace-service-expected.plist} + # aerospace just create the config file if we open it by hand, otherwise he's use directly the default config + assertPathNotExists "home-files/.config/aerospace" ''; } diff --git a/tests/modules/programs/aerospace/colemak-settings-expected.toml b/tests/modules/programs/aerospace/colemak-settings-expected.toml deleted file mode 100644 index 2b440a6bc..000000000 --- a/tests/modules/programs/aerospace/colemak-settings-expected.toml +++ /dev/null @@ -1,14 +0,0 @@ -[gaps.outer] -bottom = 8 -left = 8 -right = 8 -top = 8 - -[key-mapping] -preset = "colemak" - -[mode.main.binding] -alt-h = "focus left" -alt-j = "focus down" -alt-k = "focus up" -alt-l = "focus right" diff --git a/tests/modules/programs/aerospace/default.nix b/tests/modules/programs/aerospace/default.nix index 5f915cdcb..229f9421e 100644 --- a/tests/modules/programs/aerospace/default.nix +++ b/tests/modules/programs/aerospace/default.nix @@ -2,5 +2,7 @@ lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin { aerospace = ./aerospace.nix; - aerospace-colemak = ./aerospace-colemak.nix; + aerospace-no-xdg = ./aerospace-no-xdg.nix; + aerospace-settings = ./aerospace-settings.nix; + aerospace-settings-no-xdg = ./aerospace-settings-no-xdg.nix; } diff --git a/tests/modules/programs/aerospace/settings-expected.toml b/tests/modules/programs/aerospace/settings-expected.toml index 29d9e3fbb..9d3f83201 100644 --- a/tests/modules/programs/aerospace/settings-expected.toml +++ b/tests/modules/programs/aerospace/settings-expected.toml @@ -8,7 +8,25 @@ right = 8 top = 8 [mode.main.binding] +alt-enter = "exec-and-forget osascript -e '\n tell application \"Terminal\"\n do script\n activate\n end tell'\n" alt-h = "focus left" alt-j = "focus down" alt-k = "focus up" alt-l = "focus right" + +[[on-window-detected]] +run = "move-node-to-workspace 9" + +[on-window-detected.if] +app-id = "com.apple.finder" + +[[on-window-detected]] +check-further-callbacks = true +run = ["layout floating", "move-node-to-workspace S"] + +[on-window-detected.if] +app-id = "com.apple.systempreferences" +app-name-regex-substring = "settings" +during-aerospace-startup = true +window-title-regex-substring = "substring" +workspace = "workspace-name"