Esempio n. 1
0
    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);
    }
Esempio n. 3
0
    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));
    }
Esempio n. 4
0
    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();
            }
        }
    }
Esempio n. 6
0
 public static FixtureEngine AddSummaryReporter(this FixtureEngine @this)
 => @this.AddReporter(new ConsoleFixtureSummaryReporter());
Esempio n. 7
0
    private static FixtureEngine AddAssemblies(this FixtureEngine @this, IEnumerable <string> assemblies)
    {
        @this.Assemblies.AddRange(assemblies.Select(AssemblyLoader.Load));

        return(@this);
    }
Esempio n. 8
0
 public static FixtureEngine AddOptions(this FixtureEngine @this, CarnaRunnerCommandLineOptions options)
 {
     return(@this.LoadConfiguration(options.SettingsFilePath)
            .AddAssemblies(options.Assemblies)
            .AddDefaultFilter(options.Filter));
 }