diff options
author | Chris <chrisjohnsonmail@gmail.com> | 2019-10-14 02:39:54 (GMT) |
---|---|---|
committer | Chris <chrisjohnsonmail@gmail.com> | 2019-10-14 02:39:54 (GMT) |
commit | 778733f9ecdd2b14a0167df54dd25d2d6f6e24f6 (patch) | |
tree | 6bc53d159525957ead5df15a2adc1e3b7bfd9e53 | |
parent | ba513d2c9525a7c986c115ed5d603f2cf17c6016 (diff) | |
parent | 84a5ae8b85605fd51cf3d0107315670d3cf00fa4 (diff) | |
download | googletest-778733f9ecdd2b14a0167df54dd25d2d6f6e24f6.zip googletest-778733f9ecdd2b14a0167df54dd25d2d6f6e24f6.tar.gz googletest-778733f9ecdd2b14a0167df54dd25d2d6f6e24f6.tar.bz2 |
feat: Add ESP8266 support
* Added support for ESP8266
* Removed previous Arduino defines in favor
of GTEST_OS_* syntax
* Improved PlatformIO library file to be more
stable when consumed in client applications.
-rw-r--r-- | googlemock/src/gmock_main.cc | 9 | ||||
-rw-r--r-- | googletest/include/gtest/internal/gtest-port-arch.h | 4 | ||||
-rw-r--r-- | googletest/include/gtest/internal/gtest-port.h | 22 | ||||
-rw-r--r-- | googletest/src/gtest-filepath.cc | 7 | ||||
-rw-r--r-- | googletest/src/gtest.cc | 2 | ||||
-rw-r--r-- | googletest/src/gtest_main.cc | 9 | ||||
-rw-r--r-- | library.json | 22 | ||||
-rw-r--r-- | platformio.ini | 18 |
8 files changed, 84 insertions, 9 deletions
diff --git a/googlemock/src/gmock_main.cc b/googlemock/src/gmock_main.cc index 98611b9..16f97b0 100644 --- a/googlemock/src/gmock_main.cc +++ b/googlemock/src/gmock_main.cc @@ -32,7 +32,10 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" -#ifdef ARDUINO +#if GTEST_OS_ESP8266 || GTEST_OS_ESP32 +# if GTEST_OS_ESP8266 +extern "C" { +# endif void setup() { // Since Google Mock depends on Google Test, InitGoogleMock() is // also responsible for initializing Google Test. Therefore there's @@ -40,6 +43,10 @@ void setup() { testing::InitGoogleMock(); } void loop() { RUN_ALL_TESTS(); } +# if GTEST_OS_ESP8266 +} +# endif + #else // MS C++ compiler/linker has a bug on Windows (not on Windows CE), which diff --git a/googletest/include/gtest/internal/gtest-port-arch.h b/googletest/include/gtest/internal/gtest-port-arch.h index cece93d..e2acad3 100644 --- a/googletest/include/gtest/internal/gtest-port-arch.h +++ b/googletest/include/gtest/internal/gtest-port-arch.h @@ -102,6 +102,10 @@ # define GTEST_OS_QNX 1 #elif defined(__HAIKU__) #define GTEST_OS_HAIKU 1 +#elif defined ESP8266 +# define GTEST_OS_ESP8266 1 +#elif defined ESP32 +# define GTEST_OS_ESP32 1 #endif // __CYGWIN__ #endif // GTEST_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 f6433c5..598a7fb 100644 --- a/googletest/include/gtest/internal/gtest-port.h +++ b/googletest/include/gtest/internal/gtest-port.h @@ -449,7 +449,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION; // no support for it at least as recent as Froyo (2.2). #define GTEST_HAS_STD_WSTRING \ (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ - GTEST_OS_HAIKU)) + GTEST_OS_HAIKU || GTEST_OS_ESP32 || GTEST_OS_ESP8266)) #endif // GTEST_HAS_STD_WSTRING @@ -573,7 +573,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION; #ifndef GTEST_HAS_STREAM_REDIRECTION // By default, we assume that stream redirection is supported on all // platforms except known mobile ones. -# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 # define GTEST_HAS_STREAM_REDIRECTION 0 # else # define GTEST_HAS_STREAM_REDIRECTION 1 @@ -1984,6 +1984,22 @@ inline bool IsDir(const StatStruct& st) { } # endif // GTEST_OS_WINDOWS_MOBILE +#elif GTEST_OS_ESP8266 +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { + // stat function not implemented on ESP8266 + return 0; + } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + #else typedef struct stat StatStruct; @@ -2036,7 +2052,7 @@ inline int Close(int fd) { return close(fd); } inline const char* StrError(int errnum) { return strerror(errnum); } #endif inline const char* GetEnv(const char* name) { -#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 // We are on Windows CE, which has no environment variables. static_cast<void>(name); // To prevent 'unused argument' warning. return nullptr; diff --git a/googletest/src/gtest-filepath.cc b/googletest/src/gtest-filepath.cc index bd7b99f..7e03e81 100644 --- a/googletest/src/gtest-filepath.cc +++ b/googletest/src/gtest-filepath.cc @@ -93,7 +93,7 @@ static bool IsPathSeparator(char c) { // Returns the current working directory, or "" if unsuccessful. FilePath FilePath::GetCurrentDir() { #if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \ - GTEST_OS_WINDOWS_RT || ARDUINO || defined(ESP_PLATFORM) + GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_ESP32 // These platforms do not have a current directory, so we just return // something reasonable. return FilePath(kCurrentDirectoryString); @@ -236,7 +236,7 @@ bool FilePath::DirectoryExists() const { result = true; } #else - posix::StatStruct file_stat; + posix::StatStruct file_stat = {}; result = posix::Stat(path.c_str(), &file_stat) == 0 && posix::IsDir(file_stat); #endif // GTEST_OS_WINDOWS_MOBILE @@ -323,6 +323,9 @@ bool FilePath::CreateFolder() const { delete [] unicode; #elif GTEST_OS_WINDOWS int result = _mkdir(pathname_.c_str()); +#elif GTEST_OS_ESP8266 + // do nothing + int result = 0; #else int result = mkdir(pathname_.c_str(), 0777); #endif // GTEST_OS_WINDOWS_MOBILE diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index a5b4e5a..a11ce18 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -4508,6 +4508,7 @@ class ScopedPrematureExitFile { } ~ScopedPrematureExitFile() { + #if !defined GTEST_OS_ESP8266 if (!premature_exit_filepath_.empty()) { int retval = remove(premature_exit_filepath_.c_str()); if (retval) { @@ -4516,6 +4517,7 @@ class ScopedPrematureExitFile { << retval; } } + #endif } private: diff --git a/googletest/src/gtest_main.cc b/googletest/src/gtest_main.cc index f6e1dd9..3747925 100644 --- a/googletest/src/gtest_main.cc +++ b/googletest/src/gtest_main.cc @@ -30,13 +30,20 @@ #include <cstdio> #include "gtest/gtest.h" -#ifdef ARDUINO +#if GTEST_OS_ESP8266 || GTEST_OS_ESP32 +# if GTEST_OS_ESP8266 +extern "C" { +# endif void setup() { testing::InitGoogleTest(); } void loop() { RUN_ALL_TESTS(); } +# if GTEST_OS_ESP8266 +} +# endif + #else GTEST_API_ int main(int argc, char **argv) { diff --git a/library.json b/library.json index e46fcbd..ffbe4f3 100644 --- a/library.json +++ b/library.json @@ -11,7 +11,8 @@ "version": "1.8.1", "frameworks": "arduino", "platforms": [ - "espressif32" + "espressif32", + "espressif8266" ], "export": { "include": [ @@ -38,6 +39,7 @@ "googletest/m4", "googletest/make", "googletest/msvc", + "googletest/samples", "googletest/scripts", "googletest/src/gtest-all.cc", "googletest/src/gtest_main.cc", @@ -54,6 +56,24 @@ "-Igooglemock", "-Igoogletest/include", "-Igoogletest" + ], + "srcFilter": [ + "+<*>", + "-<.git/>", + "-<googlemock>", + "-<googlemock/test/>", + "-<googlemock/src>", + "+<googlemock/src/gmock-all.cc>", + "+<googletest/src/gtest-all.cc>", + "+<googlemock/src/gmock_main.cc>", + "-<googletest>", + "-<googletest/codegear/>", + "-<googletest/samples>", + "-<googletest/test/>", + "-<googletest/xcode>", + "-<googletest/src>", + "+<googletest/src/gtest-all.cc>", + "+<googletest/src/gtest_main.cc>" ] } } diff --git a/platformio.ini b/platformio.ini index 3910026..31c7ec1 100644 --- a/platformio.ini +++ b/platformio.ini @@ -27,5 +27,21 @@ platform = espressif32 board = esp32dev framework = arduino build_flags = -I./googlemock/include -I./googletest/include -I./googletest -I./googlemock -src_filter = +<*> -<.git/> -<googletest> -<googlemock/test/> -<googlemock/src> +<googlemock/src/gmock-all.cc> +<googlemock/src/gmock_main.cc> +<googletest/src/gtest-all.cc> +src_filter = +<*> -<.git/> -<googletest> -<googlemock/test/> -<googlemock/src> +<googlemock/src/gmock-all.cc> +<googletest/src/gtest-all.cc> +<googlemock/src/gmock_main.cc> upload_speed = 921600 + +[env:googletest_esp8266] +platform = espressif8266 +board = huzzah +framework = arduino +build_flags = -I./googletest/include -I./googletest +src_filter = +<*> -<.git/> -<googlemock> -<googletest/codegear/> -<googletest/samples> -<googletest/test/> -<googletest/xcode> -<googletest/src> +<googletest/src/gtest-all.cc> +<googletest/src/gtest_main.cc> +upload_speed = 921600 + +[env:googlemock_esp8266] +platform = espressif8266 +board = huzzah +framework = arduino +build_flags = -I./googlemock/include -I./googletest/include -I./googletest -I./googlemock +src_filter = +<*> -<.git/> -<googletest> -<googlemock/test/> -<googlemock/src> +<googlemock/src/gmock-all.cc> +<googletest/src/gtest-all.cc> +<googlemock/src/gmock_main.cc> +upload_speed = 921600
\ No newline at end of file |