| File: ExtensionFramework\TestLoggerExtensionManager.cs | Web Access |
| Project: src\vstest\src\Microsoft.TestPlatform.Common\Microsoft.TestPlatform.Common.csproj (Microsoft.VisualStudio.TestPlatform.Common) |
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; namespace Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; /// <summary> /// Manages loading and provides access to logging extensions implementing the /// ITestLogger interface. /// </summary> internal class TestLoggerExtensionManager : TestExtensionManager<ITestLogger, ITestLoggerCapabilities> { /// <summary> /// Initializes a new instance of the <see cref="TestLoggerExtensionManager"/> class. /// </summary> /// <param name="unfilteredTestExtensions"> /// The unfiltered Test Extensions. /// </param> /// <param name="testExtensions"> /// The test Extensions. /// </param> /// <param name="logger"> /// The logger. /// </param> /// <remarks> /// The constructor is not public because the factory method should be used to get instances of this class. /// </remarks> protected TestLoggerExtensionManager( IEnumerable<LazyExtension<ITestLogger, Dictionary<string, object>>> unfilteredTestExtensions, IEnumerable<LazyExtension<ITestLogger, ITestLoggerCapabilities>> testExtensions, IMessageLogger logger) : base(unfilteredTestExtensions, testExtensions, logger) { } /// <summary> /// Gets an instance of the TestLoggerExtensionManager. /// </summary> /// <param name="messageLogger"> /// The message Logger. /// </param> /// <returns> /// The TestLoggerExtensionManager. /// </returns> public static TestLoggerExtensionManager Create(IMessageLogger messageLogger) { TestPluginManager.GetSpecificTestExtensions<TestLoggerPluginInformation, ITestLogger, ITestLoggerCapabilities, TestLoggerMetadata>( TestPlatformConstants.TestLoggerEndsWithPattern, out IEnumerable<LazyExtension<ITestLogger, Dictionary<string, object>>> unfilteredTestExtensions, out IEnumerable<LazyExtension<ITestLogger, ITestLoggerCapabilities>> filteredTestExtensions); return new TestLoggerExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); } } /// <summary> /// Hold data about the Test logger. /// </summary> public class TestLoggerMetadata : ITestLoggerCapabilities { /// <summary> /// Constructor for TestLoggerMetadata /// </summary> /// <param name="extension"> /// Uri identifying the logger. /// </param> /// <param name="friendlyName"> /// The friendly Name. /// </param> public TestLoggerMetadata(string extension, string friendlyName) { ExtensionUri = extension; FriendlyName = friendlyName; } /// <summary> /// Gets Uri identifying the logger. /// </summary> public string ExtensionUri { get; private set; } /// <summary> /// Gets Friendly Name identifying the logger. /// </summary> public string FriendlyName { get; private set; } }