Add Detail::getEnv wrapper that compiles under UWP

Under UWP it will always return nullptr, so UWP will essentially
behave as if the environment was just empty.
This commit is contained in:
Martin Hořeňovský 2022-10-22 13:00:31 +02:00
parent 2d0dcc36e8
commit 3fed2307e7
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
5 changed files with 61 additions and 0 deletions

View File

@ -78,6 +78,7 @@ set(INTERNAL_HEADERS
${SOURCES_DIR}/internal/catch_exception_translator_registry.hpp
${SOURCES_DIR}/internal/catch_fatal_condition_handler.hpp
${SOURCES_DIR}/internal/catch_floating_point_helpers.hpp
${SOURCES_DIR}/internal/catch_getenv.hpp
${SOURCES_DIR}/internal/catch_istream.hpp
${SOURCES_DIR}/internal/catch_unique_name.hpp
${SOURCES_DIR}/internal/catch_sharding.hpp
@ -184,6 +185,7 @@ set(IMPL_SOURCES
${SOURCES_DIR}/internal/catch_exception_translator_registry.cpp
${SOURCES_DIR}/internal/catch_fatal_condition_handler.cpp
${SOURCES_DIR}/internal/catch_floating_point_helpers.cpp
${SOURCES_DIR}/internal/catch_getenv.cpp
${SOURCES_DIR}/internal/catch_istream.cpp
${SOURCES_DIR}/internal/catch_parse_numbers.cpp
${SOURCES_DIR}/interfaces/catch_interfaces_generatortracker.cpp

View File

@ -68,6 +68,7 @@
#include <catch2/internal/catch_exception_translator_registry.hpp>
#include <catch2/internal/catch_fatal_condition_handler.hpp>
#include <catch2/internal/catch_floating_point_helpers.hpp>
#include <catch2/internal/catch_getenv.hpp>
#include <catch2/internal/catch_istream.hpp>
#include <catch2/internal/catch_lazy_expr.hpp>
#include <catch2/internal/catch_leak_detector.hpp>

View File

@ -0,0 +1,36 @@
// 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/internal/catch_getenv.hpp>
#include <catch2/internal/catch_platform.hpp>
#include <cstdlib>
namespace Catch {
namespace Detail {
#if defined( CATCH_PLATFORM_WINDOWS_UWP )
char const* getEnv( char const* ) { return nullptr; }
#else
char const* getEnv( char const* varName ) {
# if defined( _MSC_VER )
# pragma warning( push )
# pragma warning( disable : 4996 ) // use getenv_s instead of getenv
# endif
return std::getenv( varName );
# if defined( _MSC_VER )
# pragma warning( pop )
# endif
#endif
}
} // namespace Detail
} // namespace Catch

View File

@ -0,0 +1,20 @@
// 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
#ifndef CATCH_GETENV_HPP_INCLUDED
#define CATCH_GETENV_HPP_INCLUDED
namespace Catch {
namespace Detail {
//! Wrapper over `std::getenv` that compiles on UWP (and always returns nullptr there)
char const* getEnv(char const* varName);
}
}
#endif // CATCH_GETENV_HPP_INCLUDED

View File

@ -90,6 +90,7 @@ internal_headers = [
'internal/catch_exception_translator_registry.hpp',
'internal/catch_fatal_condition_handler.hpp',
'internal/catch_floating_point_helpers.hpp',
'internal/catch_getenv.hpp',
'internal/catch_istream.hpp',
'internal/catch_lazy_expr.hpp',
'internal/catch_leak_detector.hpp',
@ -202,6 +203,7 @@ internal_sources = files(
'internal/catch_exception_translator_registry.cpp',
'internal/catch_fatal_condition_handler.cpp',
'internal/catch_floating_point_helpers.cpp',
'internal/catch_getenv.cpp',
'internal/catch_istream.cpp',
'internal/catch_lazy_expr.cpp',
'internal/catch_leak_detector.cpp',