From a5231b86df5a9171978f21364c6b92ac6cbf502b Mon Sep 17 00:00:00 2001 From: Mike Crowe Date: Sat, 22 Jul 2017 14:42:37 +0100 Subject: [PATCH] printf-test: Add check that errno is preserved by fmt::sprintf Since I accidentally added code to PrintfFormatter::format that modified errno on mingw whilst adding support for '%m', it seems worth having a test to make sure that can't happen again in the future. --- test/printf-test.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/printf-test.cc b/test/printf-test.cc index a0443838..3f25670e 100644 --- a/test/printf-test.cc +++ b/test/printf-test.cc @@ -476,6 +476,21 @@ TEST(PrintfTest, Enum) { EXPECT_PRINTF("42", "%d", A); } +TEST(PrintfTest, ErrnoPreserved) { + errno = ENOENT; + EXPECT_PRINTF_NO_ARG("testing 1 2 3", "testing 1 2 3"); + EXPECT_EQ(errno, ENOENT); + + EXPECT_PRINTF("42", "%d", 42); + EXPECT_EQ(errno, ENOENT); + + EXPECT_PRINTF(" Hello", "%6s", "Hello"); + EXPECT_EQ(errno, ENOENT); + + EXPECT_PRINTF_NO_ARG("No such file or directory", "%m"); + EXPECT_EQ(errno, ENOENT); +} + TEST(PrintfTest, ErrorMessage) { errno = ENOENT;