Skip to content

Commit 2d1938b

Browse files
committedJun 30, 2016
[compiler-rt] Fix broken (flaky) unittests based on FlagParser.
Summary: The FlagParser is populating a static global class with the unrecognized flags when parsing. That global class has a dcheck that limit the number of unrecognized flag to 20. ``` class UnknownFlags { static const int kMaxUnknownFlags = 20; const char *unknown_flags_[kMaxUnknownFlags]; int n_unknown_flags_; [...] void Report() { if (!n_unknown_flags_) return; Printf("WARNING: found %d unrecognized flag(s):\n", n_unknown_flags_); for (int i = 0; i < n_unknown_flags_; ++i) Printf(" %s\n", unknown_flags_[i]); n_unknown_flags_ = 0; } }; UnknownFlags unknown_flags; ``` Unittests based on that class must reset the counter 'n_unknown_flags_' or the next usage of that class may fail arbitrary. This can be done by reporting the pending unknown flags. Reviewers: rnk Subscribers: llvm-commits, wang0109, kubabrecka, chrisha Differential Revision: http://reviews.llvm.org/D21896 llvm-svn: 274234
1 parent 7c6eab5 commit 2d1938b

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed
 

‎compiler-rt/lib/sanitizer_common/tests/sanitizer_flags_test.cc

+6
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ void TestFlag(const char *start_value, const char *env,
4747
parser.ParseString(env);
4848

4949
EXPECT_EQ(0, internal_strcmp(final_value, flag));
50+
51+
// Reporting unrecognized flags is needed to reset them.
52+
ReportUnrecognizedFlags();
5053
}
5154

5255
TEST(SanitizerCommon, BooleanFlags) {
@@ -97,6 +100,9 @@ static void TestTwoFlags(const char *env, bool expected_flag1,
97100

98101
EXPECT_EQ(expected_flag1, flag1);
99102
EXPECT_EQ(0, internal_strcmp(flag2, expected_flag2));
103+
104+
// Reporting unrecognized flags is needed to reset them.
105+
ReportUnrecognizedFlags();
100106
}
101107

102108
TEST(SanitizerCommon, MultipleFlags) {

0 commit comments

Comments
 (0)
Please sign in to comment.