From d50975a0230f584ee8918f94da8dbe92fee04233 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Jun 2026 16:26:28 +0000 Subject: [PATCH 1/2] Initial plan From 6dacdbf1dfc7c9c5cc9d96278a1397a45b2837d5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Jun 2026 16:33:23 +0000 Subject: [PATCH 2/2] Fix string overloads of EditorExtensionServiceProvider.GetService() on .NET --- .../Api/EditorExtensionServiceProvider.cs | 2 +- .../EditorExtensionServiceProviderTests.cs | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 test/PowerShellEditorServices.Test/Extensions/EditorExtensionServiceProviderTests.cs diff --git a/src/PowerShellEditorServices/Extensions/Api/EditorExtensionServiceProvider.cs b/src/PowerShellEditorServices/Extensions/Api/EditorExtensionServiceProvider.cs index d750923fb..2b62353ef 100644 --- a/src/PowerShellEditorServices/Extensions/Api/EditorExtensionServiceProvider.cs +++ b/src/PowerShellEditorServices/Extensions/Api/EditorExtensionServiceProvider.cs @@ -116,7 +116,7 @@ public object GetServiceByAssemblyQualifiedName(string asmQualifiedTypeName) { using (EnterPsesAlcReflectionContext()) { - serviceType = s_psesAsm.GetType(asmQualifiedTypeName); + serviceType = Type.GetType(asmQualifiedTypeName); } } else diff --git a/test/PowerShellEditorServices.Test/Extensions/EditorExtensionServiceProviderTests.cs b/test/PowerShellEditorServices.Test/Extensions/EditorExtensionServiceProviderTests.cs new file mode 100644 index 000000000..0f86bb54f --- /dev/null +++ b/test/PowerShellEditorServices.Test/Extensions/EditorExtensionServiceProviderTests.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.PowerShell.EditorServices.Extensions.Services; +using Microsoft.PowerShell.EditorServices.Services.Extension; +using Microsoft.PowerShell.EditorServices.Services.PowerShell.Host; +using Microsoft.PowerShell.EditorServices.Test; +using Xunit; +using WorkspaceService = Microsoft.PowerShell.EditorServices.Services.WorkspaceService; + +namespace PowerShellEditorServices.Test.Extensions +{ + [Trait("Category", "Extensions")] + public class EditorExtensionServiceProviderTests : IAsyncLifetime + { + private PsesInternalHost psesHost; + + private WorkspaceService workspaceService; + + private EditorExtensionServiceProvider serviceProvider; + + public async Task InitializeAsync() + { + psesHost = await PsesHostFactory.Create(NullLoggerFactory.Instance); + + ExtensionService extensionService = new( + languageServer: null, + serviceProvider: null, + editorOperations: null, + executionService: psesHost); + await extensionService.InitializeAsync(); + + workspaceService = new WorkspaceService(NullLoggerFactory.Instance); + + ServiceCollection services = new(); + services.AddSingleton(extensionService); + services.AddSingleton(workspaceService); + + serviceProvider = new EditorExtensionServiceProvider(services.BuildServiceProvider()); + } + + public async Task DisposeAsync() => await psesHost.StopAsync(); + + [Fact] + public void GetServiceByFullTypeNameReturnsService() => + Assert.Same( + workspaceService, + serviceProvider.GetService("Microsoft.PowerShell.EditorServices.Services.WorkspaceService")); + + [Fact] + public void GetServiceByTypeNameAndAssemblyNameReturnsService() => + Assert.Same( + workspaceService, + serviceProvider.GetService( + "Microsoft.PowerShell.EditorServices.Services.WorkspaceService", + "Microsoft.PowerShell.EditorServices")); + + [Fact] + public void GetServiceByAssemblyQualifiedNameReturnsService() => + Assert.Same( + workspaceService, + serviceProvider.GetServiceByAssemblyQualifiedName( + "Microsoft.PowerShell.EditorServices.Services.WorkspaceService, Microsoft.PowerShell.EditorServices")); + } +}