| File: Processors\ArtifactProcessingCollectModeProcessor.cs | Web Access |
| Project: src\vstest\src\vstest.console\vstest.console.csproj (vstest.console) |
// 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; using Microsoft.VisualStudio.TestPlatform.ObjectModel; namespace Microsoft.VisualStudio.TestPlatform.CommandLine.Processors; /// <summary> /// Argument Processor for the "--artifactsProcessingMode-collect|/ArtifactsProcessingMode-Collect" command line argument. /// </summary> internal class ArtifactProcessingCollectModeProcessor : IArgumentProcessor { /// <summary> /// The name of the command line argument that the ArtifactProcessingModeProcessor handles. /// </summary> public const string CommandName = "/ArtifactsProcessingMode-Collect"; private Lazy<IArgumentProcessorCapabilities>? _metadata; private Lazy<IArgumentExecutor>? _executor; private readonly CommandLineOptions _commandLineOptions; public ArtifactProcessingCollectModeProcessor(CommandLineOptions commandLineOptions) { _commandLineOptions = commandLineOptions; } /// <summary> /// Gets the metadata. /// </summary> public Lazy<IArgumentProcessorCapabilities> Metadata => _metadata ??= new Lazy<IArgumentProcessorCapabilities>(() => new ArtifactProcessingCollectModeProcessorCapabilities()); /// <summary> /// Gets or sets the executor. /// </summary> public Lazy<IArgumentExecutor>? Executor { get => _executor ??= new Lazy<IArgumentExecutor>(() => new ArtifactProcessingCollectModeProcessorExecutor(_commandLineOptions)); set => _executor = value; } } internal class ArtifactProcessingCollectModeProcessorCapabilities : BaseArgumentProcessorCapabilities { public override string CommandName => ArtifactProcessingCollectModeProcessor.CommandName; public override bool AllowMultiple => false; // We put priority at the same level of the argument processor for runsettings passed as argument through cli. // We'll be sure to run before test run arg processor. public override ArgumentProcessorPriority Priority => ArgumentProcessorPriority.CliRunSettings; public override HelpContentPriority HelpPriority => HelpContentPriority.None; // We want to be sure that this command won't show in user help public override string? HelpContentResourceName => null; } internal enum ArtifactProcessingMode { None, Collect, PostProcess } /// <summary> /// Argument Executor for the "/ArtifactsProcessingMode-Collect" command line argument. /// </summary> internal class ArtifactProcessingCollectModeProcessorExecutor : IArgumentExecutor { private readonly CommandLineOptions _commandLineOptions; public ArtifactProcessingCollectModeProcessorExecutor(CommandLineOptions options) { _commandLineOptions = options ?? throw new ArgumentNullException(nameof(options)); } public void Initialize(string? _) { _commandLineOptions.ArtifactProcessingMode = ArtifactProcessingMode.Collect; EqtTrace.Verbose($"ArtifactProcessingPostProcessModeProcessorExecutor.Initialize: ArtifactProcessingMode.Collect"); } public ArgumentProcessorResult Execute() => ArgumentProcessorResult.Success; }