Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix specflow.json not being reloaded after editing #36

Merged
merged 12 commits into from Oct 8, 2018
133 changes: 66 additions & 67 deletions IdeIntegration/Configuration/AppConfig/AppConfigConfigurationLoader.cs
@@ -1,76 +1,75 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TechTalk.SpecFlow.BindingSkeletons;
using TechTalk.SpecFlow.Configuration;
using TechTalk.SpecFlow.IdeIntegration.Generator;
using TechTalk.SpecFlow.Tracing;

namespace TechTalk.SpecFlow.IdeIntegration.Configuration.AppConfig
{
public class AppConfigConfigurationLoader
{
public SpecFlowConfiguration LoadAppConfig(SpecFlowConfiguration specFlowConfiguration, ConfigurationSectionHandler configSection)
{
if (configSection == null) throw new ArgumentNullException("configSection");

CultureInfo featureLanguage = specFlowConfiguration.FeatureLanguage;
CultureInfo bindingCulture = specFlowConfiguration.BindingCulture;
List<string> additionalStepAssemblies = specFlowConfiguration.AdditionalStepAssemblies;
StepDefinitionSkeletonStyle stepDefinitionSkeletonStyle = specFlowConfiguration.StepDefinitionSkeletonStyle;
bool usesPlugins = false;
using System;
using System.Configuration;
using System.Globalization;
using TechTalk.SpecFlow.Configuration;

namespace TechTalk.SpecFlow.IdeIntegration.Configuration.AppConfig
{
public class AppConfigConfigurationLoader
{
public SpecFlowConfiguration LoadAppConfig(SpecFlowConfiguration specFlowConfiguration, ConfigurationSectionHandler configSection)
{
if (configSection == null)
{
// TODO: dei clarify whether to upgrade to C# 6 since support for VS2013 has been dropped
throw new ArgumentNullException("configSection");
}

var featureLanguage = specFlowConfiguration.FeatureLanguage;
var bindingCulture = specFlowConfiguration.BindingCulture;
var additionalStepAssemblies = specFlowConfiguration.AdditionalStepAssemblies;
var stepDefinitionSkeletonStyle = specFlowConfiguration.StepDefinitionSkeletonStyle;
bool usesPlugins = false;
string generatorPath = null;

if (IsSpecified(configSection.Language))
{
featureLanguage = CultureInfo.GetCultureInfo(configSection.Language.Feature);
}

if (IsSpecified(configSection.BindingCulture))
{
bindingCulture = CultureInfo.GetCultureInfo(configSection.BindingCulture.Name);
}

foreach (var element in configSection.StepAssemblies)
{
var assemblyName = ((StepAssemblyConfigElement) element).Assembly;
additionalStepAssemblies.Add(assemblyName);
}

if (IsSpecified(configSection.Trace))
{
stepDefinitionSkeletonStyle = configSection.Trace.StepDefinitionSkeletonStyle;
}

if (IsSpecified(configSection.Generator))
{
if (IsSpecified(configSection.Language))
{
featureLanguage = CultureInfo.GetCultureInfo(configSection.Language.Feature);
}
if (IsSpecified(configSection.BindingCulture))
{
bindingCulture = CultureInfo.GetCultureInfo(configSection.BindingCulture.Name);
}
foreach (var element in configSection.StepAssemblies)
{
string assemblyName = ((StepAssemblyConfigElement) element).Assembly;
additionalStepAssemblies.Add(assemblyName);
}
if (IsSpecified(configSection.Trace))
{
stepDefinitionSkeletonStyle = configSection.Trace.StepDefinitionSkeletonStyle;
}
if (IsSpecified(configSection.Generator))
{
generatorPath = configSection.Generator.GeneratorPath;
if (IsSpecified(configSection.Generator.Dependencies))
usesPlugins = true;
{
usesPlugins = true;
}
}

if (IsSpecified(configSection.UnitTestProvider) && !string.IsNullOrEmpty(configSection.UnitTestProvider.GeneratorProvider))
{
usesPlugins = true;
}

if (IsSpecified(configSection.UnitTestProvider) && !string.IsNullOrEmpty(configSection.UnitTestProvider.GeneratorProvider))
{
usesPlugins = true;
}

return new SpecFlowConfiguration(ConfigSource.AppConfig,

return new SpecFlowConfiguration(ConfigSource.AppConfig,
featureLanguage,
bindingCulture,
bindingCulture,
additionalStepAssemblies,
stepDefinitionSkeletonStyle,
usesPlugins,
generatorPath
);
}

private bool IsSpecified(ConfigurationElement configurationElement)
{
return configurationElement != null && configurationElement.ElementInformation.IsPresent;
}
}
generatorPath
);
}
private bool IsSpecified(ConfigurationElement configurationElement)
{
return configurationElement != null && configurationElement.ElementInformation.IsPresent;
}
}
}
128 changes: 66 additions & 62 deletions IdeIntegration/Configuration/JsonConfig/JsonConfigurationLoader.cs
@@ -1,74 +1,78 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using TechTalk.SpecFlow.BindingSkeletons;

using System;
using System.Globalization;
using Newtonsoft.Json;

namespace TechTalk.SpecFlow.IdeIntegration.Configuration.JsonConfig
{
public class JsonConfigurationLoader
{
public SpecFlowConfiguration LoadJson(SpecFlowConfiguration specFlowConfiguration, string jsonContent)
{
if (String.IsNullOrWhiteSpace(jsonContent)) throw new ArgumentNullException("jsonContent");

var jsonConfig = JsonConvert.DeserializeObject<JsonConfig>(jsonContent);

CultureInfo featureLanguage = specFlowConfiguration.FeatureLanguage;
CultureInfo bindingCulture = specFlowConfiguration.BindingCulture;
List<string> additionalStepAssemblies = specFlowConfiguration.AdditionalStepAssemblies;
StepDefinitionSkeletonStyle stepDefinitionSkeletonStyle = specFlowConfiguration.StepDefinitionSkeletonStyle;
bool usesPlugins = false;
string generatorPath = null;

if (jsonConfig.Language != null)
{
if (!String.IsNullOrWhiteSpace(jsonConfig.Language.Feature))
{
featureLanguage = CultureInfo.GetCultureInfo(jsonConfig.Language.Feature);
}
public SpecFlowConfiguration LoadJson(SpecFlowConfiguration specFlowConfiguration, string jsonContent)
{
if (string.IsNullOrWhiteSpace(jsonContent))
{
// TODO: dei clarify whether to upgrade to C# 6 since support for VS2013 has been dropped
throw new ArgumentNullException("jsonContent");
}

var jsonConfig = JsonConvert.DeserializeObject<JsonConfig>(jsonContent);

var featureLanguage = specFlowConfiguration.FeatureLanguage;
var bindingCulture = specFlowConfiguration.BindingCulture;
var additionalStepAssemblies = specFlowConfiguration.AdditionalStepAssemblies;
var stepDefinitionSkeletonStyle = specFlowConfiguration.StepDefinitionSkeletonStyle;
bool usesPlugins = false;
string generatorPath = null;

if (jsonConfig.Language != null)
{
if (!string.IsNullOrWhiteSpace(jsonConfig.Language.Feature))
{
featureLanguage = CultureInfo.GetCultureInfo(jsonConfig.Language.Feature);
}
}

if (jsonConfig.BindingCulture != null)
{
if (!String.IsNullOrWhiteSpace(jsonConfig.BindingCulture.Name))
{
featureLanguage = CultureInfo.GetCultureInfo(jsonConfig.BindingCulture.Name);
}
}

if (jsonConfig.StepAssemblies != null)
{
foreach (var stepAssemblyEntry in jsonConfig.StepAssemblies)
{
additionalStepAssemblies.Add(stepAssemblyEntry.Assembly);
}
}

if (jsonConfig.Trace != null)
{
stepDefinitionSkeletonStyle = jsonConfig.Trace.StepDefinitionSkeletonStyle;
}

if (jsonConfig.Generator != null)
{
if (jsonConfig.BindingCulture != null)
{
if (!string.IsNullOrWhiteSpace(jsonConfig.BindingCulture.Name))
{
featureLanguage = CultureInfo.GetCultureInfo(jsonConfig.BindingCulture.Name);
}
}
if (jsonConfig.StepAssemblies != null)
{
foreach (var stepAssemblyEntry in jsonConfig.StepAssemblies)
{
additionalStepAssemblies.Add(stepAssemblyEntry.Assembly);
}
}
if (jsonConfig.Trace != null)
{
stepDefinitionSkeletonStyle = jsonConfig.Trace.StepDefinitionSkeletonStyle;
}
if (jsonConfig.Generator != null)
{
generatorPath = jsonConfig.Generator.GeneratorPath;
if (jsonConfig.Generator.Dependencies != null)
usesPlugins = true;
if (jsonConfig.Generator.Dependencies != null)
{
usesPlugins = true;
}
}

if(jsonConfig.UnitTestProvider != null && !string.IsNullOrEmpty(jsonConfig.UnitTestProvider.GeneratorProvider))
if(jsonConfig.UnitTestProvider != null && !string.IsNullOrEmpty(jsonConfig.UnitTestProvider.GeneratorProvider))
{
usesPlugins = true;
}

return new SpecFlowConfiguration(ConfigSource.Json,
featureLanguage,
bindingCulture,
additionalStepAssemblies,
stepDefinitionSkeletonStyle,
usesPlugins,
generatorPath);
usesPlugins = true;
}
return new SpecFlowConfiguration(ConfigSource.Json,
featureLanguage,
bindingCulture,
additionalStepAssemblies,
stepDefinitionSkeletonStyle,
usesPlugins,
generatorPath);
}
}
}
@@ -1,6 +1,5 @@
using System;
using System.Diagnostics;
using CommandLine;
using TechTalk.SpecFlow.Generator.Interfaces;
using TechTalk.SpecFlow.IdeIntegration.Options;
using TechTalk.SpecFlow.RemoteAppDomain;
Expand Down