| /* |
| * Created by Martin on 19/07/2017. |
| * |
| * Distributed under the Boost Software License, Version 1.0. (See accompanying |
| * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| |
| #include "catch_config.hpp" |
| #include "catch_enforce.h" |
| #include "catch_stringref.h" |
| |
| namespace Catch { |
| |
| Config::Config( ConfigData const& data ) |
| : m_data( data ), |
| m_stream( openStream() ) |
| { |
| // We need to trim filter specs to avoid trouble with superfluous |
| // whitespace (esp. important for bdd macros, as those are manually |
| // aligned with whitespace). |
| |
| for (auto& elem : m_data.testsOrTags) { |
| elem = trim(elem); |
| } |
| for (auto& elem : m_data.sectionsToRun) { |
| elem = trim(elem); |
| } |
| |
| TestSpecParser parser(ITagAliasRegistry::get()); |
| if (!m_data.testsOrTags.empty()) { |
| m_hasTestFilters = true; |
| for (auto const& testOrTags : m_data.testsOrTags) { |
| parser.parse(testOrTags); |
| } |
| } |
| m_testSpec = parser.testSpec(); |
| } |
| |
| std::string const& Config::getFilename() const { |
| return m_data.outputFilename ; |
| } |
| |
| bool Config::listTests() const { return m_data.listTests; } |
| bool Config::listTestNamesOnly() const { return m_data.listTestNamesOnly; } |
| bool Config::listTags() const { return m_data.listTags; } |
| bool Config::listReporters() const { return m_data.listReporters; } |
| |
| std::string Config::getProcessName() const { return m_data.processName; } |
| std::string const& Config::getReporterName() const { return m_data.reporterName; } |
| |
| std::vector<std::string> const& Config::getTestsOrTags() const { return m_data.testsOrTags; } |
| std::vector<std::string> const& Config::getSectionsToRun() const { return m_data.sectionsToRun; } |
| |
| TestSpec const& Config::testSpec() const { return m_testSpec; } |
| bool Config::hasTestFilters() const { return m_hasTestFilters; } |
| |
| bool Config::showHelp() const { return m_data.showHelp; } |
| |
| // IConfig interface |
| bool Config::allowThrows() const { return !m_data.noThrow; } |
| std::ostream& Config::stream() const { return m_stream->stream(); } |
| std::string Config::name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } |
| bool Config::includeSuccessfulResults() const { return m_data.showSuccessfulTests; } |
| bool Config::warnAboutMissingAssertions() const { return !!(m_data.warnings & WarnAbout::NoAssertions); } |
| bool Config::warnAboutNoTests() const { return !!(m_data.warnings & WarnAbout::NoTests); } |
| ShowDurations::OrNot Config::showDurations() const { return m_data.showDurations; } |
| RunTests::InWhatOrder Config::runOrder() const { return m_data.runOrder; } |
| unsigned int Config::rngSeed() const { return m_data.rngSeed; } |
| UseColour::YesOrNo Config::useColour() const { return m_data.useColour; } |
| bool Config::shouldDebugBreak() const { return m_data.shouldDebugBreak; } |
| int Config::abortAfter() const { return m_data.abortAfter; } |
| bool Config::showInvisibles() const { return m_data.showInvisibles; } |
| Verbosity Config::verbosity() const { return m_data.verbosity; } |
| |
| bool Config::benchmarkNoAnalysis() const { return m_data.benchmarkNoAnalysis; } |
| int Config::benchmarkSamples() const { return m_data.benchmarkSamples; } |
| double Config::benchmarkConfidenceInterval() const { return m_data.benchmarkConfidenceInterval; } |
| unsigned int Config::benchmarkResamples() const { return m_data.benchmarkResamples; } |
| std::chrono::milliseconds Config::benchmarkWarmupTime() const { return std::chrono::milliseconds(m_data.benchmarkWarmupTime); } |
| |
| IStream const* Config::openStream() { |
| return Catch::makeStream(m_data.outputFilename); |
| } |
| |
| } // end namespace Catch |