/// <summary> /// Tries to load custom settings and if one is find, tries to merge them to the given default settings. /// </summary> /// <param name="defaultSettings">The default settings with which to merge the ones.</param> /// <returns>The result settings after merge.</returns> private static TestEnvironmentSettings TryLoadAndMergeWithCustomSettings(TestEnvironmentSettings defaultSettings) { string customTestSettingsFileLocation = System.Environment.GetEnvironmentVariable(EnvVariableForCustomSettingLocation, EnvironmentVariableTarget.User) ?? FallBackCustomTestSettingsFileLocation; var codeBaseUrl = new Uri(Assembly.GetExecutingAssembly().CodeBase); var codeBasePath = Uri.UnescapeDataString(codeBaseUrl.AbsolutePath); var dirPath = Path.GetDirectoryName(codeBasePath); var customFileLoc = Path.Combine(dirPath, customTestSettingsFileLocation); var finalSettings = JObject.FromObject(defaultSettings); if (File.Exists(customFileLoc)) { //TODO: Print that parsing custom values... var mergeSettings = new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union }; var customSettingsJson = JObject.Parse(File.ReadAllText(customFileLoc)); customSettingsJson.Merge(finalSettings, mergeSettings); finalSettings = customSettingsJson; } return(finalSettings.ToObject <TestEnvironmentSettings>()); }
/// <summary> /// The default constructor. /// </summary> public TestEnvironmentInvariant() { ActiveSettings = TryLoadAndMergeWithCustomSettings(DefaultSettings); }
/// <summary> /// Tries to load custom settings and if one is find, tries to merge them to the given default settings. /// </summary> /// <param name="defaultSettings">The default settings with which to merge the ones.</param> /// <returns>The result settings after merge.</returns> private static TestEnvironmentSettings TryLoadAndMergeWithCustomSettings(TestEnvironmentSettings defaultSettings) { string customTestSettingsFileLocation = System.Environment.GetEnvironmentVariable(EnvVariableForCustomSettingLocation, EnvironmentVariableTarget.User) ?? FallBackCustomTestSettingsFileLocation; var codeBaseUrl = new Uri(Assembly.GetExecutingAssembly().CodeBase); var codeBasePath = Uri.UnescapeDataString(codeBaseUrl.AbsolutePath); var dirPath = Path.GetDirectoryName(codeBasePath); var customFileLoc = Path.Combine(dirPath, customTestSettingsFileLocation); var finalSettings = JObject.FromObject(defaultSettings); if(File.Exists(customFileLoc)) { //TODO: Print that parsing custom values... var mergeSettings = new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Union }; var customSettingsJson = JObject.Parse(File.ReadAllText(customFileLoc)); customSettingsJson.Merge(finalSettings, mergeSettings); finalSettings = customSettingsJson; } return finalSettings.ToObject<TestEnvironmentSettings>(); }