leak_check_test.cc 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2017 The Abseil Authors.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #include <string>
  15. #include "gtest/gtest.h"
  16. #include "absl/base/internal/raw_logging.h"
  17. #include "absl/debugging/leak_check.h"
  18. namespace {
  19. TEST(LeakCheckTest, DetectLeakSanitizer) {
  20. #ifdef ABSL_EXPECT_LEAK_SANITIZER
  21. EXPECT_TRUE(absl::HaveLeakSanitizer());
  22. EXPECT_TRUE(absl::LeakCheckerIsActive());
  23. #else
  24. EXPECT_FALSE(absl::HaveLeakSanitizer());
  25. EXPECT_FALSE(absl::LeakCheckerIsActive());
  26. #endif
  27. }
  28. TEST(LeakCheckTest, IgnoreLeakSuppressesLeakedMemoryErrors) {
  29. auto foo = absl::IgnoreLeak(new std::string("some ignored leaked string"));
  30. ABSL_RAW_LOG(INFO, "Ignoring leaked string %s", foo->c_str());
  31. }
  32. TEST(LeakCheckTest, LeakCheckDisablerIgnoresLeak) {
  33. absl::LeakCheckDisabler disabler;
  34. auto foo = new std::string("some string leaked while checks are disabled");
  35. ABSL_RAW_LOG(INFO, "Ignoring leaked string %s", foo->c_str());
  36. }
  37. } // namespace