public static FixtureEngine LoadConfiguration(this FixtureEngine @this, CarnaWinUIRunnerHost host) { using var stream = new FileStream(Path.Combine(Path.GetDirectoryName(Environment.ProcessPath) ?? string.Empty, "carna-runner-settings.json"), FileMode.Open, FileAccess.Read); stream.Position = stream.ReadByte() == 0xef ? 3 : 0; var serializer = new DataContractJsonSerializer( typeof(CarnaWinUIRunnerConfiguration), new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true } ); if (serializer.ReadObject(stream) is not CarnaWinUIRunnerConfiguration configuration) { return(@this); } configuration.Ensure(new AssemblyLoader()); @this.Configure(configuration); host.AutoExit = configuration.AutoExit; if (configuration.Formatter is not null) { host.Formatter = configuration.Formatter.Create <IFixtureFormatter>(@this.Assemblies); } return(@this); }
private async Task <List <IFixture> > BuildFixtures(CarnaWinUIRunnerHost host, FixtureEngine engine, DispatcherQueue dispatcher) { var fixtures = await Task.Run(() => engine.BuildFixtures().ToList()); var fixtureContents = host.Fixtures; await Task.Run(() => Configure(host, fixtures, fixtureContents, engine.Filter, dispatcher)); SetChildOpenCondition(host.Summary, host.Fixtures); return(fixtures); }
private static FixtureEngine LoadConfiguration(this FixtureEngine @this, string filePath) { if (!File.Exists(filePath)) { return(@this); } var configuration = LoadConfiguration(filePath)?.Ensure(AssemblyLoader); return(configuration is null ? @this : @this.Configure(configuration)); }
private static FixtureEngine AddDefaultFilter(this FixtureEngine @this, string?filter) { if (string.IsNullOrEmpty(filter)) { return(@this); } @this.Filter = new FixtureFilter(new Dictionary <string, string?> { ["pattern"] = filter }); return(@this); }
private async void OnLoaded(object?sender, RoutedEventArgs e) { if (DataContext is not CarnaWinUIRunnerHost host) { return; } try { if (sender is not FrameworkElement element) { return; } var engine = new FixtureEngine().LoadConfiguration(host); host.Summary.OnFixtureBuildingStarting(); var fixtures = await BuildFixtures(host, engine, element.DispatcherQueue); host.Summary.OnFixtureBuildingCompleted(DateTime.UtcNow); AdjustFixtureContentMaxWidth(element.ActualWidth); host.Summary.OnFixtureRunningStarting(); var results = await Task.Run(() => engine.RunFixtures(fixtures)); host.Summary.OnFixtureRunningCompleted(results); OpenFailedFixtureContents(host.Fixtures); MarkFirstFailedFixtureContent(host.Fixtures); } catch (Exception exc) { AppendErrorMessage(exc.ToString()); } finally { if (host.AutoExit) { Application.Current.Exit(); } } }
public static FixtureEngine AddSummaryReporter(this FixtureEngine @this) => @this.AddReporter(new ConsoleFixtureSummaryReporter());
private static FixtureEngine AddAssemblies(this FixtureEngine @this, IEnumerable <string> assemblies) { @this.Assemblies.AddRange(assemblies.Select(AssemblyLoader.Load)); return(@this); }
public static FixtureEngine AddOptions(this FixtureEngine @this, CarnaRunnerCommandLineOptions options) { return(@this.LoadConfiguration(options.SettingsFilePath) .AddAssemblies(options.Assemblies) .AddDefaultFilter(options.Filter)); }