[PATCH] D21896: [compiler-rt] Fix broken (flaky) unittests based on FlagParser.

Etienne Bergeron via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 30 08:03:37 PDT 2016


etienneb created this revision.
etienneb added a reviewer: rnk.
etienneb added subscribers: chrisha, wang0109, llvm-commits.
Herald added a subscriber: kubabrecka.

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.

http://reviews.llvm.org/D21896

Files:
  lib/sanitizer_common/tests/sanitizer_flags_test.cc

Index: lib/sanitizer_common/tests/sanitizer_flags_test.cc
===================================================================
--- lib/sanitizer_common/tests/sanitizer_flags_test.cc
+++ lib/sanitizer_common/tests/sanitizer_flags_test.cc
@@ -47,6 +47,9 @@
   parser.ParseString(env);
 
   EXPECT_EQ(0, internal_strcmp(final_value, flag));
+
+  // Reporting unrecognized flags is needed to reset them.
+  ReportUnrecognizedFlags();  
 }
 
 TEST(SanitizerCommon, BooleanFlags) {
@@ -97,6 +100,9 @@
 
   EXPECT_EQ(expected_flag1, flag1);
   EXPECT_EQ(0, internal_strcmp(flag2, expected_flag2));
+
+  // Reporting unrecognized flags is needed to reset them.
+  ReportUnrecognizedFlags();    
 }
 
 TEST(SanitizerCommon, MultipleFlags) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21896.62365.patch
Type: text/x-patch
Size: 731 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160630/ff9c7874/attachment.bin>


More information about the llvm-commits mailing list