mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-26 07:16:10 +01:00
Session::applyCommandLine overload on wchar_t (#1401)
* Session::applyCommandLine overload on wchar_t This allows users on Windows to use Catch::Session::applyCommandLine with wchar_t * arguments of application. With this change Session::run became templated so both char and wchar_t version have the same implementation.
This commit is contained in:
parent
6b9ca0888a
commit
e1307016f0
@ -185,22 +185,8 @@ namespace Catch {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::useConfigData( ConfigData const& configData ) {
|
|
||||||
m_configData = configData;
|
|
||||||
m_config.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
int Session::run( int argc, char* argv[] ) {
|
|
||||||
if( m_startupExceptions )
|
|
||||||
return 1;
|
|
||||||
int returnCode = applyCommandLine( argc, argv );
|
|
||||||
if( returnCode == 0 )
|
|
||||||
returnCode = run();
|
|
||||||
return returnCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
|
#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
|
||||||
int Session::run( int argc, wchar_t* const argv[] ) {
|
int Session::applyCommandLine( int argc, wchar_t const * const * argv ) {
|
||||||
|
|
||||||
char **utf8Argv = new char *[ argc ];
|
char **utf8Argv = new char *[ argc ];
|
||||||
|
|
||||||
@ -212,7 +198,7 @@ namespace Catch {
|
|||||||
WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL );
|
WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
int returnCode = run( argc, utf8Argv );
|
int returnCode = applyCommandLine( argc, utf8Argv );
|
||||||
|
|
||||||
for ( int i = 0; i < argc; ++i )
|
for ( int i = 0; i < argc; ++i )
|
||||||
delete [] utf8Argv[ i ];
|
delete [] utf8Argv[ i ];
|
||||||
@ -222,6 +208,12 @@ namespace Catch {
|
|||||||
return returnCode;
|
return returnCode;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void Session::useConfigData( ConfigData const& configData ) {
|
||||||
|
m_configData = configData;
|
||||||
|
m_config.reset();
|
||||||
|
}
|
||||||
|
|
||||||
int Session::run() {
|
int Session::run() {
|
||||||
if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) {
|
if( ( m_configData.waitForKeypress & WaitForKeypress::BeforeStart ) != 0 ) {
|
||||||
Catch::cout() << "...waiting for enter/ return before starting" << std::endl;
|
Catch::cout() << "...waiting for enter/ return before starting" << std::endl;
|
||||||
|
@ -26,13 +26,22 @@ namespace Catch {
|
|||||||
void libIdentify();
|
void libIdentify();
|
||||||
|
|
||||||
int applyCommandLine( int argc, char const * const * argv );
|
int applyCommandLine( int argc, char const * const * argv );
|
||||||
|
#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
|
||||||
|
int applyCommandLine( int argc, wchar_t const * const * argv );
|
||||||
|
#endif
|
||||||
|
|
||||||
void useConfigData( ConfigData const& configData );
|
void useConfigData( ConfigData const& configData );
|
||||||
|
|
||||||
int run( int argc, char* argv[] );
|
template<typename CharT>
|
||||||
#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
|
int run(int argc, CharT const * const argv[]) {
|
||||||
int run( int argc, wchar_t* const argv[] );
|
if (m_startupExceptions)
|
||||||
#endif
|
return 1;
|
||||||
|
int returnCode = applyCommandLine(argc, argv);
|
||||||
|
if (returnCode == 0)
|
||||||
|
returnCode = run();
|
||||||
|
return returnCode;
|
||||||
|
}
|
||||||
|
|
||||||
int run();
|
int run();
|
||||||
|
|
||||||
clara::Parser const& cli() const;
|
clara::Parser const& cli() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user