diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix index 1ba87850f..d0b71d459 100644 --- a/modules/programs/vscode.nix +++ b/modules/programs/vscode.nix @@ -1,7 +1,5 @@ { config, lib, pkgs, ... }: -# TODO: Re-write tests to support profiles. - with lib; let diff --git a/tests/modules/programs/vscode/keybindings.nix b/tests/modules/programs/vscode/keybindings.nix index 64212e29a..429b59079 100644 --- a/tests/modules/programs/vscode/keybindings.nix +++ b/tests/modules/programs/vscode/keybindings.nix @@ -1,5 +1,5 @@ # Test that keybindings.json is created correctly. -{ pkgs, ... }: +{ pkgs, lib, ... }: let bindings = [ @@ -25,15 +25,25 @@ let } ]; - keybindingsPath = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/keybindings.json" - else - ".config/Code/User/keybindings.json"; + keybindingsPath = name: + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Application Support/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }keybindings.json" + else + ".config/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }keybindings.json"; - settingsPath = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/settings.json" - else - ".config/Code/User/settings.json"; + settingsPath = name: + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Application Support/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }settings.json" + else + ".config/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }settings.json"; expectedKeybindings = pkgs.writeText "expected.json" '' [ @@ -65,14 +75,27 @@ let in { programs.vscode = { enable = true; - keybindings = bindings; + defaultProfile.keybindings = bindings; + profiles = [{ + name = "test"; + keybindings = bindings; + }]; package = pkgs.writeScriptBin "vscode" "" // { pname = "vscode"; }; }; nmt.script = '' - assertFileExists "home-files/${keybindingsPath}" - assertFileContent "home-files/${keybindingsPath}" "${expectedKeybindings}" + assertFileExists "home-files/${keybindingsPath "default"}" + assertFileContent "home-files/${ + keybindingsPath "default" + }" "${expectedKeybindings}" - assertPathNotExists "home-files/${settingsPath}" + assertPathNotExists "home-files/${settingsPath "default"}" + + assertFileExists "home-files/${keybindingsPath "test"}" + assertFileContent "home-files/${ + keybindingsPath "test" + }" "${expectedKeybindings}" + + assertPathNotExists "home-files/${settingsPath "test"}" ''; } diff --git a/tests/modules/programs/vscode/snippets.nix b/tests/modules/programs/vscode/snippets.nix index a7ea44f76..cfd9540e0 100644 --- a/tests/modules/programs/vscode/snippets.nix +++ b/tests/modules/programs/vscode/snippets.nix @@ -1,13 +1,18 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: let - snippetsDir = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/snippets" - else - ".config/Code/User/snippets"; + snippetsDir = name: + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Application Support/Code/User${ + lib.optionalString (name != "default") "profiles/${name}/" + }/snippets" + else + ".config/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }snippets"; - globalSnippetsPath = "${snippetsDir}/global.code-snippets"; + globalSnippetsPath = name: "${snippetsDir name}/global.code-snippets"; globalSnippetsExpectedContent = pkgs.writeText "global.code-snippet" '' { @@ -23,7 +28,7 @@ let } ''; - haskellSnippetsPath = "${snippetsDir}/haskell.json"; + haskellSnippetsPath = name: "${snippetsDir name}/haskell.json"; haskellSnippetsExpectedContent = pkgs.writeText "haskell.json" '' { @@ -39,10 +44,7 @@ let } ''; -in { - programs.vscode = { - enable = true; - package = pkgs.writeScriptBin "vscode" "" // { pname = "vscode"; }; + snippets = { globalSnippets = { fixme = { prefix = [ "fixme" ]; @@ -61,11 +63,33 @@ in { }; }; - nmt.script = '' - assertFileExists "home-files/${globalSnippetsPath}" - assertFileContent "home-files/${globalSnippetsPath}" "${globalSnippetsExpectedContent}" +in { + programs.vscode = { + enable = true; + package = pkgs.writeScriptBin "vscode" "" // { pname = "vscode"; }; + defaultProfile = snippets; + profiles = [ ({ name = "test"; } // snippets) ]; + }; - assertFileExists "home-files/${haskellSnippetsPath}" - assertFileContent "home-files/${haskellSnippetsPath}" "${haskellSnippetsExpectedContent}" + nmt.script = '' + assertFileExists "home-files/${globalSnippetsPath "default"}" + assertFileContent "home-files/${ + globalSnippetsPath "default" + }" "${globalSnippetsExpectedContent}" + + assertFileExists "home-files/${globalSnippetsPath "test"}" + assertFileContent "home-files/${ + globalSnippetsPath "test" + }" "${globalSnippetsExpectedContent}" + + assertFileExists "home-files/${haskellSnippetsPath "default"}" + assertFileContent "home-files/${ + haskellSnippetsPath "default" + }" "${haskellSnippetsExpectedContent}" + + assertFileExists "home-files/${haskellSnippetsPath "test"}" + assertFileContent "home-files/${ + haskellSnippetsPath "test" + }" "${haskellSnippetsExpectedContent}" ''; } diff --git a/tests/modules/programs/vscode/tasks.nix b/tests/modules/programs/vscode/tasks.nix index ea85b3d6c..8f91805cd 100644 --- a/tests/modules/programs/vscode/tasks.nix +++ b/tests/modules/programs/vscode/tasks.nix @@ -1,11 +1,16 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: let - tasksFilePath = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/tasks.json" - else - ".config/Code/User/tasks.json"; + tasksFilePath = name: + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Application Support/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }tasks.json" + else + ".config/Code/User/${ + lib.optionalString (name != "default") "profiles/${name}/" + }tasks.json"; tasks = { version = "2.0.0"; @@ -33,11 +38,18 @@ in { programs.vscode = { enable = true; package = pkgs.writeScriptBin "vscode" "" // { pname = "vscode"; }; - userTasks = tasks; + defaultProfile.userTasks = tasks; + profiles = [{ + name = "test"; + userTasks = tasks; + }]; }; nmt.script = '' - assertFileExists "home-files/${tasksFilePath}" - assertFileContent "home-files/${tasksFilePath}" "${expectedTasks}" + assertFileExists "home-files/${tasksFilePath "default"}" + assertFileContent "home-files/${tasksFilePath "default"}" "${expectedTasks}" + + assertFileExists "home-files/${tasksFilePath "test"}" + assertFileContent "home-files/${tasksFilePath "test"}" "${expectedTasks}" ''; }