Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix specflow.json not being reloaded after editing (#36)
Resolves SpecFlowOSS/SpecFlow#1291
- Loading branch information
1 parent
8e08131
commit e25f696
Showing
10 changed files
with
1,613 additions
and
1,496 deletions.
There are no files selected for viewing
133 changes: 66 additions & 67 deletions
133
IdeIntegration/Configuration/AppConfig/AppConfigConfigurationLoader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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
128
IdeIntegration/Configuration/JsonConfig/JsonConfigurationLoader.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 change: 0 additions & 1 deletion
1
IdeIntegration/Generator/OutOfProcess/OutOfProcessTestGeneratorFactory.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.