private void InitOrRefreshEnvironment(IRunSettings runSettings, IMessageLogger messageLogger, IRunContext runContext)
 {
     if (_settings == null || _settings.GetType() == typeof(SettingsWrapper)) // the latter prevents test settings and logger from being replaced
     {
         CommonFunctions.CreateEnvironment(runSettings, messageLogger, out _logger, out _settings, runContext.SolutionDirectory);
     }
 }
Beispiel #2
0
        private Dictionary<string, PythonProjectSettings> GetSourceToSettings(IRunSettings settings) {
            var doc = Read(settings.SettingsXml);
            XPathNodeIterator nodes = doc.CreateNavigator().Select("/RunSettings/Python/TestCases/Project");
            Dictionary<string, PythonProjectSettings> res = new Dictionary<string, PythonProjectSettings>();

            foreach (XPathNavigator project in nodes) {
                PythonProjectSettings projSettings = new PythonProjectSettings(
                    project.GetAttribute("home", ""),
                    project.GetAttribute("workingDir", ""),
                    project.GetAttribute("interpreter", ""),
                    project.GetAttribute("pathEnv", ""),
                    project.GetAttribute("nativeDebugging", "").IsTrue()
                );

                foreach (XPathNavigator environment in project.Select("Environment/Variable")) {
                    projSettings.Environment[environment.GetAttribute("name", "")] = environment.GetAttribute("value", "");
                }

                string djangoSettings = project.GetAttribute("djangoSettingsModule", "");
                if (!String.IsNullOrWhiteSpace(djangoSettings)) {
                    projSettings.Environment["DJANGO_SETTINGS_MODULE"] = djangoSettings;
                }

                foreach (XPathNavigator searchPath in project.Select("SearchPaths/Search")) {
                    projSettings.SearchPath.Add(searchPath.GetAttribute("value", ""));
                }

                foreach (XPathNavigator test in project.Select("Test")) {
                    string testFile = test.GetAttribute("file", "");
                    Debug.Assert(!string.IsNullOrWhiteSpace(testFile));
                    res[testFile] = projSettings;
                }
            }
            return res;
        }
Beispiel #3
0
 private void InitOrRefreshTestEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
 {
     if (_testEnvironment == null || _testEnvironment.Options.GetType() == typeof(SettingsWrapper))
     {
         _testEnvironment = CreateTestEnvironment(runSettings, messageLogger);
     }
 }
Beispiel #4
0
 public TestRunner(IEnumerable <string> sources, IRunSettings runSettings, ITestExecutionRecorder recorder)
 {
     RunSettings = RunSettings;
     sink        = new TestCaseDiscoverySink();
     new MSTestDiscoverer().DiscoverTests(sources, this, this, sink);
     this.recorder = recorder;
 }
Beispiel #5
0
        public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger messageLogger, out ILogger logger, out SettingsWrapper settings, string solutionDir = null)
        {
            if (string.IsNullOrWhiteSpace(solutionDir))
            {
                solutionDir = null;
            }

            var settingsProvider = SafeGetRunSettingsProvider(runSettings, messageLogger);

            var ourRunSettings = GetRunSettingsContainer(settingsProvider, messageLogger);

            foreach (RunSettings projectSettings in ourRunSettings.ProjectSettings)
            {
                projectSettings.GetUnsetValuesFrom(ourRunSettings.SolutionSettings);
            }

            var testSettings    = runSettings.GetSettings(GoogleTestConstants.TestPropertySettingsName) as TestPropertySettingsProvider;
            var settingsWrapper = new SettingsWrapper(ourRunSettings, testSettings?.TestPropertySettings, solutionDir);

            var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.OutputMode,
                                                          () => settingsWrapper.TimestampMode, () => settingsWrapper.SeverityMode, () => settingsWrapper.PrefixOutputWithGta);

            settingsWrapper.RegexTraitParser = new RegexTraitParser(loggerAdapter);
            settingsWrapper.HelperFilesCache = new HelperFilesCache(loggerAdapter);

            LogWarningsForDeprecatedSettings(ourRunSettings, loggerAdapter);

            settings = settingsWrapper;
            logger   = loggerAdapter;

            SpeedupThreadPoolHack(logger);
        }
Beispiel #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TestSourceHost"/> class.
        /// </summary>
        /// <param name="sourceFileName"> The source file name. </param>
        /// <param name="runSettings"> The run-settings provided for this session. </param>
        /// <param name="frameworkHandle"> The handle to the test platform. </param>
        public TestSourceHost(string sourceFileName, IRunSettings runSettings, IFrameworkHandle frameworkHandle)
        {
            this.sourceFileName = sourceFileName;

            // Set the environment context.
            this.SetContext(sourceFileName);
        }
        public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger messageLogger, out ILogger logger, out SettingsWrapper settings)
        {
            RunSettingsProvider settingsProvider;

            try
            {
                settingsProvider = runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider;
            }
            catch (Exception e)
            {
                settingsProvider = null;
                messageLogger.SendMessage(TestMessageLevel.Error, $"ERROR: Visual Studio test framework failed to provide settings; using default settings. Error message: {e.Message}");
            }

            RunSettingsContainer ourRunSettings = settingsProvider?.SettingsContainer ?? new RunSettingsContainer();

            foreach (RunSettings projectSettings in ourRunSettings.ProjectSettings)
            {
                projectSettings.GetUnsetValuesFrom(ourRunSettings.SolutionSettings);
            }

            var settingsWrapper = new SettingsWrapper(ourRunSettings);

            var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput);
            var regexParser   = new RegexTraitParser(loggerAdapter);

            settingsWrapper.RegexTraitParser = regexParser;

            settings = settingsWrapper;
            logger   = loggerAdapter;
        }
Beispiel #8
0
        /// <summary>
        /// Get the tests from the parameter source
        /// </summary>
        /// <param name="source"> The source. </param>
        /// <param name="logger"> The logger. </param>
        /// <param name="discoverySink"> The discovery Sink. </param>
        /// <param name="runSettings"> The run settings. </param>
        internal virtual void DiscoverTestsInSource(
            string source,
            IMessageLogger logger,
            ITestCaseDiscoverySink discoverySink,
            IRunSettings runSettings)
        {
            ICollection <string> warnings;

            var testElements = this.assemblyEnumeratorWrapper.GetTests(source, runSettings, out warnings);

            // log the warnings
            foreach (var warning in warnings)
            {
                PlatformServiceProvider.Instance.AdapterTraceLogger.LogInfo(
                    "MSTestDiscoverer: Warning during discovery from {0}. {1} ",
                    source,
                    warning);
                logger.SendMessage(TestMessageLevel.Warning, warning);
            }

            // No tests found => nothing to do
            if (testElements == null || testElements.Count == 0)
            {
                return;
            }

            PlatformServiceProvider.Instance.AdapterTraceLogger.LogInfo(
                "MSTestDiscoverer: Found {0} tests from source {1}",
                testElements.Count,
                source);

            this.SendTestCases(source, testElements, discoverySink);
        }
Beispiel #9
0
 private void InitOrRefreshEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
 {
     if (_settings == null || _settings.GetType() == typeof(SettingsWrapper))
     {
         CommonFunctions.CreateEnvironment(runSettings, messageLogger, out _logger, out _settings);
     }
 }
Beispiel #10
0
        public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger messageLogger, out ILogger logger, out SettingsWrapper settings, string solutionDir = null)
        {
            if (string.IsNullOrWhiteSpace(solutionDir))
            {
                solutionDir = null;
            }

            var settingsProvider = SafeGetRunSettingsProvider(runSettings, messageLogger);

            var ourRunSettings = GetRunSettingsContainer(settingsProvider, messageLogger);

            foreach (RunSettings projectSettings in ourRunSettings.ProjectSettings)
            {
                projectSettings.GetUnsetValuesFrom(ourRunSettings.SolutionSettings);
            }

            var settingsWrapper = new SettingsWrapper(ourRunSettings, solutionDir);

            var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput);
            var regexParser   = new RegexTraitParser(loggerAdapter);

            settingsWrapper.RegexTraitParser = regexParser;

            settings = settingsWrapper;
            logger   = loggerAdapter;
        }
            public InternalDiscoveryContext(string runSettings, string testCaseFilter)
            {
                this.runSettings = new InternalRunSettings(runSettings);

                if (testCaseFilter != null)
                {
                    filter = TestCaseFilterFactory.ParseTestFilter(testCaseFilter);
                }
            }
Beispiel #12
0
        public UnitTestSettings(IRunSettings runSettings, bool isBeingDebugged = false)
        {
            var xml            = XDocument.Parse(runSettings.SettingsXml);
            var jsUnitTestRoot = xml.Descendants("JavaScriptUnitTest");

            this.TestSource             = jsUnitTestRoot.Descendants("TestSource").FirstOrDefault()?.Value;
            this.TestFrameworksLocation = jsUnitTestRoot.Descendants("TestFrameworkRoot").FirstOrDefault()?.Value;
            this.IsBeingDebugged        = isBeingDebugged;
        }
        public RunSettings(IRunSettings runSettings)
        {
            if (String.IsNullOrEmpty(runSettings.SettingsXml))
            {
                return;
            }

            _document = XDocument.Parse(runSettings.SettingsXml);
        }
Beispiel #14
0
 /// <summary>
 /// Returns true if the console should be shown. This is the default
 /// unless a &lt;ShowConsole value="false" /&gt; element exists under
 /// RunSettings/Python.
 /// </summary>
 private static bool ShouldShowConsole(IRunSettings settings) {
     var doc = Read(settings.SettingsXml);
     try {
         var node = doc.CreateNavigator().SelectSingleNode("/RunSettings/Python/ShowConsole[@value='false']");
         return node == null;
     } catch (Exception ex) {
         Debug.Fail(ex.ToUnhandledExceptionMessage(typeof(TestExecutor)));
         return true;
     }
 }
 public static void Validate <TStepId, TData>(this IRunSettings <TStepId, TData> settings, ITransactionContext <TStepId, TData> transactionContext)
 {
     if (!Enum.IsDefined(typeof(RunMode), settings.Mode))
     {
         throw new ArgumentException(string.Format(
                                         "Transaction '{0}': unknown run mode '{1}'.",
                                         transactionContext.Info.Name,
                                         settings.Mode));
     }
 }
Beispiel #16
0
        internal TestSourceHost(string sourceFileName, IRunSettings runSettings, IFrameworkHandle frameworkHandle, IAppDomain appDomain)
        {
            this.sourceFileName  = sourceFileName;
            this.runSettings     = runSettings;
            this.frameworkHandle = frameworkHandle;

            this.appDomain = appDomain;

            // Set the environment context.
            this.SetContext(sourceFileName);
        }
        private void InitTestEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
        {
            if (TestEnvironment == null || TestEnvironment.Options.GetType() == typeof(Options))
            {
                var         settingsProvider = runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider;
                RunSettings ourRunSettings   = settingsProvider != null ? settingsProvider.Settings : new RunSettings();

                ILogger loggerAdapter = new VsTestFrameworkLogger(messageLogger);
                TestEnvironment = new TestEnvironment(new Options(ourRunSettings, loggerAdapter), loggerAdapter);
            }
        }
        public static string GetSolutionDirectory(IRunSettings settings)
        {
            XPathDocument  document  = new XPathDocument(new StringReader(settings.SettingsXml));
            XPathNavigator navigator = document.CreateNavigator();

            if (navigator.MoveToFollowing("SolutionDirectory", ""))
            {
                return(navigator.Value);
            }
            return("");
        }
        public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            repository = autoSubstitute.Resolve <SettingsRepository>();

            discoveryContext = autoSubstitute.Resolve <IDiscoveryContext>();
            runSettings      = autoSubstitute.Resolve <IRunSettings>();

            discoveryContext.RunSettings.Returns(runSettings);
        }
Beispiel #20
0
 /// <summary>
 /// Discovers the tests available from the provided sources.
 /// </summary>
 /// <param name="sources"> The sources. </param>
 /// <param name="logger"> The logger. </param>
 /// <param name="discoverySink"> The discovery Sink. </param>
 /// <param name="runSettings"> The run settings. </param>
 internal void DiscoverTests(
     IEnumerable <string> sources,
     IMessageLogger logger,
     ITestCaseDiscoverySink discoverySink,
     IRunSettings runSettings)
 {
     foreach (var source in sources)
     {
         this.DiscoverTestsInSource(source, logger, discoverySink, runSettings);
     }
 }
Beispiel #21
0
        internal static TestEnvironment CreateTestEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
        {
            var             settingsProvider = runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider;
            RunSettings     ourRunSettings   = settingsProvider != null ? settingsProvider.Settings : new RunSettings();
            var             settingsWrapper  = new SettingsWrapper(ourRunSettings);
            var             loggerAdapter    = new VsTestFrameworkLogger(messageLogger, settingsWrapper);
            TestEnvironment testEnvironment  = new TestEnvironment(settingsWrapper, loggerAdapter);

            settingsWrapper.RegexTraitParser = new RegexTraitParser(testEnvironment);
            return(testEnvironment);
        }
Beispiel #22
0
        /// <summary>
        /// Returns true if this is a dry run. Dry runs require a
        /// &lt;DryRun value="true" /&gt; element under RunSettings/Python.
        /// </summary>
        internal static bool IsDryRun(IRunSettings settings)
        {
            var doc = TestUtils.Read(settings.SettingsXml);

            try {
                var node = doc.CreateNavigator().SelectSingleNode("/RunSettings/Python/DryRun[@value='true']");
                return(node != null);
            } catch (Exception ex) {
                Debug.Fail(ex.ToUnhandledExceptionMessage(typeof(UnittestTestExecutor)));
                return(false);
            }
        }
Beispiel #23
0
        /// <summary>
        /// Returns true if this is a dry run. Dry runs require a
        /// &lt;DryRun value="true" /&gt; element under RunSettings/Python.
        /// </summary>
        private static bool IsDryRun(IRunSettings settings)
        {
            var doc = new XPathDocument(new StringReader(settings.SettingsXml));

            try {
                var node = doc.CreateNavigator().SelectSingleNode("/RunSettings/Python/DryRun[@value='true']");
                return(node != null);
            } catch (Exception ex) {
                Debug.Fail(ex.ToUnhandledExceptionMessage(typeof(TestExecutor)));
                return(false);
            }
        }
        internal override void DiscoverTestsInSource(
            string source,
            IMessageLogger logger,
            ITestCaseDiscoverySink discoverySink,
            IRunSettings runSettings)
        {
            var testCase1 = new TestCase("A", new System.Uri("executor://testExecutor"), source);
            var testCase2 = new TestCase("B", new System.Uri("executor://testExecutor"), source);

            discoverySink.SendTestCase(testCase1);
            discoverySink.SendTestCase(testCase2);
        }
        internal TestSourceHost(string sourceFileName, IRunSettings runSettings, IFrameworkHandle frameworkHandle, IAppDomain appDomain)
        {
            this.sourceFileName  = sourceFileName;
            this.runSettings     = runSettings;
            this.frameworkHandle = frameworkHandle;
            this.appDomain       = appDomain;

            // Set the environment context.
            this.SetContext(sourceFileName);

            // Set isAppDomainCreationDisabled flag
            this.isAppDomainCreationDisabled = (this.runSettings != null) && MSTestAdapterSettings.IsAppDomainCreationDisabled(this.runSettings.SettingsXml);
        }
Beispiel #26
0
        public static void CreateEnvironment(IRunSettings runSettings, IMessageLogger messageLogger, out ILogger logger, out SettingsWrapper settings)
        {
            var settingsProvider = runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider;
            RunSettingsContainer ourRunSettings = settingsProvider != null ? settingsProvider.SettingsContainer : new RunSettingsContainer();
            var settingsWrapper = new SettingsWrapper(ourRunSettings);

            var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput);
            var regexParser   = new RegexTraitParser(loggerAdapter);

            settingsWrapper.RegexTraitParser = regexParser;

            settings = settingsWrapper;
            logger   = loggerAdapter;
        }
Beispiel #27
0
        /// <summary>
        /// Loads settings from the runsettings in the discovery context.
        /// Returns default settings otherwise.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static CatchAdapterSettings LoadSettings(IRunSettings runSettings)
        {
            CatchAdapterSettings settings = new CatchAdapterSettings();

            if (runSettings != null)
            {
                var provider = runSettings.GetSettings(CatchAdapterSettings.XmlRoot) as CatchSettingsProvider;
                if (provider != null && provider.Settings != null)
                {
                    settings = provider.Settings;
                }
            }

            return(settings);
        }
Beispiel #28
0
        private static RunSettingsProvider SafeGetRunSettingsProvider(IRunSettings runSettings, IMessageLogger messageLogger)
        {
            try
            {
                return(runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider);
            }
            catch (Exception e)
            {
                string errorMessage =
                    $"ERROR: Visual Studio test framework failed to provide settings. Error message: {e.Message}";
                // if fallback settings are configured, we do not want to make the tests fail
                var level = AreFallbackSettingsConfigured() ? TestMessageLevel.Informational : TestMessageLevel.Error;

                messageLogger.SendMessage(level, errorMessage);
                return(null);
            }
        }
Beispiel #29
0
 internal Task Run(IEnumerable <TestCase> tests, IRunSettings runSettings, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
 {
     if (IsRunning)
     {
         throw new InvalidOperationException("Test run already running");
     }
     token = new TestRunCancellationToken();
     if (cancellationToken.CanBeCanceled)
     {
         cancellationToken.Register(() => token.Cancel());
     }
     settings = runSettings;
     MSTestSettings.PopulateSettings(this);
     return(System.Threading.Tasks.Task.Run(() => {
         new TestExecutionManager().RunTests(tests, this, this, token);
         token = null;
     }));
 }
Beispiel #30
0
        static void DiscoverTests(IEnumerable<string> sources, IMessageLogger logger, ITestCaseDiscoverySink discoverySink, IRunSettings settings) {
            var sourcesSet = new HashSet<string>(sources, StringComparer.OrdinalIgnoreCase);

            var executorUri = new Uri(PythonConstants.TestExecutorUriString);
            // Test list is sent to us via our run settings which we use to smuggle the
            // data we have in our analysis process.
            var doc = new XPathDocument(new StringReader(settings.SettingsXml));
            foreach (var t in TestReader.ReadTests(doc, sourcesSet, m => {
                logger?.SendMessage(TestMessageLevel.Warning, m);
            })) {
                var tc = new TestCase(t.FullyQualifiedName, executorUri, t.SourceFile) {
                    DisplayName = t.DisplayName,
                    LineNumber = t.LineNo,
                    CodeFilePath = t.FileName
                };

                discoverySink.SendTestCase(tc);
            }
        }
Beispiel #31
0
        private void SetAdapterLoggingSettings(IMessageLogger messageLogger, IRunSettings runSettings)
        {
            var discoveryMessageLogger = messageLogger as TestSessionMessageLogger;

            if (discoveryMessageLogger != null && runSettings != null)
            {
#if Todo
                // Todo: Enable this when RunSettings is enabled.
                IRunConfigurationSettingsProvider runConfigurationSettingsProvider =
                    (IRunConfigurationSettingsProvider)runSettings.GetSettings(ObjectModel.Constants.RunConfigurationSettingsName);
                if (runConfigurationSettingsProvider != null &&
                    runConfigurationSettingsProvider.Settings != null)
                {
                    discoveryMessageLogger.TreatTestAdapterErrorsAsWarnings
                        = runConfigurationSettingsProvider.Settings.TreatTestAdapterErrorsAsWarnings;
                }
#endif
            }
        }
 private void InitOrRefreshTestEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
 {
     if (_testEnvironment == null || _testEnvironment.Options.GetType() == typeof(SettingsWrapper))
         _testEnvironment = CreateTestEnvironment(runSettings, messageLogger);
 }
Beispiel #33
0
 public MockRunContext(IRunSettings runSettings) {
     _runSettings = runSettings;
 }
Beispiel #34
0
 public MockDiscoveryContext(IRunSettings runSettings) {
     _runSettings = runSettings;
 }
 internal static TestEnvironment CreateTestEnvironment(IRunSettings runSettings, IMessageLogger messageLogger)
 {
     var settingsProvider = runSettings.GetSettings(GoogleTestConstants.SettingsName) as RunSettingsProvider;
     RunSettings ourRunSettings = settingsProvider != null ? settingsProvider.Settings : new RunSettings();
     var settingsWrapper = new SettingsWrapper(ourRunSettings);
     var loggerAdapter = new VsTestFrameworkLogger(messageLogger, settingsWrapper);
     TestEnvironment testEnvironment = new TestEnvironment(settingsWrapper, loggerAdapter);
     settingsWrapper.RegexTraitParser = new RegexTraitParser(testEnvironment);
     return testEnvironment;
 }