summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2019-11-15 13:36:02 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-11-15 13:36:02 -0800
commit8e8f1e9c82c946997959642073317784627919a5 (patch)
tree927be209f8cf1a91057c3fe5090bf5e85b8db899
parent19a27b5179e08245562a16d05d99a72e33e25aa7 (diff)
parentf324d3180147bbae1eb742eabd4e75d109b2882d (diff)
downloadgtest_extras-android11-qpr1-d-release.tar.gz
Update skip test handling. am: 7cfd24e97e am: 14059b1445r_aml_301500702android-mainline-12.0.0_r55android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r9android-11.0.0_r8android-11.0.0_r7android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android-11.0.0_r15android-11.0.0_r14android-11.0.0_r13android-11.0.0_r12android-11.0.0_r11android-11.0.0_r10android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-s7-releaseandroid11-d1-s6-releaseandroid11-d1-s5-releaseandroid11-d1-s1-releaseandroid11-d1-releaseandroid11-d1-b-release
am: f324d31801 Change-Id: Ie2f833b50e5393f2db5b86f153f5a0020aefdf3c
-rw-r--r--Isolate.cpp10
-rw-r--r--Test.cpp40
-rw-r--r--Test.h3
-rw-r--r--tests/SystemTests.cpp11
4 files changed, 28 insertions, 36 deletions
diff --git a/Isolate.cpp b/Isolate.cpp
index 756f194..889b183 100644
--- a/Isolate.cpp
+++ b/Isolate.cpp
@@ -617,9 +617,13 @@ void TestResultPrinter::OnTestPartResult(const ::testing::TestPartResult& result
return;
}
- // Print failure message from the assertion (e.g. expected this and got that).
- printf("%s:(%d) Failure in test %s.%s\n%s\n", result.file_name(), result.line_number(),
- pinfo_->test_suite_name(), pinfo_->name(), result.message());
+ if (result.type() == ::testing::TestPartResult::kSkip) {
+ printf("%s:(%d) Skipped%s\n", result.file_name(), result.line_number(), result.message());
+ } else {
+ // Print failure message from the assertion (e.g. expected this and got that).
+ printf("%s:(%d) Failure in test %s.%s\n%s\n", result.file_name(), result.line_number(),
+ pinfo_->test_suite_name(), pinfo_->name(), result.message());
+ }
fflush(stdout);
}
diff --git a/Test.cpp b/Test.cpp
index e2351e3..327facd 100644
--- a/Test.cpp
+++ b/Test.cpp
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <unistd.h>
+#include <regex>
#include <string>
#include <tuple>
#include <vector>
@@ -32,6 +33,8 @@
namespace android {
namespace gtest_extras {
+std::regex Test::skipped_regex_("(^|\\n)[^\\n]+:\\(\\d+\\) Skipped\\n");
+
Test::Test(std::tuple<std::string, std::string>& test, size_t index, size_t run_index, int fd)
: suite_name_(std::get<0>(test)),
test_name_(std::get<1>(test)),
@@ -114,42 +117,13 @@ void Test::SetResultFromOutput() {
// Need to parse the output to determine if this test was skipped.
// Format of a skipped test:
- // <filename>:(<line_number>) Failure in test <testname>
- // Skipped
+ // <filename>:(<line_number>) Skipped
// <Skip Message>
- // There can be multiple skip messages, so remove all of them.
- size_t start_index = 0;
- while (true) {
- size_t skipped_index = output_.find("\nSkipped\n", start_index);
- if (skipped_index == std::string::npos) {
- return;
- }
- if (skipped_index == 0) {
- // The output starts with Skipped, so skip over it and keep looking.
- start_index = skipped_index + 9;
- continue;
- }
- // Look backwards for start of line before "Skipped" message.
- size_t failure_line_start = output_.rfind('\n', skipped_index - 1);
- if (failure_line_start == std::string::npos) {
- failure_line_start = 0;
- }
- skipped_index += 9;
- size_t failure_index = output_.find(" Failure in test ", failure_line_start);
- if (failure_index == std::string::npos || failure_index > skipped_index) {
- // Could still be another skipped message matching the pattern after
- // this one.
- start_index = skipped_index - 1;
- continue;
- }
- start_index = 0;
+ // If there are multiple skip messages, it doesn't matter, seeing
+ // even one indicates this is a skipped test.
+ if (std::regex_search(output_, skipped_regex_)) {
result_ = TEST_SKIPPED;
- if (failure_line_start != 0) {
- output_ = output_.substr(0, failure_line_start + 1) + output_.substr(skipped_index);
- } else {
- output_ = output_.substr(skipped_index);
- }
}
}
diff --git a/Test.h b/Test.h
index 147b6c8..b4a1182 100644
--- a/Test.h
+++ b/Test.h
@@ -16,6 +16,7 @@
#pragma once
+#include <regex>
#include <string>
#include <tuple>
@@ -94,6 +95,8 @@ class Test {
TestResult result_ = TEST_NONE;
std::string output_;
+
+ static std::regex skipped_regex_;
};
} // namespace gtest_extras
diff --git a/tests/SystemTests.cpp b/tests/SystemTests.cpp
index ee7b176..821c055 100644
--- a/tests/SystemTests.cpp
+++ b/tests/SystemTests.cpp
@@ -309,6 +309,7 @@ TEST_F(SystemTests, verify_skip) {
"Note: Google Test filter = *.DISABLED_skip_no_message\n"
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_no_message\n"
+ "file:(XX) Skipped\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_no_message (XX ms)\n"
"[==========] 1 test from 1 test suite ran. (XX ms total)\n"
"[ PASSED ] 0 tests.\n"
@@ -322,6 +323,7 @@ TEST_F(SystemTests, verify_skip_with_message) {
"Note: Google Test filter = *.DISABLED_skip_with_message\n"
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_with_message\n"
+ "file:(XX) Skipped\n"
"This is a skip message\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_with_message (XX ms)\n"
"[==========] 1 test from 1 test suite ran. (XX ms total)\n"
@@ -337,6 +339,7 @@ TEST_F(SystemTests, verify_skip_with_output_before_message) {
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_with_output_before\n"
"This is the message before the skip message\n"
+ "file:(XX) Skipped\n"
"This is the skip message\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_with_output_before (XX ms)\n"
"[==========] 1 test from 1 test suite ran. (XX ms total)\n"
@@ -351,6 +354,7 @@ TEST_F(SystemTests, verify_skip_with_output_after_message) {
"Note: Google Test filter = *.DISABLED_skip_with_output_after\n"
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_with_output_after\n"
+ "file:(XX) Skipped\n"
"This is the skip message\n"
"This is the message after the skip message\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_with_output_after (XX ms)\n"
@@ -368,8 +372,10 @@ TEST_F(SystemTests, verify_skip_with_skipped_line) {
"[ RUN ] SystemTests.DISABLED_skip_with_skipped_line\n"
"\n"
"Skipped\n"
+ "file:(XX) Skipped\n"
"This is the skip message 1\n"
"Skipped\n"
+ "file:(XX) Skipped\n"
"This is the skip message 2\n"
"Skipped\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_with_skipped_line (XX ms)\n"
@@ -386,9 +392,12 @@ TEST_F(SystemTests, verify_skip_multiple) {
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_multiple\n"
"This is not a skip message 1\n"
+ "file:(XX) Skipped\n"
"This is the skip message 1\n"
"This is not a skip message 2\n"
+ "file:(XX) Skipped\n"
"This is the skip message 2\n"
+ "file:(XX) Skipped\n"
"This is the skip message 3\n"
"This is not a skip message 4\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_multiple (XX ms)\n"
@@ -404,6 +413,7 @@ TEST_F(SystemTests, verify_skip_no_print_time) {
"Note: Google Test filter = *.DISABLED_skip_no_message\n"
"[==========] Running 1 test from 1 test suite (20 jobs).\n"
"[ RUN ] SystemTests.DISABLED_skip_no_message\n"
+ "file:(XX) Skipped\n"
"[ SKIPPED ] SystemTests.DISABLED_skip_no_message\n"
"[==========] 1 test from 1 test suite ran. (XX ms total)\n"
"[ PASSED ] 0 tests.\n"
@@ -418,6 +428,7 @@ TEST_F(SystemTests, verify_skip_color) {
"\x1B[0;33mNote: Google Test filter = *.DISABLED_skip_no_message\x1B[m\n"
"\x1B[0;32m[==========]\x1B[m Running 1 test from 1 test suite (20 jobs).\n"
"\x1B[0;32m[ RUN ]\x1B[m SystemTests.DISABLED_skip_no_message\n"
+ "file:(XX) Skipped\n"
"\x1B[0;32m[ SKIPPED ]\x1B[m SystemTests.DISABLED_skip_no_message (XX ms)\n"
"\x1B[0;32m[==========]\x1B[m 1 test from 1 test suite ran. (XX ms total)\n"
"\x1B[0;32m[ PASSED ]\x1B[m 0 tests.\n"