|
21 | 21 |
|
22 | 22 | import com.google.gson.Gson; |
23 | 23 | import com.google.gson.JsonElement; |
| 24 | +import com.google.gson.JsonNull; |
24 | 25 | import com.google.gson.JsonObject; |
25 | 26 | import com.google.gson.JsonPrimitive; |
26 | 27 | import java.io.File; |
@@ -731,10 +732,10 @@ void shouldUpdateAnalyzerProperties() { |
731 | 732 | sonarLintSettings.add("disableTelemetry", new JsonPrimitive(false)); |
732 | 733 | sonarLintSettings.add("focusOnNewCode", new JsonPrimitive(true)); |
733 | 734 | Map<String, Object> settingsMap = new HashMap<>(Map.of(SONARLINT_CONFIGURATION_NAMESPACE, sonarLintSettings, |
734 | | - DOTNET_DEFAULT_SOLUTION_PATH, "Roslyn.sln", |
735 | | - OMNISHARP_USE_MODERN_NET, "true", |
736 | | - OMNISHARP_LOAD_PROJECT_ON_DEMAND, "false", |
737 | | - OMNISHARP_PROJECT_LOAD_TIMEOUT, "600")); |
| 735 | + DOTNET_DEFAULT_SOLUTION_PATH, new JsonPrimitive("Roslyn.sln"), |
| 736 | + OMNISHARP_USE_MODERN_NET, new JsonPrimitive("true"), |
| 737 | + OMNISHARP_LOAD_PROJECT_ON_DEMAND, new JsonPrimitive("false"), |
| 738 | + OMNISHARP_PROJECT_LOAD_TIMEOUT, new JsonPrimitive("600"))); |
738 | 739 |
|
739 | 740 | var result = SettingsManager.updateProperties(workspaceUri, settingsMap); |
740 | 741 |
|
@@ -762,10 +763,10 @@ void shouldAddVSCodeExcludesInFileExclusions() { |
762 | 763 | sonarLintSettings.add("disableTelemetry", new JsonPrimitive(false)); |
763 | 764 | sonarLintSettings.add("focusOnNewCode", new JsonPrimitive(true)); |
764 | 765 | Map<String, Object> settingsMap = new HashMap<>(Map.of(SONARLINT_CONFIGURATION_NAMESPACE, sonarLintSettings, |
765 | | - DOTNET_DEFAULT_SOLUTION_PATH, "Roslyn.sln", |
766 | | - OMNISHARP_USE_MODERN_NET, "true", |
767 | | - OMNISHARP_LOAD_PROJECT_ON_DEMAND, "false", |
768 | | - OMNISHARP_PROJECT_LOAD_TIMEOUT, "600", |
| 766 | + DOTNET_DEFAULT_SOLUTION_PATH, new JsonPrimitive("Roslyn.sln"), |
| 767 | + OMNISHARP_USE_MODERN_NET, new JsonPrimitive("true"), |
| 768 | + OMNISHARP_LOAD_PROJECT_ON_DEMAND, new JsonPrimitive("false"), |
| 769 | + OMNISHARP_PROJECT_LOAD_TIMEOUT, new JsonPrimitive("600"), |
769 | 770 | VSCODE_FILE_EXCLUDES, vscodeExclusions)); |
770 | 771 |
|
771 | 772 | var result = SettingsManager.updateProperties(workspaceUri, settingsMap); |
@@ -823,6 +824,69 @@ void shouldNotNotifyAboutNodeJsChange() { |
823 | 824 | verify(backendService, never()).didChangeClientNodeJsPath(any()); |
824 | 825 | } |
825 | 826 |
|
| 827 | + @Test |
| 828 | + void shouldUpdatePropertiesWithDefaultValuesWhenNullSettings() { |
| 829 | + var workspaceUri = URI.create("file:///User/user/documents/project"); |
| 830 | + var sonarLintSettings = new JsonObject(); |
| 831 | + sonarLintSettings.add("disableTelemetry", new JsonPrimitive(false)); |
| 832 | + sonarLintSettings.add("focusOnNewCode", new JsonPrimitive(true)); |
| 833 | + Map<String, Object> settingsMap = new HashMap<>(Map.of(SONARLINT_CONFIGURATION_NAMESPACE, sonarLintSettings, |
| 834 | + DOTNET_DEFAULT_SOLUTION_PATH, JsonNull.INSTANCE, |
| 835 | + OMNISHARP_USE_MODERN_NET, JsonNull.INSTANCE, |
| 836 | + OMNISHARP_LOAD_PROJECT_ON_DEMAND, JsonNull.INSTANCE, |
| 837 | + OMNISHARP_PROJECT_LOAD_TIMEOUT, JsonNull.INSTANCE)); |
| 838 | + |
| 839 | + var result = SettingsManager.updateProperties(workspaceUri, settingsMap); |
| 840 | + |
| 841 | + var analyzerProperties = (Map<String, String>) result.get(ANALYZER_PROPERTIES); |
| 842 | + assertThat(analyzerProperties).contains(entry("sonar.cs.internal.useNet6", "true"), |
| 843 | + entry("sonar.cs.internal.loadProjectOnDemand", "false"), |
| 844 | + entry("sonar.cs.internal.loadProjectsTimeout", "60")); |
| 845 | + assertThat(analyzerProperties.get("sonar.cs.internal.solutionPath")).isNull(); |
| 846 | + } |
| 847 | + |
| 848 | + @Test |
| 849 | + void shouldUpdatePropertiesWithDefaultValuesWhenEmptySettings() { |
| 850 | + var workspaceUri = URI.create("file:///User/user/documents/project"); |
| 851 | + var sonarLintSettings = new JsonObject(); |
| 852 | + sonarLintSettings.add("disableTelemetry", new JsonPrimitive(false)); |
| 853 | + sonarLintSettings.add("focusOnNewCode", new JsonPrimitive(true)); |
| 854 | + Map<String, Object> settingsMap = new HashMap<>(Map.of(SONARLINT_CONFIGURATION_NAMESPACE, sonarLintSettings, |
| 855 | + DOTNET_DEFAULT_SOLUTION_PATH, new JsonPrimitive(""), |
| 856 | + OMNISHARP_USE_MODERN_NET, new JsonPrimitive(""), |
| 857 | + OMNISHARP_LOAD_PROJECT_ON_DEMAND, new JsonPrimitive(""), |
| 858 | + OMNISHARP_PROJECT_LOAD_TIMEOUT, new JsonPrimitive(""))); |
| 859 | + |
| 860 | + var result = SettingsManager.updateProperties(workspaceUri, settingsMap); |
| 861 | + |
| 862 | + var analyzerProperties = (Map<String, String>) result.get(ANALYZER_PROPERTIES); |
| 863 | + assertThat(analyzerProperties).contains(entry("sonar.cs.internal.useNet6", "true"), |
| 864 | + entry("sonar.cs.internal.loadProjectOnDemand", "false"), |
| 865 | + entry("sonar.cs.internal.loadProjectsTimeout", "60")); |
| 866 | + assertThat(analyzerProperties.get("sonar.cs.internal.solutionPath")).isNull(); |
| 867 | + } |
| 868 | + |
| 869 | + @Test |
| 870 | + void shouldUpdatePropertiesWithDefaultValuesWhenParsingFails() { |
| 871 | + var workspaceUri = URI.create("file:///User/user/documents/project"); |
| 872 | + var sonarLintSettings = new JsonObject(); |
| 873 | + sonarLintSettings.add("disableTelemetry", new JsonPrimitive(false)); |
| 874 | + sonarLintSettings.add("focusOnNewCode", new JsonPrimitive(true)); |
| 875 | + Map<String, Object> settingsMap = new HashMap<>(Map.of(SONARLINT_CONFIGURATION_NAMESPACE, sonarLintSettings, |
| 876 | + DOTNET_DEFAULT_SOLUTION_PATH, new JsonObject(), |
| 877 | + OMNISHARP_USE_MODERN_NET, new JsonObject(), |
| 878 | + OMNISHARP_LOAD_PROJECT_ON_DEMAND, new JsonObject(), |
| 879 | + OMNISHARP_PROJECT_LOAD_TIMEOUT, new JsonObject())); |
| 880 | + |
| 881 | + var result = SettingsManager.updateProperties(workspaceUri, settingsMap); |
| 882 | + |
| 883 | + var analyzerProperties = (Map<String, String>) result.get(ANALYZER_PROPERTIES); |
| 884 | + assertThat(analyzerProperties).contains(entry("sonar.cs.internal.useNet6", "true"), |
| 885 | + entry("sonar.cs.internal.loadProjectOnDemand", "false"), |
| 886 | + entry("sonar.cs.internal.loadProjectsTimeout", "60")); |
| 887 | + assertThat(analyzerProperties.get("sonar.cs.internal.solutionPath")).isNull(); |
| 888 | + } |
| 889 | + |
826 | 890 | private static Map<String, Object> fromJsonString(String json) { |
827 | 891 | return Utils.parseToMap(new Gson().fromJson(json, JsonElement.class)); |
828 | 892 | } |
|
0 commit comments