Files
Catch2/src/catch2/catch_config.cpp
T

89 lines
4.2 KiB
C++
Raw Normal View History

// Copyright Catch2 Authors
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
// SPDX-License-Identifier: BSL-1.0
#include <catch2/catch_config.hpp>
2020-03-30 10:34:21 +02:00
#include <catch2/internal/catch_enforce.hpp>
#include <catch2/internal/catch_stream.hpp>
2020-05-10 10:09:01 +02:00
#include <catch2/internal/catch_stringref.hpp>
2020-03-30 10:34:21 +02:00
#include <catch2/internal/catch_string_manip.hpp>
#include <catch2/internal/catch_test_spec_parser.hpp>
2020-07-29 16:29:41 +02:00
#include <catch2/interfaces/catch_interfaces_tag_alias_registry.hpp>
2017-07-19 10:13:47 +02:00
namespace Catch {
Config::Config( ConfigData const& data )
: m_data( data ),
m_stream( Catch::makeStream(m_data.outputFilename) )
2017-07-19 10:13:47 +02:00
{
// 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);
}
2017-07-19 10:13:47 +02:00
}
m_testSpec = parser.testSpec();
2017-07-19 10:13:47 +02:00
}
Config::~Config() = default;
2017-07-19 10:13:47 +02:00
std::string const& Config::getFilename() const {
return m_data.outputFilename ;
}
bool Config::listTests() const { return m_data.listTests; }
bool Config::listTags() const { return m_data.listTags; }
bool Config::listReporters() const { return m_data.listReporters; }
2018-04-07 12:05:29 +02:00
std::string const& Config::getReporterName() const { return m_data.reporterName; }
2017-07-19 10:13:47 +02:00
2018-02-09 01:31:19 +02:00
std::vector<std::string> const& Config::getTestsOrTags() const { return m_data.testsOrTags; }
2017-07-19 10:13:47 +02:00
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; }
2017-07-19 10:13:47 +02:00
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; }
2018-02-09 01:31:19 +02:00
bool Config::warnAboutMissingAssertions() const { return !!(m_data.warnings & WarnAbout::NoAssertions); }
bool Config::warnAboutNoTests() const { return !!(m_data.warnings & WarnAbout::NoTests); }
2020-08-11 15:03:37 +02:00
ShowDurations Config::showDurations() const { return m_data.showDurations; }
2020-04-13 08:34:27 -04:00
double Config::minDuration() const { return m_data.minDuration; }
2020-08-11 15:46:03 +02:00
TestRunOrder Config::runOrder() const { return m_data.runOrder; }
2017-07-19 10:13:47 +02:00
unsigned int Config::rngSeed() const { return m_data.rngSeed; }
2020-08-11 15:50:51 +02:00
UseColour Config::useColour() const { return m_data.useColour; }
2017-07-19 10:13:47 +02:00
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; }
2017-07-19 10:13:47 +02:00
2020-01-27 15:43:27 +01:00
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); }
2019-04-23 23:41:13 +02:00
2017-07-19 10:13:47 +02:00
} // end namespace Catch