/// <summary> /// Initializes a new instance of the <see cref="DiscoveryRequest"/> class. /// </summary> /// <param name="requestData">The Request Data instance providing services and data for discovery</param> /// <param name="criteria">Discovery criterion.</param> /// <param name="discoveryManager">Discovery manager instance.</param> /// <param name="dataSerializer">Data Serializer</param> internal DiscoveryRequest( IRequestData requestData, DiscoveryCriteria criteria, IProxyDiscoveryManager discoveryManager, ITestLoggerManager loggerManager, IDataSerializer dataSerializer) { this.requestData = requestData; this.DiscoveryCriteria = criteria; this.DiscoveryManager = discoveryManager; this.LoggerManager = loggerManager; this.dataSerializer = dataSerializer; }
private void SubscribeLogger(ITestLoggerManager currentLoggerManager, ITestLoggerManager vsTestLoggerManager) { if (vsTestLoggerManager == null) { System.Diagnostics.Trace.WriteLine("Here"); return; } ((TestLoggerManager)currentLoggerManager).loggerEvents.DiscoveredTests += (o, e) => { vsTestLoggerManager.HandleDiscoveredTests(e); }; ((TestLoggerManager)currentLoggerManager).loggerEvents.DiscoveryComplete += (o, e) => { vsTestLoggerManager.HandleDiscoveryComplete(e); }; ((TestLoggerManager)currentLoggerManager).loggerEvents.DiscoveryMessage += (o, e) => { vsTestLoggerManager.HandleDiscoveryMessage(e); }; ((TestLoggerManager)currentLoggerManager).loggerEvents.DiscoveryStart += (o, e) => { vsTestLoggerManager.HandleDiscoveryStart(e); }; //((TestLoggerManager)currentLoggerManager).loggerEvents.TestResult += (o, e) => //{ // vsTestLoggerManager.HandleTestRunComplete(e); //}; ((TestLoggerManager)currentLoggerManager).loggerEvents.TestRunComplete += (o, e) => { vsTestLoggerManager.HandleTestRunComplete(e); }; ((TestLoggerManager)currentLoggerManager).loggerEvents.TestRunMessage += (o, e) => { vsTestLoggerManager.HandleTestRunMessage(e); }; ((TestLoggerManager)currentLoggerManager).loggerEvents.TestRunStart += (o, e) => { vsTestLoggerManager.HandleTestRunStart(e); }; }
/// <summary> /// The output path is already set, return success. /// </summary> /// <returns> The <see cref="ArgumentProcessorResult"/> Success </returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { return(ArgumentProcessorResult.Success); }
/// <summary> /// Execute. /// </summary> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { // Nothing to do since we updated the parameter during initialize parameter return(ArgumentProcessorResult.Success); }
/// <summary> /// Execute specific tests that match any of the given strings. /// </summary> /// <returns></returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { Contract.Assert(this.output != null); Contract.Assert(this.commandLineOptions != null); Contract.Assert(this.testRequestManager != null); Contract.Assert(!string.IsNullOrWhiteSpace(this.runSettingsManager.ActiveRunSettings.SettingsXml)); if (!this.commandLineOptions.Sources.Any()) { throw new CommandLineException(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.MissingTestSourceFile)); } this.effectiveRunSettings = this.runSettingsManager.ActiveRunSettings.SettingsXml; ((TestRequestManager)this.testRequestManager).VSTestLoggerManager = this.VSTestLoggerManager = vsTestLogManager; // Discover tests from sources and filter on every discovery reported. this.DiscoverTestsAndSelectSpecified(this.commandLineOptions.Sources); this.testRequestManager.TestPlatformEventSourceInstance = testPlatformEventSource; // Now that tests are discovered and filtered, we run only those selected tests. this.ExecuteSelectedTests(); bool treatNoTestsAsError = RunSettingsUtilities.GetTreatNoTestsAsError(effectiveRunSettings); if (treatNoTestsAsError && this.selectedTestCases.Count == 0) { return(ArgumentProcessorResult.Fail); } return(ArgumentProcessorResult.Success); }
/// <summary> /// Initialize the design mode client. /// </summary> /// <returns> The <see cref="ArgumentProcessorResult.Success"/> if initialization is successful. </returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { try { this.designModeClient?.ConnectToClientAndProcessRequests(this.commandLineOptions.Port, this.testRequestManager); } catch (TimeoutException ex) { throw new CommandLineException(string.Format(CultureInfo.CurrentUICulture, string.Format(CommandLineResources.DesignModeClientTimeoutError, this.commandLineOptions.Port)), ex); } return(ArgumentProcessorResult.Success); }
/// <summary> /// ParentProcessId is already set, return success. /// </summary> /// <returns> The <see cref="ArgumentProcessorResult"/> Success </returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { // Nothing to do here, the work was done in initialization. return(ArgumentProcessorResult.Success); }
/// <summary> /// Executes the argument processor. /// </summary> /// <returns>The <see cref="ArgumentProcessorResult"/>.</returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { // Nothing to do since we updated the logger and data collector list in initialize return(ArgumentProcessorResult.Success); }
/// <summary> /// Initializes a new instance of the <see cref="DiscoveryRequest"/> class. /// </summary> /// <param name="requestData">The Request Data instance providing services and data for discovery</param> /// <param name="criteria">Discovery criterion.</param> /// <param name="discoveryManager">Discovery manager instance.</param> internal DiscoveryRequest(IRequestData requestData, DiscoveryCriteria criteria, IProxyDiscoveryManager discoveryManager, ITestLoggerManager loggerManager) : this(requestData, criteria, discoveryManager, loggerManager, JsonDataSerializer.Instance) { }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { Contract.Assert(this.output != null); Contract.Assert(this.commandLineOptions != null); Contract.Assert(!string.IsNullOrWhiteSpace(this.runSettingsManager?.ActiveRunSettings?.SettingsXml)); if (this.commandLineOptions.Sources.Count() <= 0) { throw new CommandLineException(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.MissingTestSourceFile)); } this.output.WriteLine(CommandLineResources.ListTestsHeaderMessage, OutputLevel.Information); if (!string.IsNullOrEmpty(EqtTrace.LogFile)) { this.output.Information(false, CommandLineResources.VstestDiagLogOutputPath, EqtTrace.LogFile); } var runSettings = this.runSettingsManager.ActiveRunSettings.SettingsXml; this.discoveryEventsRegistrar.ObjectWriter = objectWriter; this.testRequestManager.TestPlatformEventSourceInstance = testPlatformEventSource; this.testRequestManager.DiscoverTests( new DiscoveryRequestPayload() { Sources = this.commandLineOptions.Sources, RunSettings = runSettings }, this.discoveryEventsRegistrar, Constants.DefaultProtocolConfig); return(ArgumentProcessorResult.Success); }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { ConsoleOutput.Instance.WriteLine(CommandLineResources.AvailableSettingsProvidersHeaderMessage, OutputLevel.Information); var testPlatform = TestPlatformFactory.GetTestPlatform(); var extensionManager = SettingsProviderExtensionManager.Create(); foreach (var extension in extensionManager.SettingsProvidersMap.Values) { ConsoleOutput.Instance.WriteLine(extension.Value.GetType().FullName, OutputLevel.Information); ConsoleOutput.Instance.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AvailableExtensionsMetadataFormat, "SettingName", extension.Metadata.SettingsName), OutputLevel.Information); } return(ArgumentProcessorResult.Success); }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { ConsoleOutput.Instance.WriteLine(CommandLineResources.AvailableLoggersHeaderMessage, OutputLevel.Information); var testPlatform = TestPlatformFactory.GetTestPlatform(); var extensionManager = TestLoggerExtensionManager.Create(new NullMessageLogger()); foreach (var extension in extensionManager.TestExtensions) { ConsoleOutput.Instance.WriteLine(extension.Value.GetType().FullName, OutputLevel.Information); ConsoleOutput.Instance.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AvailableExtensionsMetadataFormat, "Uri", extension.Metadata.ExtensionUri), OutputLevel.Information); ConsoleOutput.Instance.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.AvailableExtensionsMetadataFormat, "FriendlyName", string.Join(", ", extension.Metadata.FriendlyName)), OutputLevel.Information); } return(ArgumentProcessorResult.Success); }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { ConsoleOutput.Instance.WriteLine(CommandLineResources.AvailableDiscoverersHeaderMessage, OutputLevel.Information); var testPlatform = TestPlatformFactory.GetTestPlatform(); var extensionManager = TestDiscoveryExtensionManager.Create(); foreach (var extension in extensionManager.Discoverers) { ConsoleOutput.Instance.WriteLine(extension.Value.GetType().FullName, OutputLevel.Information); ConsoleOutput.Instance.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.UriOfDefaultExecutor, extension.Metadata.DefaultExecutorUri), OutputLevel.Information); ConsoleOutput.Instance.WriteLine(string.Format(CultureInfo.CurrentCulture, CommandLineResources.SupportedFileTypesIndicator + " " + string.Join(", ", extension.Metadata.FileExtension)), OutputLevel.Information); } return(ArgumentProcessorResult.Success); }
/// <summary> /// Execute logger argument. /// </summary> /// <returns> /// The <see cref="ArgumentProcessorResult"/>. /// </returns> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { // Nothing to do since we enabled the logger in the initialize method. return(ArgumentProcessorResult.Success); }
/// <summary> /// Execute all of the tests. /// </summary> public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { Contract.Assert(this.commandLineOptions != null); Contract.Assert(!string.IsNullOrWhiteSpace(this.runSettingsManager?.ActiveRunSettings?.SettingsXml)); if (this.commandLineOptions.IsDesignMode) { // Do not attempt execution in case of design mode. Expect execution to happen // via the design mode client. return(ArgumentProcessorResult.Success); } // Ensure a test source file was provided var anySource = this.commandLineOptions.Sources.FirstOrDefault(); if (anySource == null) { throw new CommandLineException(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.MissingTestSourceFile)); } this.output.WriteLine(CommandLineResources.StartingExecution, OutputLevel.Information); if (!string.IsNullOrEmpty(EqtTrace.LogFile)) { this.output.Information(false, CommandLineResources.VstestDiagLogOutputPath, EqtTrace.LogFile); } var runSettings = this.runSettingsManager.ActiveRunSettings.SettingsXml; if (this.commandLineOptions.Sources.Any()) { this.RunTests(runSettings); } bool treatNoTestsAsError = RunSettingsUtilities.GetTreatNoTestsAsError(runSettings); if (treatNoTestsAsError && numberOfExecutedTests == 0) { return(ArgumentProcessorResult.Fail); } return(ArgumentProcessorResult.Success); }
internal TestRunRequest(IRequestData requestData, TestRunCriteria testRunCriteria, IProxyExecutionManager executionManager, ITestLoggerManager loggerManager) : this(requestData, testRunCriteria, executionManager, loggerManager, JsonDataSerializer.Instance) { }
internal TestRunRequest(IRequestData requestData, TestRunCriteria testRunCriteria, IProxyExecutionManager executionManager, ITestLoggerManager loggerManager, IDataSerializer dataSerializer) { Debug.Assert(testRunCriteria != null, "Test run criteria cannot be null"); Debug.Assert(executionManager != null, "ExecutionManager cannot be null"); Debug.Assert(requestData != null, "request Data is null"); Debug.Assert(loggerManager != null, "LoggerManager cannot be null"); if (EqtTrace.IsVerboseEnabled) { EqtTrace.Verbose("TestRunRequest.ExecuteAsync: Creating test run request."); } this.testRunCriteria = testRunCriteria; this.ExecutionManager = executionManager; this.LoggerManager = loggerManager; this.State = TestRunState.Pending; this.dataSerializer = dataSerializer; this.requestData = requestData; }
public static int RunExecutor(string[] args, ITestPlatformEventSource testPlatformEventSource, IObjectWriter objectWriter = null, ITestLoggerManager vsTestLogManager = null) { SetCultureSpecifiedByUser(); var executor = new Executor(ConsoleOutput.Instance, testPlatformEventSource); if (objectWriter != null) { executor.ObjectWriter = objectWriter; } if (vsTestLogManager != null) { executor.VStestLogManager = vsTestLogManager; } return(executor.Execute(args)); }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { Contract.Assert(this.output != null); Contract.Assert(this.commandLineOptions != null); Contract.Assert(!string.IsNullOrWhiteSpace(this.runSettingsManager?.ActiveRunSettings?.SettingsXml)); if (this.commandLineOptions.Sources.Count() <= 0) { throw new CommandLineException(string.Format(CultureInfo.CurrentUICulture, CommandLineResources.MissingTestSourceFile)); } if (!string.IsNullOrEmpty(EqtTrace.LogFile)) { this.output.Information(false, CommandLineResources.VstestDiagLogOutputPath, EqtTrace.LogFile); } var runSettings = this.runSettingsManager.ActiveRunSettings.SettingsXml; this.testRequestManager.DiscoverTests( new DiscoveryRequestPayload { Sources = this.commandLineOptions.Sources, RunSettings = runSettings }, this.discoveryEventsRegistrar, Constants.DefaultProtocolConfig); if (string.IsNullOrEmpty(this.commandLineOptions.ListTestsTargetPath)) { // This string does not need to go to Resources. Reason - only internal consumption throw new CommandLineException("Target Path should be specified for listing FQDN tests!"); } File.WriteAllLines(this.commandLineOptions.ListTestsTargetPath, this.discoveredTests); return(ArgumentProcessorResult.Success); }
public ArgumentProcessorResult Execute(IObjectWriter objectWriter = null, ITestPlatformEventSource testPlatformEventSource = null, ITestLoggerManager vsTestLogManager = null) { // Output the stock output text OutputSection(CommandLineResources.HelpUsageText); OutputSection(CommandLineResources.HelpDescriptionText); OutputSection(CommandLineResources.HelpArgumentsText); var argumentProcessorFactory = ArgumentProcessorFactory.Create(); List <IArgumentProcessor> processors = new List <IArgumentProcessor>(); processors.AddRange(argumentProcessorFactory.AllArgumentProcessors); processors.Sort((p1, p2) => Comparer <HelpContentPriority> .Default.Compare(p1.Metadata.Value.HelpPriority, p2.Metadata.Value.HelpPriority)); // Output the help description for RunTestsArgumentProcessor IArgumentProcessor runTestsArgumentProcessor = processors.Find(p1 => p1.GetType() == typeof(RunTestsArgumentProcessor)); processors.Remove(runTestsArgumentProcessor); var helpDescription = LookupHelpDescription(runTestsArgumentProcessor); if (helpDescription != null) { OutputSection(helpDescription); } // Output the help description for each available argument processor OutputSection(CommandLineResources.HelpOptionsText); foreach (var argumentProcessor in processors) { helpDescription = LookupHelpDescription(argumentProcessor); if (helpDescription != null) { OutputSection(helpDescription); } } OutputSection(CommandLineResources.Examples); // When Help has finished abort any subsequent argument processor operations return(ArgumentProcessorResult.Abort); }