diff --git a/googletest/include/gtest/internal/gtest-port-arch.h b/googletest/include/gtest/internal/gtest-port-arch.h index 7ec968f3..fbffc95b 100644 --- a/googletest/include/gtest/internal/gtest-port-arch.h +++ b/googletest/include/gtest/internal/gtest-port-arch.h @@ -119,6 +119,8 @@ #define GTEST_OS_NXP_QN9090 1 #elif defined(NRF52) #define GTEST_OS_NRF52 1 +#elif defined(__EMSCRIPTEN__) +#define GTEST_OS_EMSCRIPTEN 1 #endif // __CYGWIN__ #endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_ diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h index f6394a00..3aa92057 100644 --- a/googletest/include/gtest/internal/gtest-port.h +++ b/googletest/include/gtest/internal/gtest-port.h @@ -664,12 +664,22 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION; defined(GTEST_OS_NETBSD) || defined(GTEST_OS_FUCHSIA) || \ defined(GTEST_OS_DRAGONFLY) || defined(GTEST_OS_GNU_KFREEBSD) || \ defined(GTEST_OS_HAIKU) || defined(GTEST_OS_GNU_HURD)) + // Death tests require a file system to work properly. #if GTEST_HAS_FILE_SYSTEM #define GTEST_HAS_DEATH_TEST 1 #endif // GTEST_HAS_FILE_SYSTEM #endif +// Determines whether the Premature Exit file can be created. +// Created by default when Death tests are supported, but other platforms can +// use the Premature exit file without Death test support (e.g. for detecting +// crashes). +#if GTEST_HAS_DEATH_TEST || \ + (defined(GTEST_OS_EMSCRIPTEN) && GTEST_HAS_FILE_SYSTEM) +#define GTEST_INTERNAL_HAS_PREMATURE_EXIT_FILE 1 +#endif + // Determines whether to support type-driven tests. // Typed tests need and variadic macros, which GCC, VC++ 8.0, diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index 80a7edad..193f880b 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -5132,7 +5132,7 @@ void OsStackTraceGetter::UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_) { #endif // GTEST_HAS_ABSL } -#ifdef GTEST_HAS_DEATH_TEST +#ifdef GTEST_INTERNAL_HAS_PREMATURE_EXIT_FILE // A helper class that creates the premature-exit file in its // constructor and deletes the file in its destructor. class ScopedPrematureExitFile { @@ -5170,7 +5170,7 @@ class ScopedPrematureExitFile { ScopedPrematureExitFile(const ScopedPrematureExitFile&) = delete; ScopedPrematureExitFile& operator=(const ScopedPrematureExitFile&) = delete; }; -#endif // GTEST_HAS_DEATH_TEST +#endif // GTEST_INTERNAL_HAS_PREMATURE_EXIT_FILE } // namespace internal @@ -5515,7 +5515,7 @@ void UnitTest::RecordProperty(const std::string& key, // We don't protect this under mutex_, as we only support calling it // from the main thread. int UnitTest::Run() { -#ifdef GTEST_HAS_DEATH_TEST +#ifdef GTEST_INTERNAL_HAS_PREMATURE_EXIT_FILE const bool in_death_test_child_process = !GTEST_FLAG_GET(internal_run_death_test).empty(); @@ -5546,7 +5546,7 @@ int UnitTest::Run() { : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE")); #else const bool in_death_test_child_process = false; -#endif // GTEST_HAS_DEATH_TEST +#endif // GTEST_INTERNAL_HAS_PREMATURE_EXIT_FILE // Captures the value of GTEST_FLAG(catch_exceptions). This value will be // used for the duration of the program.