From 8a2c3fb88fa0ebb68749558a5e8d6a3e03d8920a Mon Sep 17 00:00:00 2001 From: Alexey Ochapov Date: Mon, 13 Dec 2021 02:44:52 +0300 Subject: [PATCH] add reverse tests to compile-error-test to make sure that error tests do not fail because they become outdated --- test/compile-error-test/CMakeLists.txt | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/test/compile-error-test/CMakeLists.txt b/test/compile-error-test/CMakeLists.txt index 5a40094b..5b0a172f 100644 --- a/test/compile-error-test/CMakeLists.txt +++ b/test/compile-error-test/CMakeLists.txt @@ -116,19 +116,28 @@ endfunction () # check if the source file skeleton compiles expect_compile(check "") +expect_compile(check-error "compilation_error" ERROR) # Formatting a wide character with a narrow format string is forbidden. -expect_compile(wide-character-narrow-format-string "fmt::format(\"{}\", L'a');" ERROR) +expect_compile(wide-character-narrow-format-string "fmt::format(L\"{}\", L'a');") +expect_compile(wide-character-narrow-format-string-error "fmt::format(\"{}\", L'a');" ERROR) # Formatting a wide string with a narrow format string is forbidden. -expect_compile(wide-string-narrow-format-string "fmt::format(\"{}\", L\"foo\");" ERROR) +expect_compile(wide-string-narrow-format-string "fmt::format(L\"{}\", L\"foo\");") +expect_compile(wide-string-narrow-format-string-error "fmt::format(\"{}\", L\"foo\");" ERROR) # Formatting a narrow string with a wide format string is forbidden because # mixing UTF-8 with UTF-16/32 can result in an invalid output. -expect_compile(narrow-string-wide-format-string "fmt::format(L\"{}\", \"foo\");" ERROR) +expect_compile(narrow-string-wide-format-string "fmt::format(L\"{}\", L\"foo\");") +expect_compile(narrow-string-wide-format-string-error "fmt::format(L\"{}\", \"foo\");" ERROR) -# Formatting a wide string with a narrow format string is forbidden. expect_compile(cast-to-string " + struct S { + operator std::string() const { return std::string(); } + }; + fmt::format(\"{}\", std::string(S())); +") +expect_compile(cast-to-string-error " struct S { operator std::string() const { return std::string(); } }; @@ -137,6 +146,10 @@ expect_compile(cast-to-string " # Formatting a function expect_compile(format-function " + void (*f)(); + fmt::format(\"{}\", fmt::ptr(f)); +") +expect_compile(format-function-error " void (*f)(); fmt::format(\"{}\", f); " ERROR)