Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 2
0
        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);
            };
        }
Ejemplo n.º 3
0
 /// <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);
 }
Ejemplo n.º 4
0
 /// <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);
 }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
 }
Ejemplo n.º 9
0
 /// <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)
 {
 }
Ejemplo n.º 10
0
        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);
 }
Ejemplo n.º 15
0
        /// <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);
        }
Ejemplo n.º 16
0
 internal TestRunRequest(IRequestData requestData, TestRunCriteria testRunCriteria, IProxyExecutionManager executionManager, ITestLoggerManager loggerManager) :
     this(requestData, testRunCriteria, executionManager, loggerManager, JsonDataSerializer.Instance)
 {
 }
Ejemplo n.º 17
0
        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;
        }
Ejemplo n.º 18
0
        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));
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }