public static List <TestCase> GetSpecs(GaugeTestRunSettings testRunSettings, ITestCaseDiscoverySink discoverySink, IEnumerable <string> sources, IMessageLogger logger) { var gaugeProjectProperties = testRunSettings.ProjectsProperties; var props = string.Join(",", gaugeProjectProperties.Select(p => $"ProjectRoot: {p.ProjectRoot}, OutputPath: {p.BuildOutputPath}, API Port: {p.ApiPort}")); logger.SendMessage(TestMessageLevel.Informational, $"Discover Scenarios started. Using : {props}"); var testCases = new ConcurrentBag <TestCase>(); var testSources = sources.Where(s => string.CompareOrdinal(s, "Suite") != 0); try { Parallel.ForEach(gaugeProjectProperties, properties => { var protoSpecs = Specification.GetAllSpecs(properties.ApiPort); Parallel.ForEach(protoSpecs, spec => { if (testSources.All(s => string.CompareOrdinal(s, spec.FileName) != 0)) { return; } logger.SendMessage(TestMessageLevel.Informational, $"Adding test cases from : {spec.FileName}"); var scenarios = spec.Items.Where(item => item.Scenario != null).Select(item => item.Scenario); foreach (var scenario in scenarios) { var testCase = CreateTestCase(logger, spec, scenario, properties); testCases.Add(testCase); discoverySink?.SendTestCase(testCase); } }); }); } catch (Exception e) { logger.SendMessage(TestMessageLevel.Error, e.ToString()); } return(testCases.ToList()); }
public GaugeTestRunSettingsService() { Name = GaugeTestRunSettings.SettingsName; Settings = new GaugeTestRunSettings(); Serializer = new XmlSerializer(typeof(GaugeTestRunSettings)); }