Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
7a3abfec
Commit
7a3abfec
authored
Sep 20, 2022
by
Marat Dukhan
Browse files
Port GoogleTest to QuRT (Hexagon RTOS)
parent
1336c4b6
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
40 additions
and
10 deletions
+40
-10
googlemock/src/gmock-spec-builders.cc
googlemock/src/gmock-spec-builders.cc
+7
-0
googletest/include/gtest/internal/gtest-port-arch.h
googletest/include/gtest/internal/gtest-port-arch.h
+2
-0
googletest/include/gtest/internal/gtest-port.h
googletest/include/gtest/internal/gtest-port.h
+17
-8
googletest/src/gtest-filepath.cc
googletest/src/gtest-filepath.cc
+2
-2
googletest/src/gtest_main.cc
googletest/src/gtest_main.cc
+12
-0
No files found.
googlemock/src/gmock-spec-builders.cc
View file @
7a3abfec
...
...
@@ -51,6 +51,9 @@
#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
#include <unistd.h> // NOLINT
#endif
#if GTEST_OS_QURT
#include <qurt_event.h>
#endif
// Silence C4800 (C4800: 'int *const ': forcing value
// to bool 'true' or 'false') for MSVC 15
...
...
@@ -519,8 +522,12 @@ class MockObjectRegistry {
// RUN_ALL_TESTS() has already returned when this destructor is
// called. Therefore we cannot use the normal Google Test
// failure reporting mechanism.
#if GTEST_OS_QURT
qurt_exception_raise_fatal
();
#else
_exit
(
1
);
// We cannot call exit() as it is not reentrant and
// may already have been called.
#endif
}
}
...
...
googletest/include/gtest/internal/gtest-port-arch.h
View file @
7a3abfec
...
...
@@ -111,6 +111,8 @@
#define GTEST_OS_ESP32 1
#elif defined(__XTENSA__)
#define GTEST_OS_XTENSA 1
#elif defined(__hexagon__)
#define GTEST_OS_QURT 1
#endif // __CYGWIN__
#endif // GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
googletest/include/gtest/internal/gtest-port.h
View file @
7a3abfec
...
...
@@ -385,7 +385,8 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// On Android, <regex.h> is only available starting with Gingerbread.
#define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
#else
#define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS && !GTEST_OS_XTENSA)
#define GTEST_HAS_POSIX_RE \
!(GTEST_OS_WINDOWS || GTEST_OS_XTENSA || GTEST_OS_QURT)
#endif
#endif
...
...
@@ -457,7 +458,8 @@ 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_ESP32 || GTEST_OS_ESP8266 || GTEST_OS_XTENSA))
GTEST_OS_HAIKU || GTEST_OS_ESP32 || GTEST_OS_ESP8266 || \
GTEST_OS_XTENSA || GTEST_OS_QURT))
#endif // GTEST_HAS_STD_WSTRING
...
...
@@ -578,9 +580,9 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// output correctness and to implement death tests.
#ifndef GTEST_HAS_STREAM_REDIRECTION
// By default, we assume that stream redirection is supported on all
// platforms except known mobile ones.
// platforms except known mobile
/ embedded
ones.
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
|| GTEST_OS_QURT
#define GTEST_HAS_STREAM_REDIRECTION 0
#else
#define GTEST_HAS_STREAM_REDIRECTION 1
...
...
@@ -2019,7 +2021,12 @@ inline int StrCaseCmp(const char* s1, const char* s2) {
return
strcasecmp
(
s1
,
s2
);
}
inline
char
*
StrDup
(
const
char
*
src
)
{
return
strdup
(
src
);
}
#if GTEST_OS_QURT
// QuRT doesn't support any directory functions, including rmdir
inline
int
RmDir
(
const
char
*
dir
GTEST_ATTRIBUTE_UNUSED_
)
{
return
0
;
}
#else
inline
int
RmDir
(
const
char
*
dir
)
{
return
rmdir
(
dir
);
}
#endif
inline
bool
IsDir
(
const
StatStruct
&
st
)
{
return
S_ISDIR
(
st
.
st_mode
);
}
#endif // GTEST_OS_WINDOWS
...
...
@@ -2044,7 +2051,8 @@ GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
// defined there.
#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && \
!GTEST_OS_WINDOWS_RT && !GTEST_OS_ESP8266 && !GTEST_OS_XTENSA
!GTEST_OS_WINDOWS_RT && !GTEST_OS_ESP8266 && !GTEST_OS_XTENSA && \
!GTEST_OS_QURT
inline
int
ChDir
(
const
char
*
dir
)
{
return
chdir
(
dir
);
}
#endif
inline
FILE
*
FOpen
(
const
char
*
path
,
const
char
*
mode
)
{
...
...
@@ -2058,14 +2066,14 @@ inline FILE* FOpen(const char* path, const char* mode) {
return
fopen
(
path
,
mode
);
#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
}
#if !GTEST_OS_WINDOWS_MOBILE
#if !GTEST_OS_WINDOWS_MOBILE
&& !GTEST_OS_QURT
inline
FILE
*
FReopen
(
const
char
*
path
,
const
char
*
mode
,
FILE
*
stream
)
{
return
freopen
(
path
,
mode
,
stream
);
}
inline
FILE
*
FDOpen
(
int
fd
,
const
char
*
mode
)
{
return
fdopen
(
fd
,
mode
);
}
#endif
inline
int
FClose
(
FILE
*
fp
)
{
return
fclose
(
fp
);
}
#if !GTEST_OS_WINDOWS_MOBILE
#if !GTEST_OS_WINDOWS_MOBILE
&& !GTEST_OS_QURT
inline
int
Read
(
int
fd
,
void
*
buf
,
unsigned
int
count
)
{
return
static_cast
<
int
>
(
read
(
fd
,
buf
,
count
));
}
...
...
@@ -2077,7 +2085,8 @@ 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 || GTEST_OS_ESP8266 || GTEST_OS_XTENSA
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_XTENSA || \
GTEST_OS_QURT
// We are on an embedded platform, which has no environment variables.
static_cast
<
void
>
(
name
);
// To prevent 'unused argument' warning.
return
nullptr
;
...
...
googletest/src/gtest-filepath.cc
View file @
7a3abfec
...
...
@@ -96,7 +96,7 @@ static bool IsPathSeparator(char c) {
FilePath
FilePath
::
GetCurrentDir
()
{
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_ESP32 || \
GTEST_OS_XTENSA
GTEST_OS_XTENSA
|| GTEST_OS_QURT
// These platforms do not have a current directory, so we just return
// something reasonable.
return
FilePath
(
kCurrentDirectoryString
);
...
...
@@ -323,7 +323,7 @@ bool FilePath::CreateFolder() const {
delete
[]
unicode
;
#elif GTEST_OS_WINDOWS
int
result
=
_mkdir
(
pathname_
.
c_str
());
#elif GTEST_OS_ESP8266 || GTEST_OS_XTENSA
#elif GTEST_OS_ESP8266 || GTEST_OS_XTENSA
|| GTEST_OS_QURT
// do nothing
int
result
=
0
;
#else
...
...
googletest/src/gtest_main.cc
View file @
7a3abfec
...
...
@@ -32,9 +32,12 @@
#include "gtest/gtest.h"
#if GTEST_OS_ESP8266 || GTEST_OS_ESP32
// Aduino-like platforms: program entry points are setup/loop instead of main.
#if GTEST_OS_ESP8266
extern
"C"
{
#endif
void
setup
()
{
testing
::
InitGoogleTest
();
}
void
loop
()
{
RUN_ALL_TESTS
();
}
...
...
@@ -43,7 +46,16 @@ void loop() { RUN_ALL_TESTS(); }
}
#endif
#elif GTEST_OS_QURT
// QuRT: program entry point is main, but argc/argv are unusable.
GTEST_API_
int
main
()
{
printf
(
"Running main() from %s
\n
"
,
__FILE__
);
testing
::
InitGoogleTest
();
return
RUN_ALL_TESTS
();
}
#else
// Normal platforms: program entry point is main, argc/argv are initialized.
GTEST_API_
int
main
(
int
argc
,
char
**
argv
)
{
printf
(
"Running main() from %s
\n
"
,
__FILE__
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment