Skip to content

Commit

Permalink
Fix specflow.json not being reloaded after editing (#36)
Browse files Browse the repository at this point in the history
  • Loading branch information
david1995 authored and SabotageAndi committed Oct 8, 2018
1 parent 8e08131 commit e25f696
Show file tree
Hide file tree
Showing 10 changed files with 1,613 additions and 1,496 deletions.
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

0 comments on commit e25f696

Please sign in to comment.