Пример #1
0
        public void Check_Runtime_stopAtFirstError_as_true()
        {
            string config = @"{
                              ""specflow"": {
                                ""runtime"": { ""stopAtFirstError"": ""true"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StopAtFirstError.Should().BeTrue();
        }
Пример #2
0
        public void Check_Plugins_NotInConfigFile()
        {
            string config = @"{
                              ""specflow"": {
    
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.Plugins.Should().BeEmpty();
        }
Пример #3
0
        public void Check_StepAssemblies_OneEntry()
        {
            string config = @"{
                                ""stepAssemblies"": 
                                   [ {""assembly"": ""testEntry""} ]
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.AdditionalStepAssemblies.Count.Should().Be(1);
            runtimeConfig.AdditionalStepAssemblies.First().Should().Be("testEntry");
        }
Пример #4
0
        public void Check_Trace_StepDefinitionSkeletonStyle_RegexAttribute()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""stepDefinitionSkeletonStyle"": ""RegexAttribute"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StepDefinitionSkeletonStyle.Should().Be(StepDefinitionSkeletonStyle.RegexAttribute);
        }
Пример #5
0
        public void Check_Defaults_Only_Root_Objects()
        {
            string configAsJson = @"{
                ""bindingCulture"": {},
                ""language"": {},
                ""generator"": {},
                ""runtime"": {},
                ""trace"": {}
            }";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            AssertDefaultJsonSpecFlowConfiguration(config);
        }
Пример #6
0
        public void Check_Trace_StepDefinitionSkeletonStyle_MethodNameUnderscores()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""stepDefinitionSkeletonStyle"": ""MethodNameUnderscores"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StepDefinitionSkeletonStyle.Should().Be(StepDefinitionSkeletonStyle.MethodNameUnderscores);
        }
Пример #7
0
        public void Check_Trace_minTracedDuration()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""minTracedDuration"": ""0:0:1.0"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.MinTracedDuration.Should().Be(TimeSpan.FromSeconds(1));
        }
Пример #8
0
        public void Trace_Listener_Not_Supported()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""listener"": ""TraceListener"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.CustomDependencies.Count.Should().Be(0);
        }
Пример #9
0
        public void Check_Trace_traceTimings_as_False()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""traceTimings"": ""false"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.TraceTimings.Should().BeFalse();
        }
Пример #10
0
        public void Check_Trace_traceSuccessfulSteps_as_True()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""traceSuccessfulSteps"": ""true"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.TraceSuccessfulSteps.Should().BeTrue();
        }
Пример #11
0
        public void Check_Runtime_missingOrPendingStepsOutcome_as_Inconclusive()
        {
            string config = @"{
                              ""specflow"": {
                                ""runtime"": { ""missingOrPendingStepsOutcome"": ""Inconclusive"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.MissingOrPendingStepsOutcome.Should().Be(MissingOrPendingStepsOutcome.Inconclusive);
        }
Пример #12
0
        public void CheckUnitTestProvider()
        {
            string config = @"{
                              ""specflow"": {
                                ""unitTestProvider"": { ""name"": ""XUnit"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.UnitTestProvider.Should().Be("XUnit");
        }
Пример #13
0
        public void CheckBindingCulture()
        {
            string config = @"{
                              ""specflow"": {
                                ""bindingCulture"": { ""name"": ""de"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.BindingCulture.TwoLetterISOLanguageName.Should().Be("de");
        }
Пример #14
0
        public void Check_StepAssemblies_IsEmpty()
        {
            string config = @"{
                              ""specflow"": {
                                  ""stepAssemblies"" : [
                                 ]
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.AdditionalStepAssemblies.Should().BeEmpty();
        }
Пример #15
0
        public SpecFlowConfiguration LoadConfiguration(SpecFlowConfiguration specFlowConfiguration)
        {
            if (IsJsonConfig)
            {
                var jsonConfigurationLoader = new JsonConfigurationLoader();

                return(jsonConfigurationLoader.LoadJson(specFlowConfiguration, configFileContent));
            }

            ConfigurationSectionHandler section = GetSection();

            var runtimeConfigurationLoader = new AppConfigConfigurationLoader();

            return(runtimeConfigurationLoader.LoadAppConfig(specFlowConfiguration, section));
        }
Пример #16
0
        public void Check_Generator_NonParallelizableMarkers_EmptyList()
        {
            string configAsJson = @"{
                                        ""generator"":
                                        {
                                            ""addNonParallelizableMarkerForTags"":
                                            [
                                            ]
                                        }
                                    }";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            config.AddNonParallelizableMarkerForTags.Should().BeEmpty();
        }
Пример #17
0
        public void Check_Defaults_For_One_Config_Element()
        {
            var    traceTimings = true;
            string configAsJson = $@"{{
                ""trace"": {{
                    ""traceTimings"": {traceTimings}
                }}
            }}";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            config.TraceTimings.Should().Be(traceTimings);
            config.MinTracedDuration.Should().Be(TimeSpan.Parse(ConfigDefaults.MinTracedDuration));
            config.StepDefinitionSkeletonStyle.Should().Be(ConfigDefaults.StepDefinitionSkeletonStyle);
            config.TraceSuccessfulSteps.Should().Be(ConfigDefaults.TraceSuccessfulSteps);
        }
Пример #18
0
        public void Check_Generator_NonParallelizableMarkers_SingleTag()
        {
            string configAsJson = @"{
                                        ""generator"":
                                        {
                                            ""addNonParallelizableMarkerForTags"":
                                            [
                                                ""tag1""
                                            ]
                                        }
                                    }";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            config.AddNonParallelizableMarkerForTags.Should().BeEquivalentTo("tag1");
        }
Пример #19
0
        public void Check_CucumberMessages_Sinks_EmptyList()
        {
            string config = @"{
                                ""cucumber-messages"":
                                {
                                    ""enabled"": false,
                                    ""sinks"":
                                    [
                                    ]
                                }
                            }";

            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.CucumberMessagesConfiguration.Sinks.Should().BeEmpty();
        }
Пример #20
0
        public void Check_CucumberMessages_Sinks_ListOneEntry()
        {
            string config = @"{
                                ""cucumber-messages"":
                                {
                                    ""enabled"": false,
                                    ""sinks"":
                                    [
                                        { ""type"": ""file"", ""path"": ""C:\temp\testrun.cm"" }
                                    ]
                                }
                            }";

            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.CucumberMessagesConfiguration.Sinks.Count.Should().Be(1);
        }
Пример #21
0
        public void Check_Plugins_Parameters()
        {
            string config = @"{
                              ""specflow"": {
                                ""plugins"": 
                                  [
                                    { ""name"": ""testEntry"", ""parameters"":""pluginParameter"" }
                                  ]                                
                              }
                            }";


            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.Plugins.Count.Should().Be(1);
            runtimeConfig.Plugins.First().Parameters.Should().Be("pluginParameter");
        }
Пример #22
0
        public void Check_Plugins_PluginType_GeneratorAndRuntime()
        {
            string config = @"{
                              ""specflow"": {
                                ""plugins"": 
                                  [
                                    { ""name"": ""testEntry"", ""type"":""GeneratorAndRuntime"" }
                                  ]                                
                              }
                            }";


            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.Plugins.Count.Should().Be(1);
            runtimeConfig.Plugins.First().Type.Should().Be(PluginType.GeneratorAndRuntime);
        }
Пример #23
0
        public void Check_Plugins_TwoSameNameEntry()
        {
            string config = @"{
                              ""specflow"": {
                                ""plugins"": 
                                  [
                                    { ""name"": ""testEntry"" },
                                    { ""name"": ""testEntry"" }
                                  ]                                
                              }
                            }";

            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.Plugins.Count.Should().Be(1);
            runtimeConfig.Plugins[0].Name.Should().Be("testEntry");
        }
Пример #24
0
        public void Check_StepAssemblies_TwoEntry()
        {
            string config = @"{
                              ""specflow"": {
                                ""stepAssemblies"": [
                                    { ""assembly"": ""testEntry1"" },
                                    { ""assembly"": ""testEntry2"" }
                                  ]
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.AdditionalStepAssemblies.Count.Should().Be(2);
            runtimeConfig.AdditionalStepAssemblies[0].Should().Be("testEntry1");
            runtimeConfig.AdditionalStepAssemblies[1].Should().Be("testEntry2");
        }
Пример #25
0
        public void Check_CucumberMessages_Sinks_DataOfEntry()
        {
            string config = @"{
                                ""cucumber-messages"":
                                {
                                    ""enabled"": false,
                                    ""sinks"":
                                    [
                                        { ""type"": ""file"", ""path"": ""C:\\temp\\testrun.cm"" }
                                    ]
                                }
                            }";

            var runtimeConfig        = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);
            var cucumberMessagesSink = runtimeConfig.CucumberMessagesConfiguration.Sinks.First();

            cucumberMessagesSink.Type.Should().Be("file");
            cucumberMessagesSink.Path.Should().Be(@"C:\temp\testrun.cm");
        }
Пример #26
0
        public SpecFlowConfiguration Load(SpecFlowConfiguration specFlowConfiguration)
        {
            if (_configFilePath == null)
            {
                return(LoadDefaultConfiguration(specFlowConfiguration));
            }

            var extension         = Path.GetExtension(_configFilePath);
            var configFileContent = File.ReadAllText(_configFilePath);

            switch (extension.ToLowerInvariant())
            {
            case ".config":
            {
                var configDocument = new XmlDocument();
                configDocument.LoadXml(configFileContent);
                var specFlowNode = configDocument.SelectSingleNode("/configuration/specFlow");
                if (specFlowNode == null)
                {
                    return(LoadDefaultConfiguration(specFlowConfiguration));
                }

                var configSection = ConfigurationSectionHandler.CreateFromXml(specFlowNode);
                var loader        = new AppConfigConfigurationLoader();
                return(loader.LoadAppConfig(specFlowConfiguration, configSection));
            }

            case ".json":
            {
                if (_jsonSpecFlow2Mode)
                {
                    configFileContent = ConvertToJsonSpecFlow2Style(configFileContent);
                }

                var loader = new JsonConfigurationLoader();
                return(loader.LoadJson(specFlowConfiguration, configFileContent));
            }
            }
            throw new ConfigurationErrorsException($"Invalid config type: {_configFilePath}");
        }
Пример #27
0
        public void CanLoadConfigFromString(string configString)
        {
            var configurationLoader = new JsonConfigurationLoader();

            configurationLoader.LoadJson(ConfigurationLoader.GetDefault(), configString);
        }
Пример #28
0
 public ConfigurationLoader(ISpecFlowJsonLocator specFlowJsonLocator)
 {
     _specFlowJsonLocator          = specFlowJsonLocator;
     _jsonConfigurationLoader      = new JsonConfigurationLoader();
     _appConfigConfigurationLoader = new AppConfigConfigurationLoader();
 }
Пример #29
0
 public ConfigurationLoader()
 {
     _jsonConfigurationLoader      = new JsonConfigurationLoader();
     _appConfigConfigurationLoader = new AppConfigConfigurationLoader();
 }