102030405060708090100110120130140150160170180190200210220230240250260270280290300310320330340350360370380390400410420430440450460470480490500510520530540550560570580590600610620630640650660670680690700710720730740750760770780790800810820830840850860870880890900910920930940950960970980990100010101020103010401050106010701080109011001110112011301140115011601170118011901200121012201230124012501260127012801290130013101320 module trial.settings; import std.conv; import trial.reporters.result; import trial.reporters.spec; import trial.reporters.specsteps; import trial.reporters.dotmatrix; import trial.reporters.landing; import trial.reporters.progress; version(Have_dub) { import dub.internal.vibecompat.data.serialization; } mixin template SettingsFields() { string[] reporters = ["spec", "result"]; string[] testDiscovery = ["trial.discovery.unit.UnitTestDiscovery"]; uint maxThreads = 0; GlyphSettings glyphs; string artifactsLocation = ".trial"; uint warningTestDuration = 20; uint dangerTestDuration = 100; string[] plugins = []; string executor = "default"; } struct Settings { version(Have_dub) { @optional { mixin SettingsFields; } } else { mixin SettingsFields; } } mixin template GlyphSettingsFields() { SpecGlyphs spec; SpecStepsGlyphs specSteps; TestResultGlyphs result; DotMatrixGlyphs dotMatrix; LandingGlyphs landing; ProgressGlyphs progress; } struct GlyphSettings { version(Have_dub) { @optional { mixin GlyphSettingsFields; } } else { mixin GlyphSettingsFields; } } string toCode(Settings settings) { auto executor = settings.executor == "default" ? "" : settings.executor; return "Settings(" ~ settings.reporters.to!string ~ ", " ~ settings.testDiscovery.to!string ~ ", " ~ settings.maxThreads.to!string ~ ", " ~ settings.glyphs.toCode ~ ", " ~ `"` ~ settings.artifactsLocation ~ `", ` ~ settings.warningTestDuration.to!string ~ `, ` ~ settings.dangerTestDuration.to!string ~ ", " ~ settings.plugins.to!string ~ ", " ~ `"` ~ executor ~ `"` ~ ")"; } string toCode(GlyphSettings settings) { return "GlyphSettings(" ~ specGlyphsToCode(settings.spec) ~ ", " ~ specStepsGlyphsToCode(settings.specSteps) ~ ", " ~ testResultGlyphsToCode(settings.result) ~ ", " ~ dotMatrixGlyphsToCode(settings.dotMatrix) ~ ", " ~ landingGlyphsToCode(settings.landing) ~ ", " ~ progressGlyphsToCode(settings.progress) ~ ")"; }
module trial.settings; import std.conv; import trial.reporters.result; import trial.reporters.spec; import trial.reporters.specsteps; import trial.reporters.dotmatrix; import trial.reporters.landing; import trial.reporters.progress; version(Have_dub) { import dub.internal.vibecompat.data.serialization; } mixin template SettingsFields() { string[] reporters = ["spec", "result"]; string[] testDiscovery = ["trial.discovery.unit.UnitTestDiscovery"]; uint maxThreads = 0; GlyphSettings glyphs; string artifactsLocation = ".trial"; uint warningTestDuration = 20; uint dangerTestDuration = 100; string[] plugins = []; string executor = "default"; } struct Settings { version(Have_dub) { @optional { mixin SettingsFields; } } else { mixin SettingsFields; } } mixin template GlyphSettingsFields() { SpecGlyphs spec; SpecStepsGlyphs specSteps; TestResultGlyphs result; DotMatrixGlyphs dotMatrix; LandingGlyphs landing; ProgressGlyphs progress; } struct GlyphSettings { version(Have_dub) { @optional { mixin GlyphSettingsFields; } } else { mixin GlyphSettingsFields; } } string toCode(Settings settings) { auto executor = settings.executor == "default" ? "" : settings.executor; return "Settings(" ~ settings.reporters.to!string ~ ", " ~ settings.testDiscovery.to!string ~ ", " ~ settings.maxThreads.to!string ~ ", " ~ settings.glyphs.toCode ~ ", " ~ `"` ~ settings.artifactsLocation ~ `", ` ~ settings.warningTestDuration.to!string ~ `, ` ~ settings.dangerTestDuration.to!string ~ ", " ~ settings.plugins.to!string ~ ", " ~ `"` ~ executor ~ `"` ~ ")"; } string toCode(GlyphSettings settings) { return "GlyphSettings(" ~ specGlyphsToCode(settings.spec) ~ ", " ~ specStepsGlyphsToCode(settings.specSteps) ~ ", " ~ testResultGlyphsToCode(settings.result) ~ ", " ~ dotMatrixGlyphsToCode(settings.dotMatrix) ~ ", " ~ landingGlyphsToCode(settings.landing) ~ ", " ~ progressGlyphsToCode(settings.progress) ~ ")"; }