From 67656169d08e17855e369f700e050f7e53e83104 Mon Sep 17 00:00:00 2001 From: nohwnd Date: Mon, 27 Jan 2020 20:13:02 +0100 Subject: [PATCH 01/13] Run single test in Pester v5 --- .../Services/CodeLens/PesterCodeLensProvider.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index d927dd90e..67c99ba68 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -42,9 +42,10 @@ public PesterCodeLensProvider() /// All CodeLenses for the given Pester symbol. private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile scriptFile) { - + var word = pesterSymbol.Command == PesterCommandType.It ? "test" : "tests"; var codeLensResults = new CodeLens[] { + new CodeLens() { Range = pesterSymbol.ScriptRegion.ToRange(), @@ -55,7 +56,7 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile Command = new Command() { Name = "PowerShell.RunPesterTests", - Title = "Run tests", + Title = $"Run {word}", Arguments = JArray.FromObject(new object[] { scriptFile.DocumentUri, false /* No debug */, @@ -74,7 +75,7 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile Command = new Command() { Name = "PowerShell.RunPesterTests", - Title = "Debug tests", + Title = $"Debug {word}", Arguments = JArray.FromObject(new object[] { scriptFile.DocumentUri, true /* No debug */, @@ -99,11 +100,6 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) { if (symbol is PesterSymbolReference pesterSymbol) { - if (pesterSymbol.Command != PesterCommandType.Describe) - { - continue; - } - lenses.AddRange(GetPesterLens(pesterSymbol, scriptFile)); } } From 021ff0638c19ae749546f620198b462e736548f6 Mon Sep 17 00:00:00 2001 From: nohwnd Date: Sat, 8 Feb 2020 15:29:42 +0100 Subject: [PATCH 02/13] Add opt-in for Pester v5 code lens --- .../CodeLens/PesterCodeLensProvider.cs | 12 +++++++-- .../TextDocument/Handlers/CodeLensHandlers.cs | 4 ++- .../Workspace/LanguageServerSettings.cs | 25 +++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index 67c99ba68..95a490db0 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -3,7 +3,9 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // +using System; using System.Collections.Generic; +using Microsoft.PowerShell.EditorServices.Services; using Microsoft.PowerShell.EditorServices.Services.Symbols; using Microsoft.PowerShell.EditorServices.Services.TextDocument; using Microsoft.PowerShell.EditorServices.Utility; @@ -14,6 +16,7 @@ namespace Microsoft.PowerShell.EditorServices.CodeLenses { internal class PesterCodeLensProvider : ICodeLensProvider { + private readonly ConfigurationService _configurationService; /// /// The symbol provider to get symbols from to build code lenses with. @@ -29,8 +32,9 @@ internal class PesterCodeLensProvider : ICodeLensProvider /// /// Create a new Pester CodeLens provider for a given editor session. /// - public PesterCodeLensProvider() + public PesterCodeLensProvider(ConfigurationService configurationService) { + _configurationService = configurationService; _symbolProvider = new PesterDocumentSymbolProvider(); } @@ -100,7 +104,11 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) { if (symbol is PesterSymbolReference pesterSymbol) { - lenses.AddRange(GetPesterLens(pesterSymbol, scriptFile)); + if (_configurationService.CurrentSettings.Pester.Pester5CodeLens + || pesterSymbol.Command == PesterCommandType.Describe) + { + lenses.AddRange(GetPesterLens(pesterSymbol, scriptFile)); + } } } diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs index 3eab5a280..597529807 100644 --- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs +++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs @@ -27,14 +27,16 @@ internal class CodeLensHandlers : ICodeLensHandler, ICodeLensResolveHandler private readonly ILogger _logger; private readonly SymbolsService _symbolsService; private readonly WorkspaceService _workspaceService; + private readonly ConfigurationService _configurationService; private CodeLensCapability _capability; - public CodeLensHandlers(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService) + public CodeLensHandlers(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService, ConfigurationService configurationService) { _logger = factory.CreateLogger(); _workspaceService = workspaceService; _symbolsService = symbolsService; + _configurationService = configurationService; } CodeLensRegistrationOptions IRegistration.GetRegistrationOptions() diff --git a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs index 50902935e..f7ab323dd 100644 --- a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs +++ b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs @@ -26,11 +26,14 @@ internal class LanguageServerSettings public CodeFoldingSettings CodeFolding { get; set; } + public PesterSettings Pester { get; set; } + public LanguageServerSettings() { this.ScriptAnalysis = new ScriptAnalysisSettings(); this.CodeFormatting = new CodeFormattingSettings(); this.CodeFolding = new CodeFoldingSettings(); + this.Pester = new PesterSettings(); } public void Update( @@ -49,6 +52,7 @@ public void Update( logger); this.CodeFormatting = new CodeFormattingSettings(settings.CodeFormatting); this.CodeFolding.Update(settings.CodeFolding, logger); + this.Pester = new PesterSettings(settings.Pester); } } } @@ -356,6 +360,27 @@ public void Update( } } + /// + /// Pester settings + /// + public class PesterSettings + { + public PesterSettings() + { + + } + + public PesterSettings(PesterSettings settings) + { + Pester5CodeLens = settings.Pester5CodeLens; + } + + /// + /// Whether integration features specific to Pester v5 are enabled + /// + public bool Pester5CodeLens { get; set; } = false; + } + /// /// Additional settings from the Language Client that affect Language Server operations but /// do not exist under the 'powershell' section From f0732543967bda2ad62ae61fce766a26823de91b Mon Sep 17 00:00:00 2001 From: nohwnd Date: Sat, 8 Feb 2020 15:37:41 +0100 Subject: [PATCH 03/13] Fix code quality issues --- .../Services/TextDocument/Handlers/CodeLensHandlers.cs | 1 - .../Services/Workspace/LanguageServerSettings.cs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs index 597529807..4e1ecdc82 100644 --- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs +++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs @@ -27,7 +27,6 @@ internal class CodeLensHandlers : ICodeLensHandler, ICodeLensResolveHandler private readonly ILogger _logger; private readonly SymbolsService _symbolsService; private readonly WorkspaceService _workspaceService; - private readonly ConfigurationService _configurationService; private CodeLensCapability _capability; diff --git a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs index f7ab323dd..9045822cb 100644 --- a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs +++ b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs @@ -378,7 +378,7 @@ public PesterSettings(PesterSettings settings) /// /// Whether integration features specific to Pester v5 are enabled /// - public bool Pester5CodeLens { get; set; } = false; + public bool Pester5CodeLens { get; set; } } /// From 86122f17f404e439295668e0c0cf24a485ac1689 Mon Sep 17 00:00:00 2001 From: nohwnd Date: Sat, 8 Feb 2020 15:39:47 +0100 Subject: [PATCH 04/13] Fix nitpicky new line --- .../Services/CodeLens/PesterCodeLensProvider.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index 95a490db0..31c902cb0 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -49,7 +49,6 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile var word = pesterSymbol.Command == PesterCommandType.It ? "test" : "tests"; var codeLensResults = new CodeLens[] { - new CodeLens() { Range = pesterSymbol.ScriptRegion.ToRange(), From 0bed5b3e06133c8ab430a9a8bcf3a254041509ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Sun, 9 Feb 2020 10:41:16 +0100 Subject: [PATCH 05/13] Update src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs Co-Authored-By: Robert Holt --- .../Services/CodeLens/PesterCodeLensProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index 31c902cb0..3c705b774 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -46,7 +46,7 @@ public PesterCodeLensProvider(ConfigurationService configurationService) /// All CodeLenses for the given Pester symbol. private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile scriptFile) { - var word = pesterSymbol.Command == PesterCommandType.It ? "test" : "tests"; + string word = pesterSymbol.Command == PesterCommandType.It ? "test" : "tests"; var codeLensResults = new CodeLens[] { new CodeLens() From c323143c5cb0cd55291023144e9fba672518e0c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Sun, 9 Feb 2020 10:41:24 +0100 Subject: [PATCH 06/13] Update src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs Co-Authored-By: Robert Holt --- .../Services/Workspace/LanguageServerSettings.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs index 9045822cb..08815b766 100644 --- a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs +++ b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs @@ -367,7 +367,6 @@ public class PesterSettings { public PesterSettings() { - } public PesterSettings(PesterSettings settings) From 6f4b55cfa6cfd3d14fb606b4850addad23d3dfcc Mon Sep 17 00:00:00 2001 From: nohwnd Date: Thu, 13 Feb 2020 11:18:01 +0100 Subject: [PATCH 07/13] Address PR feedback --- .../Services/CodeLens/PesterCodeLensProvider.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index 3c705b774..82c97eb78 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -101,14 +101,18 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) var lenses = new List(); foreach (SymbolReference symbol in _symbolProvider.ProvideDocumentSymbols(scriptFile)) { - if (symbol is PesterSymbolReference pesterSymbol) + if (!(symbol is PesterSymbolReference pesterSymbol)) { - if (_configurationService.CurrentSettings.Pester.Pester5CodeLens - || pesterSymbol.Command == PesterCommandType.Describe) - { - lenses.AddRange(GetPesterLens(pesterSymbol, scriptFile)); - } + continue; + } + + if (!_configurationService.CurrentSettings.Pester.Pester5CodeLens + && pesterSymbol.Command != PesterCommandType.Describe) + { + continue; } + + lenses.AddRange(GetPesterLens(pesterSymbol, scriptFile)); } return lenses.ToArray(); From f04d06e88bf01679e33fd85290afbe39ed4773f0 Mon Sep 17 00:00:00 2001 From: nohwnd Date: Wed, 11 Mar 2020 17:00:32 +0100 Subject: [PATCH 08/13] Rename option to EnableLegacyCodeLens --- .../Services/CodeLens/PesterCodeLensProvider.cs | 2 +- .../Services/Workspace/LanguageServerSettings.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index 82c97eb78..d3fdc6fa2 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -106,7 +106,7 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) continue; } - if (!_configurationService.CurrentSettings.Pester.Pester5CodeLens + if (!_configurationService.CurrentSettings.Pester.EnableLegacyCodeLens && pesterSymbol.Command != PesterCommandType.Describe) { continue; diff --git a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs index 08815b766..1758eec0c 100644 --- a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs +++ b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs @@ -371,13 +371,13 @@ public PesterSettings() public PesterSettings(PesterSettings settings) { - Pester5CodeLens = settings.Pester5CodeLens; + EnableLegacyCodeLens = settings.EnableLegacyCodeLens; } /// /// Whether integration features specific to Pester v5 are enabled /// - public bool Pester5CodeLens { get; set; } + public bool EnableLegacyCodeLens { get; set; } } /// From d3329914ed9332d3cec1e5d1292e8e9494fae880 Mon Sep 17 00:00:00 2001 From: nohwnd Date: Wed, 11 Mar 2020 17:17:19 +0100 Subject: [PATCH 09/13] Flip the option because it defaults to true --- .../Services/CodeLens/PesterCodeLensProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index d3fdc6fa2..c932bbf14 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -106,7 +106,7 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) continue; } - if (!_configurationService.CurrentSettings.Pester.EnableLegacyCodeLens + if (_configurationService.CurrentSettings.Pester.EnableLegacyCodeLens && pesterSymbol.Command != PesterCommandType.Describe) { continue; From 1d949af4d8e8a4a6da28bf981e87affa581233ce Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Wed, 11 Mar 2020 17:09:15 -0700 Subject: [PATCH 10/13] pass in config service to provider --- .../Services/Symbols/SymbolsService.cs | 5 +++-- .../Services/TextDocument/Handlers/CodeLensHandlers.cs | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs b/src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs index b9e959f87..65ad2fb07 100644 --- a/src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs +++ b/src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs @@ -51,7 +51,8 @@ internal class SymbolsService public SymbolsService( ILoggerFactory factory, PowerShellContextService powerShellContextService, - WorkspaceService workspaceService) + WorkspaceService workspaceService, + ConfigurationService configurationService) { _logger = factory.CreateLogger(); _powerShellContextService = powerShellContextService; @@ -61,7 +62,7 @@ public SymbolsService( var codeLensProviders = new ICodeLensProvider[] { new ReferencesCodeLensProvider(_workspaceService, this), - new PesterCodeLensProvider(), + new PesterCodeLensProvider(configurationService), }; foreach (ICodeLensProvider codeLensProvider in codeLensProviders) { diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs index 4e1ecdc82..334b4b913 100644 --- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs +++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs @@ -35,7 +35,6 @@ public CodeLensHandlers(ILoggerFactory factory, SymbolsService symbolsService, W _logger = factory.CreateLogger(); _workspaceService = workspaceService; _symbolsService = symbolsService; - _configurationService = configurationService; } CodeLensRegistrationOptions IRegistration.GetRegistrationOptions() From c24f77d535fa2f4c703972a00904c10cef01f842 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Wed, 11 Mar 2020 17:28:08 -0700 Subject: [PATCH 11/13] add new ConfigurationService to tests --- .../Language/LanguageServiceTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs b/test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs index b18123862..9cd3a786e 100644 --- a/test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs +++ b/test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs @@ -46,7 +46,7 @@ public LanguageServiceTests() var logger = NullLogger.Instance; powerShellContext = PowerShellContextFactory.Create(logger); workspace = new WorkspaceService(NullLoggerFactory.Instance); - symbolsService = new SymbolsService(NullLoggerFactory.Instance, powerShellContext, workspace); + symbolsService = new SymbolsService(NullLoggerFactory.Instance, powerShellContext, workspace, new ConfigurationService()); completionHandler = new CompletionHandler(NullLoggerFactory.Instance, powerShellContext, workspace); } From ada0d2f1818cbf8726a4b94fa32fd85ba8888186 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 12 Mar 2020 09:35:48 -0700 Subject: [PATCH 12/13] add new test --- .../LSPTestsFixures.cs | 6 +- .../LanguageServerProtocolMessageTests.cs | 128 +++++++++++++++++- 2 files changed, 124 insertions(+), 10 deletions(-) diff --git a/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs b/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs index 7121a71e8..b59101e87 100644 --- a/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs +++ b/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs @@ -32,9 +32,9 @@ public async override Task CustomInitializeAsync( // Make sure Script Analysis is enabled because we'll need it in the tests. LanguageClient.Workspace.DidChangeConfiguration(JObject.Parse(@" { - ""PowerShell"": { - ""ScriptAnalysis"": { - ""Enable"": true + ""powershell"": { + ""scriptAnalysis"": { + ""enable"": true } } } diff --git a/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs b/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs index 0c1e4afe7..afb4d7e3c 100644 --- a/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs +++ b/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs @@ -198,9 +198,9 @@ public async Task CanReceiveDiagnosticsFromConfigurationChange() { Settings = JToken.Parse(@" { - ""PowerShell"": { - ""ScriptAnalysis"": { - ""Enable"": false + ""powershell"": { + ""scriptAnalysis"": { + ""enable"": false } } } @@ -216,9 +216,9 @@ public async Task CanReceiveDiagnosticsFromConfigurationChange() { Settings = JToken.Parse(@" { - ""PowerShell"": { - ""ScriptAnalysis"": { - ""Enable"": true + ""powershell"": { + ""scriptAnalysis"": { + ""enable"": true } } } @@ -550,8 +550,19 @@ await LanguageClient.SendRequest( } [Fact] - public async Task CanSendPesterCodeLensRequest() + public async Task CanSendPesterLegacyCodeLensRequest() { + // Make sure LegacyCodeLens is enabled because we'll need it in this test. + LanguageClient.Workspace.DidChangeConfiguration(JObject.Parse(@" +{ + ""powershell"": { + ""pester"": { + ""enableLegacyCodeLens"": true + } + } +} +")); + string filePath = NewTestFile(@" Describe 'DescribeName' { Context 'ContextName' { @@ -597,6 +608,109 @@ public async Task CanSendPesterCodeLensRequest() }); } + [Fact] + public async Task CanSendPesterCodeLensRequest() + { + // Make sure Pester legacy CodeLens is disabled because we'll need it in this test. + LanguageClient.Workspace.DidChangeConfiguration(JObject.Parse(@" + { + ""powershell"": { + ""pester"": { + ""enableLegacyCodeLens"": false + } + } + } + ")); + + string filePath = NewTestFile(@" +Describe 'DescribeName' { + Context 'ContextName' { + It 'ItName' { + 1 | Should - Be 1 + } + } +} +", isPester: true); + + CodeLensContainer codeLenses = await LanguageClient.SendRequest( + "textDocument/codeLens", + new CodeLensParams + { + TextDocument = new TextDocumentIdentifier + { + Uri = new Uri(filePath) + } + }); + + Assert.Collection(codeLenses, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(1, range.Start.Line); + Assert.Equal(0, range.Start.Character); + Assert.Equal(7, range.End.Line); + Assert.Equal(1, range.End.Character); + + Assert.Equal("Run tests", codeLens.Command.Title); + }, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(1, range.Start.Line); + Assert.Equal(0, range.Start.Character); + Assert.Equal(7, range.End.Line); + Assert.Equal(1, range.End.Character); + + Assert.Equal("Debug tests", codeLens.Command.Title); + }, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(2, range.Start.Line); + Assert.Equal(4, range.Start.Character); + Assert.Equal(6, range.End.Line); + Assert.Equal(5, range.End.Character); + + Assert.Equal("Run tests", codeLens.Command.Title); + }, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(2, range.Start.Line); + Assert.Equal(4, range.Start.Character); + Assert.Equal(6, range.End.Line); + Assert.Equal(5, range.End.Character); + + Assert.Equal("Debug tests", codeLens.Command.Title); + }, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(3, range.Start.Line); + Assert.Equal(8, range.Start.Character); + Assert.Equal(5, range.End.Line); + Assert.Equal(9, range.End.Character); + + Assert.Equal("Run test", codeLens.Command.Title); + }, + codeLens => + { + Range range = codeLens.Range; + + Assert.Equal(3, range.Start.Line); + Assert.Equal(8, range.Start.Character); + Assert.Equal(5, range.End.Line); + Assert.Equal(9, range.End.Character); + + Assert.Equal("Debug test", codeLens.Command.Title); + }); + } + [Fact] public async Task CanSendReferencesCodeLensRequest() { From 33b78815f7a7490a3a1f68f0abe01fb54301856d Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 12 Mar 2020 11:41:09 -0700 Subject: [PATCH 13/13] change to use --- .../Services/CodeLens/PesterCodeLensProvider.cs | 2 +- .../Services/Workspace/LanguageServerSettings.cs | 4 ++-- .../LanguageServerProtocolMessageTests.cs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs index c932bbf14..421f11ead 100644 --- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs +++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs @@ -106,7 +106,7 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile) continue; } - if (_configurationService.CurrentSettings.Pester.EnableLegacyCodeLens + if (_configurationService.CurrentSettings.Pester.UseLegacyCodeLens && pesterSymbol.Command != PesterCommandType.Describe) { continue; diff --git a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs index 1758eec0c..14776c6e1 100644 --- a/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs +++ b/src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs @@ -371,13 +371,13 @@ public PesterSettings() public PesterSettings(PesterSettings settings) { - EnableLegacyCodeLens = settings.EnableLegacyCodeLens; + UseLegacyCodeLens = settings.UseLegacyCodeLens; } /// /// Whether integration features specific to Pester v5 are enabled /// - public bool EnableLegacyCodeLens { get; set; } + public bool UseLegacyCodeLens { get; set; } } /// diff --git a/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs b/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs index afb4d7e3c..8e1501814 100644 --- a/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs +++ b/test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs @@ -557,7 +557,7 @@ public async Task CanSendPesterLegacyCodeLensRequest() { ""powershell"": { ""pester"": { - ""enableLegacyCodeLens"": true + ""useLegacyCodeLens"": true } } } @@ -616,7 +616,7 @@ public async Task CanSendPesterCodeLensRequest() { ""powershell"": { ""pester"": { - ""enableLegacyCodeLens"": false + ""useLegacyCodeLens"": false } } }