mirror of https://github.com/catchorg/Catch2.git
parent
4e6d306742
commit
fce42b62ad
|
@ -72,7 +72,7 @@ namespace Catch {
|
||||||
ShowDurations Config::showDurations() const { return m_data.showDurations; }
|
ShowDurations Config::showDurations() const { return m_data.showDurations; }
|
||||||
double Config::minDuration() const { return m_data.minDuration; }
|
double Config::minDuration() const { return m_data.minDuration; }
|
||||||
TestRunOrder Config::runOrder() const { return m_data.runOrder; }
|
TestRunOrder Config::runOrder() const { return m_data.runOrder; }
|
||||||
unsigned int Config::rngSeed() const { return m_data.rngSeed; }
|
unsigned int Config::rngSeed() const { return *m_data.rngSeed; }
|
||||||
UseColour Config::useColour() const { return m_data.useColour; }
|
UseColour Config::useColour() const { return m_data.useColour; }
|
||||||
bool Config::shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
bool Config::shouldDebugBreak() const { return m_data.shouldDebugBreak; }
|
||||||
int Config::abortAfter() const { return m_data.abortAfter; }
|
int Config::abortAfter() const { return m_data.abortAfter; }
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <catch2/catch_test_spec.hpp>
|
#include <catch2/catch_test_spec.hpp>
|
||||||
#include <catch2/interfaces/catch_interfaces_config.hpp>
|
#include <catch2/interfaces/catch_interfaces_config.hpp>
|
||||||
#include <catch2/internal/catch_unique_ptr.hpp>
|
#include <catch2/internal/catch_unique_ptr.hpp>
|
||||||
|
#include <catch2/internal/catch_optional.hpp>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -33,7 +34,7 @@ namespace Catch {
|
||||||
bool libIdentify = false;
|
bool libIdentify = false;
|
||||||
|
|
||||||
int abortAfter = -1;
|
int abortAfter = -1;
|
||||||
unsigned int rngSeed = 0;
|
Optional<unsigned int> rngSeed;
|
||||||
|
|
||||||
bool benchmarkNoAnalysis = false;
|
bool benchmarkNoAnalysis = false;
|
||||||
unsigned int benchmarkSamples = 100;
|
unsigned int benchmarkSamples = 100;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <catch2/internal/catch_move_and_forward.hpp>
|
#include <catch2/internal/catch_move_and_forward.hpp>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <ctime>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
@ -170,6 +171,10 @@ namespace Catch {
|
||||||
if( m_startupExceptions )
|
if( m_startupExceptions )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
if (!m_configData.rngSeed) {
|
||||||
|
m_configData.rngSeed = static_cast<unsigned int>(std::time(nullptr));
|
||||||
|
}
|
||||||
|
|
||||||
auto result = m_cli.parse( Clara::Args( argc, argv ) );
|
auto result = m_cli.parse( Clara::Args( argc, argv ) );
|
||||||
if( !result ) {
|
if( !result ) {
|
||||||
config();
|
config();
|
||||||
|
@ -187,6 +192,7 @@ namespace Catch {
|
||||||
showHelp();
|
showHelp();
|
||||||
if( m_configData.libIdentify )
|
if( m_configData.libIdentify )
|
||||||
libIdentify();
|
libIdentify();
|
||||||
|
|
||||||
m_config.reset();
|
m_config.reset();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -256,6 +262,7 @@ namespace Catch {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CATCH_TRY {
|
CATCH_TRY {
|
||||||
config(); // Force config to be constructed
|
config(); // Force config to be constructed
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
// SPDX-License-Identifier: BSL-1.0
|
||||||
#include <catch2/internal/catch_commandline.hpp>
|
#include <catch2/internal/catch_commandline.hpp>
|
||||||
|
|
||||||
|
#include <catch2/internal/catch_compiler_capabilities.hpp>
|
||||||
#include <catch2/catch_config.hpp>
|
#include <catch2/catch_config.hpp>
|
||||||
#include <catch2/internal/catch_string_manip.hpp>
|
#include <catch2/internal/catch_string_manip.hpp>
|
||||||
#include <catch2/interfaces/catch_interfaces_registry_hub.hpp>
|
#include <catch2/interfaces/catch_interfaces_registry_hub.hpp>
|
||||||
|
@ -15,6 +16,7 @@
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
@ -71,10 +73,28 @@ namespace Catch {
|
||||||
return ParserResult::ok( ParseResultType::Matched );
|
return ParserResult::ok( ParseResultType::Matched );
|
||||||
};
|
};
|
||||||
auto const setRngSeed = [&]( std::string const& seed ) {
|
auto const setRngSeed = [&]( std::string const& seed ) {
|
||||||
if( seed != "time" )
|
if( seed == "time" ) {
|
||||||
return Clara::Detail::convertInto( seed, config.rngSeed );
|
|
||||||
config.rngSeed = static_cast<unsigned int>(std::time(nullptr));
|
config.rngSeed = static_cast<unsigned int>(std::time(nullptr));
|
||||||
return ParserResult::ok(ParseResultType::Matched);
|
return ParserResult::ok(ParseResultType::Matched);
|
||||||
|
}
|
||||||
|
|
||||||
|
CATCH_TRY {
|
||||||
|
std::size_t parsedTo = 0;
|
||||||
|
unsigned long parsedSeed = std::stoul(seed, &parsedTo, 0);
|
||||||
|
if (parsedTo != seed.size()) {
|
||||||
|
return ParserResult::runtimeError("Could not parse '" + seed + "' as seed");
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Ideally we could parse unsigned int directly,
|
||||||
|
// but the stdlib doesn't provide helper for that
|
||||||
|
// type. After this is refactored to use fixed size
|
||||||
|
// type, we should check the parsed value is in range
|
||||||
|
// of the underlying type.
|
||||||
|
config.rngSeed = static_cast<unsigned int>(parsedSeed);
|
||||||
|
return ParserResult::ok(ParseResultType::Matched);
|
||||||
|
} CATCH_CATCH_ANON(std::exception const&) {
|
||||||
|
return ParserResult::runtimeError("Could not parse '" + seed + "' as seed");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
auto const setColourUsage = [&]( std::string const& useColour ) {
|
auto const setColourUsage = [&]( std::string const& useColour ) {
|
||||||
auto mode = toLower( useColour );
|
auto mode = toLower( useColour );
|
||||||
|
|
Loading…
Reference in New Issue