< prev index next >
test/native/unittest.hpp
Print this page
rev 11753 : 8159817: Convert FreeRegionList_test to GTest
Reviewed-by: duke
@@ -51,38 +51,76 @@
#define TEST_VM_F(test_fixture, name) \
GTEST_TEST_(test_fixture, name ## _test_vm, test_fixture, \
::testing::internal::GetTypeId<test_fixture>())
-#define TEST_OTHER_VM(category, name) \
+#define str(s) #s
+
+#define TEST_SUCCESS(category, name) \
+ str(category) ":" str(name) ":" "OKIDOKI"
+
+#define CHILD_VM(category, name) \
static void test_ ## category ## _ ## name ## _(); \
\
static void child_ ## category ## _ ## name ## _() { \
::testing::GTEST_FLAG(throw_on_failure) = true; \
test_ ## category ## _ ## name ## _(); \
- fprintf(stderr, "OKIDOKI"); \
+ fprintf(stderr, "%s", TEST_SUCCESS(category, name)); \
exit(0); \
- } \
+ }
+
+#define TEST_OTHER_VM(category, name) \
+ CHILD_VM(category, name) \
\
TEST(category, CONCAT(name, _other_vm)) { \
ASSERT_EXIT(child_ ## category ## _ ## name ## _(), \
::testing::ExitedWithCode(0), \
- ".*OKIDOKI.*"); \
+ ".*" TEST_SUCCESS(category, name) ".*"); \
} \
\
void test_ ## category ## _ ## name ## _()
-#ifdef ASSERT
-#define TEST_VM_ASSERT(category, name) \
- static void test_ ## category ## _ ## name ## _(); \
+#define TEST_OTHER_VM_WITH_FLAGS(category, name, flags) \
\
- static void child_ ## category ## _ ## name ## _() { \
- ::testing::GTEST_FLAG(throw_on_failure) = true; \
- test_ ## category ## _ ## name ## _(); \
- exit(0); \
+ CHILD_VM(category, name) \
+ \
+ TEST(category, CONCAT(name, _other_vm_with_flags)) { \
+ const char *old_flags = getenv("_JAVA_OPTIONS"); \
+ const char *safe_old_flags = \
+ (old_flags == NULL) ? "" : old_flags; \
+ const char *safe_new_flags = (flags == NULL) ? "" : flags; \
+ const size_t new_options_len = strlen("_JAVA_OPTIONS=") \
+ + strlen(safe_new_flags) + 1; \
+ \
+ char *new_options = (char*) malloc(new_options_len); \
+ jio_snprintf(new_options, new_options_len, "_JAVA_OPTIONS=%s", \
+ safe_new_flags); \
+ ASSERT_EQ(putenv(new_options), 0) \
+ << "Unable to setup new flags: " << new_options \
+ << "; errno = " << errno; \
+ \
+ ASSERT_EXIT(child_ ## category ## _ ## name ## _(), \
+ ::testing::ExitedWithCode(0), \
+ ".*" TEST_SUCCESS(category, name) ".*"); \
+ \
+ const size_t stored_options_len = strlen("_JAVA_OPTIONS=") \
+ + strlen(safe_old_flags) + 1; \
+ char *stored_options = (char*) malloc (stored_options_len); \
+ jio_snprintf(stored_options, stored_options_len, \
+ "_JAVA_OPTIONS=%s", safe_old_flags); \
+ \
+ ASSERT_EQ(putenv(stored_options), 0) \
+ << "Unable to restore flags: " << stored_options \
+ << "; errno = " << errno; \
} \
\
+ void test_ ## category ## _ ## name ## _()
+
+#ifdef ASSERT
+#define TEST_VM_ASSERT(category, name) \
+ CHILD_VM(category, name) \
+ \
TEST(category, CONCAT(name, _vm_assert)) { \
ASSERT_EXIT(child_ ## category ## _ ## name ## _(), \
::testing::ExitedWithCode(1), \
"assert failed"); \
} \
@@ -93,17 +131,11 @@
TEST_VM_ASSERT is only available in debug builds
#endif
#ifdef ASSERT
#define TEST_VM_ASSERT_MSG(category, name, msg) \
- static void test_ ## category ## _ ## name ## _(); \
- \
- static void child_ ## category ## _ ## name ## _() { \
- ::testing::GTEST_FLAG(throw_on_failure) = true; \
- test_ ## category ## _ ## name ## _(); \
- exit(0); \
- } \
+ CHILD_VM(category, name) \
\
TEST(category, CONCAT(name, _vm_assert)) { \
ASSERT_EXIT(child_ ## category ## _ ## name ## _(), \
::testing::ExitedWithCode(1), \
"assert failed: " msg); \
< prev index next >