mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-02 21:35:40 +02:00
Add support for PlayStation platforms (#2562)
* Add new `CATCH_CONFIG` option for using `std::getenv`, because PS does not support env vars * Add PS to platforms that have disabled posix signals. * Small workaround for PS toolchain bug that prevents it from compiling `std::set` with lambda based comparator.
This commit is contained in:
@@ -130,6 +130,16 @@
|
||||
|
||||
|
||||
|
||||
#cmakedefine CATCH_CONFIG_GETENV
|
||||
#cmakedefine CATCH_CONFIG_NO_GETENV
|
||||
|
||||
#if defined( CATCH_CONFIG_GETENV ) && \
|
||||
defined( CATCH_CONFIG_NO_GETENV )
|
||||
# error Cannot force GETENV to both ON and OFF
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#cmakedefine CATCH_CONFIG_USE_ASYNC
|
||||
#cmakedefine CATCH_CONFIG_NO_USE_ASYNC
|
||||
|
||||
|
@@ -118,19 +118,25 @@
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Assume that non-Windows platforms support posix signals by default
|
||||
#if !defined(CATCH_PLATFORM_WINDOWS)
|
||||
#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS
|
||||
// We know some environments not to support full POSIX signals
|
||||
#if defined( CATCH_PLATFORM_WINDOWS ) || \
|
||||
defined( CATCH_PLATFORM_PLAYSTATION ) || \
|
||||
defined( __CYGWIN__ ) || \
|
||||
defined( __QNX__ ) || \
|
||||
defined( __EMSCRIPTEN__ ) || \
|
||||
defined( __DJGPP__ ) || \
|
||||
defined( __OS400__ )
|
||||
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
||||
#else
|
||||
# define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// We know some environments not to support full POSIX signals
|
||||
#if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__)
|
||||
#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
||||
#endif
|
||||
|
||||
#ifdef __OS400__
|
||||
# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS
|
||||
// Assume that some platforms do not support getenv.
|
||||
#if defined(CATCH_PLATFORM_WINDOWS_UWP) || defined(CATCH_PLATFORM_PLAYSTATION)
|
||||
# define CATCH_INTERNAL_CONFIG_NO_GETENV
|
||||
#else
|
||||
# define CATCH_INTERNAL_CONFIG_GETENV
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -273,6 +279,10 @@
|
||||
# define CATCH_CONFIG_POSIX_SIGNALS
|
||||
#endif
|
||||
|
||||
#if defined(CATCH_INTERNAL_CONFIG_GETENV) && !defined(CATCH_INTERNAL_CONFIG_NO_GETENV) && !defined(CATCH_CONFIG_NO_GETENV) && !defined(CATCH_CONFIG_GETENV)
|
||||
# define CATCH_CONFIG_GETENV
|
||||
#endif
|
||||
|
||||
#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING)
|
||||
# define CATCH_CONFIG_CPP11_TO_STRING
|
||||
#endif
|
||||
|
@@ -7,14 +7,16 @@
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
|
||||
#include <catch2/internal/catch_getenv.hpp>
|
||||
|
||||
#include <catch2/internal/catch_platform.hpp>
|
||||
#include <catch2/internal/catch_compiler_capabilities.hpp>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace Catch {
|
||||
namespace Detail {
|
||||
|
||||
#if defined( CATCH_PLATFORM_WINDOWS_UWP )
|
||||
#if !defined (CATCH_CONFIG_GETENV)
|
||||
char const* getEnv( char const* ) { return nullptr; }
|
||||
#else
|
||||
|
||||
@@ -29,8 +31,7 @@ namespace Catch {
|
||||
# if defined( _MSC_VER )
|
||||
# pragma warning( pop )
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace Detail
|
||||
} // namespace Catch
|
||||
|
@@ -28,6 +28,10 @@
|
||||
# if defined( WINAPI_FAMILY ) && ( WINAPI_FAMILY == WINAPI_FAMILY_APP )
|
||||
# define CATCH_PLATFORM_WINDOWS_UWP
|
||||
# endif
|
||||
|
||||
#elif defined(__ORBIS__) || defined(__PROSPERO__)
|
||||
# define CATCH_PLATFORM_PLAYSTATION
|
||||
|
||||
#endif
|
||||
|
||||
#endif // CATCH_PLATFORM_HPP_INCLUDED
|
||||
|
@@ -89,7 +89,7 @@ namespace Catch {
|
||||
TestCaseInfo const* rhs ) {
|
||||
return *lhs < *rhs;
|
||||
};
|
||||
std::set<TestCaseInfo const*, decltype(testInfoCmp)> seenTests(testInfoCmp);
|
||||
std::set<TestCaseInfo const*, decltype(testInfoCmp) &> seenTests(testInfoCmp);
|
||||
for ( auto const& test : tests ) {
|
||||
const auto infoPtr = &test.getTestCaseInfo();
|
||||
const auto prev = seenTests.insert( infoPtr );
|
||||
|
@@ -31,6 +31,8 @@ namespace Catch {
|
||||
std::tm timeInfo = {};
|
||||
#if defined (_MSC_VER) || defined (__MINGW32__)
|
||||
gmtime_s(&timeInfo, &rawtime);
|
||||
#elif defined (CATCH_PLATFORM_PLAYSTATION)
|
||||
gmtime_s(&rawtime, &timeInfo);
|
||||
#else
|
||||
gmtime_r(&rawtime, &timeInfo);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user