From 5f06ceafc6c9b773a776b9195c3f47bbe1defa43 Mon Sep 17 00:00:00 2001 From: andre4ik3 Date: Sat, 4 Oct 2025 04:00:33 +0000 Subject: [PATCH] vscode: also test unknown package if IFD is enabled --- tests/modules/programs/vscode/default.nix | 44 ++++++++++++++++--- tests/modules/programs/vscode/keybindings.nix | 33 +++++++++----- tests/modules/programs/vscode/mcp.nix | 26 +++++++---- tests/modules/programs/vscode/snippets.nix | 26 +++++++---- tests/modules/programs/vscode/tasks.nix | 26 +++++++---- .../modules/programs/vscode/update-checks.nix | 24 ++++++---- 6 files changed, 125 insertions(+), 54 deletions(-) diff --git a/tests/modules/programs/vscode/default.nix b/tests/modules/programs/vscode/default.nix index a79753230..4db8b2c8a 100644 --- a/tests/modules/programs/vscode/default.nix +++ b/tests/modules/programs/vscode/default.nix @@ -1,7 +1,37 @@ -{ - vscode-keybindings = ./keybindings.nix; - vscode-tasks = ./tasks.nix; - vscode-mcp = ./mcp.nix; - vscode-update-checks = ./update-checks.nix; - vscode-snippets = ./snippets.nix; -} +{ pkgs, lib, ... }: + +let + knownPackage = pkgs.writeScriptBin "vscode" "" // { + pname = "vscode"; + version = "1.75.0"; + }; + + unknownPackage = pkgs.writeTextFile rec { + name = "${derivationArgs.pname}-${derivationArgs.version}"; + derivationArgs = { + pname = "test-vscode-unknown"; + version = "0.1.0"; + }; + text = builtins.toJSON { + dataFolderName = ".test-vscode-unknown"; + nameShort = passthru.longName; + }; + destination = "/lib/vscode/resources/app/product.json"; + passthru.longName = "Test VSCode Fork"; + }; + + tests = { + keybindings = import ./keybindings.nix; + tasks = import ./tasks.nix; + mcp = import ./mcp.nix; + update-checks = import ./update-checks.nix; + snippets = import ./snippets.nix; + }; + + knownTests = lib.mapAttrs' (k: v: lib.nameValuePair "vscode-${k}-known" (v knownPackage)) tests; + unknownTests = lib.mapAttrs' ( + k: v: lib.nameValuePair "vscode-${k}-unknown" (v unknownPackage) + ) tests; +in + +knownTests // unknownTests diff --git a/tests/modules/programs/vscode/keybindings.nix b/tests/modules/programs/vscode/keybindings.nix index b27d7520e..13d745a64 100644 --- a/tests/modules/programs/vscode/keybindings.nix +++ b/tests/modules/programs/vscode/keybindings.nix @@ -1,7 +1,17 @@ # Test that keybindings.json is created correctly. -{ pkgs, lib, ... }: +package: + +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.vscode; + willUseIfd = package.pname != "vscode"; + bindings = [ { key = "ctrl+c"; @@ -30,20 +40,24 @@ let keybindingsPath = name: if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/${ + "Library/Application Support/${cfg.nameShort}/User/${ lib.optionalString (name != "default") "profiles/${name}/" }keybindings.json" else - ".config/Code/User/${lib.optionalString (name != "default") "profiles/${name}/"}keybindings.json"; + ".config/${cfg.nameShort}/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }keybindings.json"; settingsPath = name: if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/${ + "Library/Application Support/${cfg.nameShort}/User/${ lib.optionalString (name != "default") "profiles/${name}/" }settings.json" else - ".config/Code/User/${lib.optionalString (name != "default") "profiles/${name}/"}settings.json"; + ".config/${cfg.nameShort}/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }settings.json"; content = '' [ @@ -109,9 +123,9 @@ let ''; expectedCustomKeybindings = pkgs.writeText "custom-expected.json" content; - in -{ + +lib.mkIf (willUseIfd -> config.test.enableLegacyIfd) { programs.vscode = { enable = true; profiles = { @@ -119,10 +133,7 @@ in test.keybindings = bindings; custom.keybindings = customBindingsPath; }; - package = pkgs.writeScriptBin "vscode" "" // { - pname = "vscode"; - version = "1.75.0"; - }; + inherit package; }; nmt.script = '' diff --git a/tests/modules/programs/vscode/mcp.nix b/tests/modules/programs/vscode/mcp.nix index 0c86c0ff5..d3baad259 100644 --- a/tests/modules/programs/vscode/mcp.nix +++ b/tests/modules/programs/vscode/mcp.nix @@ -1,15 +1,26 @@ -{ pkgs, lib, ... }: +package: + +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.vscode; + willUseIfd = package.pname != "vscode"; mcpFilePath = name: if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/${ + "Library/Application Support/${cfg.nameShort}/User/${ lib.optionalString (name != "default") "profiles/${name}/" }mcp.json" else - ".config/Code/User/${lib.optionalString (name != "default") "profiles/${name}/"}mcp.json"; + ".config/${cfg.nameShort}/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }mcp.json"; content = '' { @@ -42,15 +53,12 @@ let ''; expectedCustomMcp = pkgs.writeText "custom-expected.json" content; - in -{ + +lib.mkIf (willUseIfd -> config.test.enableLegacyIfd) { programs.vscode = { enable = true; - package = pkgs.writeScriptBin "vscode" "" // { - pname = "vscode"; - version = "1.75.0"; - }; + inherit package; profiles = { default.userMcp = mcp; test.userMcp = mcp; diff --git a/tests/modules/programs/vscode/snippets.nix b/tests/modules/programs/vscode/snippets.nix index de868dbd3..45e5cd6b1 100644 --- a/tests/modules/programs/vscode/snippets.nix +++ b/tests/modules/programs/vscode/snippets.nix @@ -1,15 +1,26 @@ -{ pkgs, lib, ... }: +package: + +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.vscode; + willUseIfd = package.pname != "vscode"; snippetsDir = name: if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/${ + "Library/Application Support/${cfg.nameShort}/User/${ lib.optionalString (name != "default") "profiles/${name}/" }/snippets" else - ".config/Code/User/${lib.optionalString (name != "default") "profiles/${name}/"}snippets"; + ".config/${cfg.nameShort}/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }snippets"; globalSnippetsPath = name: "${snippetsDir name}/global.code-snippets"; @@ -61,15 +72,12 @@ let }; }; }; - in -{ + +lib.mkIf (willUseIfd -> config.test.enableLegacyIfd) { programs.vscode = { enable = true; - package = pkgs.writeScriptBin "vscode" "" // { - pname = "vscode"; - version = "1.75.0"; - }; + inherit package; profiles = { default = snippets; test = snippets; diff --git a/tests/modules/programs/vscode/tasks.nix b/tests/modules/programs/vscode/tasks.nix index aa9ab8a52..d272ddf5e 100644 --- a/tests/modules/programs/vscode/tasks.nix +++ b/tests/modules/programs/vscode/tasks.nix @@ -1,15 +1,26 @@ -{ pkgs, lib, ... }: +package: + +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.vscode; + willUseIfd = package.pname != "vscode"; tasksFilePath = name: if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/${ + "Library/Application Support/${cfg.nameShort}/User/${ lib.optionalString (name != "default") "profiles/${name}/" }tasks.json" else - ".config/Code/User/${lib.optionalString (name != "default") "profiles/${name}/"}tasks.json"; + ".config/${cfg.nameShort}/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }tasks.json"; content = '' { @@ -57,15 +68,12 @@ let ''; expectedCustomTasks = pkgs.writeText "custom-expected.json" content; - in -{ + +lib.mkIf (willUseIfd -> config.test.enableLegacyIfd) { programs.vscode = { enable = true; - package = pkgs.writeScriptBin "vscode" "" // { - pname = "vscode"; - version = "1.75.0"; - }; + inherit package; profiles = { default.userTasks = tasks; test.userTasks = tasks; diff --git a/tests/modules/programs/vscode/update-checks.nix b/tests/modules/programs/vscode/update-checks.nix index 31f04ab9f..eda45747e 100644 --- a/tests/modules/programs/vscode/update-checks.nix +++ b/tests/modules/programs/vscode/update-checks.nix @@ -1,12 +1,21 @@ -{ pkgs, ... }: +package: + +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.vscode; + willUseIfd = package.pname != "vscode"; settingsPath = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/settings.json" + "Library/Application Support/${cfg.nameShort}/User/settings.json" else - ".config/Code/User/settings.json"; + ".config/${cfg.nameShort}/User/settings.json"; expectedSettings = pkgs.writeText "settings-expected.json" '' { @@ -14,15 +23,12 @@ let "update.mode": "none" } ''; - in -{ + +lib.mkIf (willUseIfd -> config.test.enableLegacyIfd) { programs.vscode = { enable = true; - package = pkgs.writeScriptBin "vscode" "" // { - pname = "vscode"; - version = "1.75.0"; - }; + inherit package; profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false;