aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/logging/unittests/static_analysis_ut.cpp
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-06-03 08:43:13 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-06-03 08:43:13 +0000
commite8b793b8275c229a46b4211f83c03cb074c9ba7c (patch)
tree831d4507c2b234635f45b573fcd03a4b96133bb5 /library/cpp/yt/logging/unittests/static_analysis_ut.cpp
parent89c3654dc08129116422f621b50086305f68bc9c (diff)
parent28ff234f758e7fd2f42f229a4b55ff70506f0015 (diff)
downloadydb-e8b793b8275c229a46b4211f83c03cb074c9ba7c.tar.gz
Merge branch 'rightlib' into mergelibs-240603-0842
Diffstat (limited to 'library/cpp/yt/logging/unittests/static_analysis_ut.cpp')
-rw-r--r--library/cpp/yt/logging/unittests/static_analysis_ut.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/library/cpp/yt/logging/unittests/static_analysis_ut.cpp b/library/cpp/yt/logging/unittests/static_analysis_ut.cpp
new file mode 100644
index 00000000000..1c705dc9674
--- /dev/null
+++ b/library/cpp/yt/logging/unittests/static_analysis_ut.cpp
@@ -0,0 +1,41 @@
+#include <library/cpp/testing/gtest/gtest.h>
+
+#include <library/cpp/yt/logging/logger.h>
+
+namespace NYT::NLogging {
+namespace {
+
+////////////////////////////////////////////////////////////////////////////////
+
+TEST(TStaticAnalysis, ValidFormats)
+{
+ // Mock for actual error -- we only care that
+ // it is some runtime object.
+ [[maybe_unused]] struct TError
+ { } error;
+
+ YT_LOG_CHECK_FORMAT("Hello");
+ YT_LOG_CHECK_FORMAT("Hello %v", "World!");
+ YT_LOG_CHECK_FORMAT("Hello %qv", "World!");
+ YT_LOG_CHECK_FORMAT(error);
+ YT_LOG_CHECK_FORMAT(error, "Hello");
+ YT_LOG_CHECK_FORMAT(error, "Hello %Qhs", "World!");
+ YT_LOG_CHECK_FORMAT("Hello %%");
+ YT_LOG_CHECK_FORMAT("Hello %" PRIu64, 42);
+}
+
+// Uncomment this test to see that we don't have false negatives!
+// TEST(TStaticAnalysis, InvalidFormats)
+// {
+// YT_LOG_CHECK_FORMAT("Hello", 1);
+// YT_LOG_CHECK_FORMAT("Hello %");
+// YT_LOG_CHECK_FORMAT("Hello %false");
+// YT_LOG_CHECK_FORMAT("Hello ", "World");
+// YT_LOG_CHECK_FORMAT("Hello ", "(World: %v)", 42);
+// YT_LOG_CHECK_FORMAT("Hello %lbov", 42); // There is no 'b' flag.
+// }
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace
+} // namespace NYT::NLogging