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; }
private void CheckSkipOriginCheck(RunSettingsContainer runSettingsContainer) { runSettingsContainer.SolutionSettings.SkipOriginCheck.Should().BeFalse(); foreach (RunSettings projectSettings in runSettingsContainer.ProjectSettings) { projectSettings.SkipOriginCheck.Should().BeFalse(); } runSettingsContainer.GetSettingsForExecutable("project1")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("project2")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("project3")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("not_matched")?.SkipOriginCheck.Should().BeFalse(); }
private static void AddProjectSettings(RunSettingsContainer settingsContainer, string project, string workingDir) { if (workingDir == null) { return; } settingsContainer.ProjectSettings.Add(new RunSettings { ProjectRegex = project, WorkingDir = workingDir == "" ? null : workingDir }); }
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; }
private void CheckSkipOriginCheck(RunSettingsContainer runSettingsContainer) { runSettingsContainer.SolutionSettings.SkipOriginCheck.Should().BeFalse(); foreach (RunSettings projectSettings in runSettingsContainer.ProjectSettings) { projectSettings.SkipOriginCheck.Should().BeFalse(); } #pragma warning disable NullConditionalAssertion // Code Smell runSettingsContainer.GetSettingsForExecutable("project1")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("project2")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("project3")?.SkipOriginCheck.Should().BeFalse(); runSettingsContainer.GetSettingsForExecutable("not_matched")?.SkipOriginCheck.Should().BeFalse(); #pragma warning restore NullConditionalAssertion // Code Smell }
private RunSettingsContainer SetupSettingsContainer(string solutionWorkingDir, string project1WorkingDir, string project2WorkingDir, string project3WorkingDir) { var settingsContainer = new RunSettingsContainer(new RunSettings { ProjectRegex = null, WorkingDir = solutionWorkingDir, SkipOriginCheck = true }); AddProjectSettings(settingsContainer, "project1", project1WorkingDir); AddProjectSettings(settingsContainer, "project2", project2WorkingDir); AddProjectSettings(settingsContainer, "project3", project3WorkingDir); return(settingsContainer); }
private static RunSettingsContainer GetRunSettingsFromEnvVariable(IMessageLogger messageLogger) { string settingsFile; try { settingsFile = Environment.GetEnvironmentVariable(GtaSettingsEnvVariable); if (settingsFile == null) { messageLogger.SendMessage(TestMessageLevel.Informational, $"No settings file provided through env variable {GtaSettingsEnvVariable}"); return(null); } } catch (Exception e) { messageLogger.SendMessage(TestMessageLevel.Error, $"ERROR: Exception while trying to acces env variable {GtaSettingsEnvVariable}, message: {e.Message}"); return(null); } try { if (!File.Exists(settingsFile)) { messageLogger.SendMessage(TestMessageLevel.Warning, $"Warning: Settings file is provided through env variable {GtaSettingsEnvVariable}, but file '{settingsFile}' does not exist"); return(null); } var settingsContainer = new RunSettingsContainer(); if (!settingsContainer.GetUnsetValuesFrom(settingsFile)) { messageLogger.SendMessage(TestMessageLevel.Warning, $"Warning: Settings file is provided through env variable {GtaSettingsEnvVariable}, but file '{settingsFile}' could not be loaded"); return(null); } messageLogger.SendMessage(TestMessageLevel.Informational, $"Using fallback settings from file '{settingsFile}' (provided through env variable {GtaSettingsEnvVariable})"); return(settingsContainer); } catch (Exception e) { messageLogger.SendMessage(TestMessageLevel.Error, $"ERROR: Settings file is provided through env variable {GtaSettingsEnvVariable}, but an exception occured while trying to read file '{settingsFile}'. Exception message: {e.Message}"); return(null); } }
private RunSettingsContainer SetupSettingsContainer(string solutionWorkingDir, string project1WorkingDir, string project2WorkingDir, string project3WorkingDir) { var settingsContainer = new RunSettingsContainer { SolutionSettings = new RunSettings { ProjectRegex = null, WorkingDir = solutionWorkingDir }, ProjectSettings = new List <RunSettings>() }; AddProjectSettings(settingsContainer, "project1", project1WorkingDir); AddProjectSettings(settingsContainer, "project2", project2WorkingDir); AddProjectSettings(settingsContainer, "project3", project3WorkingDir); return(settingsContainer); }
private static XPathNavigator EmbedSettingsIntoRunSettings(RunSettingsContainer settingsContainer) { var settingsDocument = new XmlDocument(); XmlDeclaration xmlDeclaration = settingsDocument.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = settingsDocument.DocumentElement; settingsDocument.InsertBefore(xmlDeclaration, root); XmlElement runSettingsNode = settingsDocument.CreateElement("", Constants.RunSettingsName, ""); settingsDocument.AppendChild(runSettingsNode); var settingsNavigator = settingsDocument.CreateNavigator(); settingsNavigator.MoveToChild(Constants.RunSettingsName, ""); settingsNavigator.AppendChild(settingsContainer.ToXml().CreateNavigator()); settingsNavigator.MoveToRoot(); return(settingsNavigator); }
private static RunSettingsContainer GetRunSettingsContainer(RunSettingsProvider settingsProvider, IMessageLogger messageLogger) { RunSettingsContainer ourRunSettings; if (settingsProvider != null) { ourRunSettings = settingsProvider.SettingsContainer; } else { ourRunSettings = GetRunSettingsFromEnvVariable(messageLogger); if (ourRunSettings == null) { messageLogger.SendMessage(TestMessageLevel.Warning, "Warning: Using default settings."); ourRunSettings = new RunSettingsContainer(); } } return(ourRunSettings); }
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(); 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); var loggerAdapter = new VsTestFrameworkLogger(messageLogger, () => settingsWrapper.DebugMode, () => settingsWrapper.TimestampOutput); var regexParser = new RegexTraitParser(loggerAdapter); settingsWrapper.RegexTraitParser = regexParser; settings = settingsWrapper; logger = loggerAdapter; }
private RunSettingsContainer SetupFinalRunSettingsContainer( string solutionSolutionWorkingDir, string solutionProject1WorkingDir, string solutionProject2WorkingDir, string userSolutionWorkingDir, string userProject1WorkingDir, string userProject3WorkingDir) { var globalSettings = new RunSettings { ProjectRegex = null, WorkingDir = GlobalWorkingDir, SkipOriginCheck = false }; var mockGlobalRunSettings = new Mock <IGlobalRunSettings>(); mockGlobalRunSettings.Setup(grs => grs.RunSettings).Returns(globalSettings); var solutionSettingsContainer = SetupSettingsContainer(solutionSolutionWorkingDir, solutionProject1WorkingDir, solutionProject2WorkingDir, null); var solutionSettingsNavigator = EmbedSettingsIntoRunSettings(solutionSettingsContainer); var solutionSettingsFile = SerializeSolutionSettings(solutionSettingsNavigator); var userSettingsContainer = SetupSettingsContainer(userSolutionWorkingDir, userProject1WorkingDir, null, userProject3WorkingDir); var userSettingsNavigator = EmbedSettingsIntoRunSettings(userSettingsContainer); IXPathNavigable navigable; try { var serviceUnderTest = new RunSettingsServiceUnderTest(mockGlobalRunSettings.Object, solutionSettingsFile); navigable = serviceUnderTest.AddRunSettings(userSettingsNavigator, new Mock <IRunSettingsConfigurationInfo>().Object, new Mock <ILogger>().Object); } finally { File.Delete(solutionSettingsFile); } var navigator = navigable.CreateNavigator(); navigator.MoveToChild(Constants.RunSettingsName, ""); navigator.MoveToChild(GoogleTestConstants.SettingsName, ""); return(RunSettingsContainer.LoadFromXml(navigator)); }
private static void LogWarningsForDeprecatedSettings(RunSettingsContainer runSettingsContainer, ILogger logger) { var debugModeProperty = typeof(RunSettings).GetProperty(nameof(RunSettings.DebugMode)); if (HasSetting(runSettingsContainer, debugModeProperty)) { logger.LogWarning($"GTA option '{nameof(IGoogleTestAdapterSettings.DebugMode)}' does not have any effect any more - check your settings files and replace any occurence with new option '{nameof(IGoogleTestAdapterSettings.OutputMode)}' as follows:"); logger.LogWarning($"<DebugMode>False</DebugMode> => <OutputMode>{OutputMode.Info}</OutputMode>"); logger.LogWarning($"<DebugMode>True</DebugMode> => <OutputMode>{OutputMode.Verbose}</OutputMode> (consider using {OutputMode.Debug})"); } var useNewTestExecutionEnvironmentProperty = typeof(RunSettings).GetProperty(nameof(RunSettings.UseNewTestExecutionFramework)); if (HasSetting(runSettingsContainer, useNewTestExecutionEnvironmentProperty)) { logger.LogWarning($"GTA option '{nameof(IGoogleTestAdapterSettings.UseNewTestExecutionFramework)}' does not have any effect any more - check your settings files and replace any occurence with new option '{nameof(IGoogleTestAdapterSettings.DebuggerKind)}' as follows:"); logger.LogWarning($"<UseNewTestExecutionFramework>False</UseNewTestExecutionFramework> => <DebuggerKind>{DebuggerKind.VsTestFramework}</DebuggerKind>"); logger.LogWarning($"<UseNewTestExecutionFramework>True</UseNewTestExecutionFramework> => <DebuggerKind>{DebuggerKind.Native}</DebuggerKind>"); } var timestepOutputProperty = typeof(RunSettings).GetProperty(nameof(RunSettings.TimestampOutput)); if (HasSetting(runSettingsContainer, timestepOutputProperty)) { logger.LogWarning($"GTA option '{nameof(IGoogleTestAdapterSettings.TimestampOutput)}' does not have any effect any more - check your settings files and replace any occurence with new option '{nameof(IGoogleTestAdapterSettings.TimestampMode)}' as follows:"); logger.LogWarning($"<TimestampOutput>False</TimestampOutput> => <TimestampMode>{TimestampMode.DoNotPrintTimestamp}</TimestampMode>"); logger.LogWarning($"<TimestampOutput>True</TimestampOutput> => <TimestampMode>{TimestampMode.PrintTimestamp}</TimestampMode>"); } var showReleaseNotesProperty = typeof(RunSettings).GetProperty(nameof(RunSettings.ShowReleaseNotes)); if (HasSetting(runSettingsContainer, showReleaseNotesProperty)) { logger.LogWarning($"GTA option '{nameof(IGoogleTestAdapterSettings.ShowReleaseNotes)}' is deprecated - check your settings files and remove any occurence."); } }
private static bool HasSetting(RunSettingsContainer runSettingsContainer, PropertyInfo propertyInfo) { return(propertyInfo.GetValue(runSettingsContainer.SolutionSettings) != null || runSettingsContainer.ProjectSettings.Any(s => propertyInfo.GetValue(s) != null)); }