]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
build: Adapt to doctest 2.4.12
authorJoel Rosdahl <joel@rosdahl.net>
Mon, 28 Apr 2025 20:01:35 +0000 (22:01 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Thu, 1 May 2025 15:12:02 +0000 (17:12 +0200)
Apparently doctest 2.4.12 has introduced some backward incompatibility
that affects our unit tests, so adapt accordingly.

Fixes #1589.

cmake/FindDoctest.cmake
unittest/test_util_string.cpp

index 23684ca13960201d4af0b2159ddbc8f174ec1016..02d631e54b07394be4b2c86eadeb526c6600da7c 100644 (file)
@@ -28,12 +28,12 @@ endif()
 
 if(_download_doctest)
   set(_doctest_origin DOWNLOADED)
-  set(_doctest_version_string 2.4.11)
+  set(_doctest_version_string 2.4.12)
 
   add_header_only_library(
     doctest
     URL "https://github.com/doctest/doctest/releases/download/v${_doctest_version_string}/doctest.h"
-    SHA256 44faa038e9c3f9728efbda143748d01124ea0a27f4bf78f35a15d8fab2e039fb
+    SHA256 2a31654ead2a6e5ef93086ca97659b701710c80275207b3bdb12676c012daceb
     SUBDIR doctest
   )
 endif()
index 6d98f83d80bd6883af51ddc6c67ddf3d85319677..d78398f70f1a358d6cb11299a8d1fa6898c40bf3 100644 (file)
 #include <ostream> // https://github.com/doctest/doctest/issues/618
 #include <vector>
 
-static bool
-operator==(std::pair<std::string, std::optional<std::string>> left,
-           std::pair<std::string, std::optional<std::string>> right)
-{
-  return left.first == right.first && left.second == right.second;
-}
-
-static bool
-operator==(std::pair<std::string_view, std::optional<std::string_view>> left,
-           std::pair<std::string_view, std::optional<std::string_view>> right)
-{
-  return left.first == right.first && left.second == right.second;
-}
-
 TEST_SUITE_BEGIN("util");
 
 TEST_CASE("util::format_argv_as_win32_command_string")
@@ -531,65 +517,65 @@ TEST_CASE("util::split_into_views")
 
 TEST_CASE("util::split_once")
 {
-  using std::make_pair;
+  using Result = std::pair<std::string, std::optional<std::string>>;
   using std::nullopt;
   using util::split_once;
 
   SUBCASE("const char*")
   {
-    CHECK(split_once("", '=') == make_pair("", nullopt));
-    CHECK(split_once("a", '=') == make_pair("a", nullopt));
-    CHECK(split_once("=a", '=') == make_pair("", "a"));
-    CHECK(split_once("a=", '=') == make_pair("a", ""));
-    CHECK(split_once("a==", '=') == make_pair("a", "="));
-    CHECK(split_once("a=b", '=') == make_pair("a", "b"));
-    CHECK(split_once("a=b=", '=') == make_pair("a", "b="));
-    CHECK(split_once("a=b=c", '=') == make_pair("a", "b=c"));
-    CHECK(split_once("x y", ' ') == make_pair("x", "y"));
+    CHECK(split_once("", '=') == Result("", nullopt));
+    CHECK(split_once("a", '=') == Result("a", nullopt));
+    CHECK(split_once("=a", '=') == Result("", "a"));
+    CHECK(split_once("a=", '=') == Result("a", ""));
+    CHECK(split_once("a==", '=') == Result("a", "="));
+    CHECK(split_once("a=b", '=') == Result("a", "b"));
+    CHECK(split_once("a=b=", '=') == Result("a", "b="));
+    CHECK(split_once("a=b=c", '=') == Result("a", "b=c"));
+    CHECK(split_once("x y", ' ') == Result("x", "y"));
   }
 
   SUBCASE("std::string&&")
   {
-    CHECK(split_once(std::string(""), '=') == make_pair("", nullopt));
-    CHECK(split_once(std::string("a"), '=') == make_pair("a", nullopt));
-    CHECK(split_once(std::string("=a"), '=') == make_pair("", "a"));
-    CHECK(split_once(std::string("a="), '=') == make_pair("a", ""));
-    CHECK(split_once(std::string("a=="), '=') == make_pair("a", "="));
-    CHECK(split_once(std::string("a=b"), '=') == make_pair("a", "b"));
-    CHECK(split_once(std::string("a=b="), '=') == make_pair("a", "b="));
-    CHECK(split_once(std::string("a=b=c"), '=') == make_pair("a", "b=c"));
-    CHECK(split_once(std::string("x y"), ' ') == make_pair("x", "y"));
+    CHECK(split_once(std::string(""), '=') == Result("", nullopt));
+    CHECK(split_once(std::string("a"), '=') == Result("a", nullopt));
+    CHECK(split_once(std::string("=a"), '=') == Result("", "a"));
+    CHECK(split_once(std::string("a="), '=') == Result("a", ""));
+    CHECK(split_once(std::string("a=="), '=') == Result("a", "="));
+    CHECK(split_once(std::string("a=b"), '=') == Result("a", "b"));
+    CHECK(split_once(std::string("a=b="), '=') == Result("a", "b="));
+    CHECK(split_once(std::string("a=b=c"), '=') == Result("a", "b=c"));
+    CHECK(split_once(std::string("x y"), ' ') == Result("x", "y"));
   }
 
   SUBCASE("std::string_view")
   {
-    CHECK(split_once(std::string_view(""), '=') == make_pair("", nullopt));
-    CHECK(split_once(std::string_view("a"), '=') == make_pair("a", nullopt));
-    CHECK(split_once(std::string_view("=a"), '=') == make_pair("", "a"));
-    CHECK(split_once(std::string_view("a="), '=') == make_pair("a", ""));
-    CHECK(split_once(std::string_view("a=="), '=') == make_pair("a", "="));
-    CHECK(split_once(std::string_view("a=b"), '=') == make_pair("a", "b"));
-    CHECK(split_once(std::string_view("a=b="), '=') == make_pair("a", "b="));
-    CHECK(split_once(std::string_view("a=b=c"), '=') == make_pair("a", "b=c"));
-    CHECK(split_once(std::string_view("x y"), ' ') == make_pair("x", "y"));
+    CHECK(split_once(std::string_view(""), '=') == Result("", nullopt));
+    CHECK(split_once(std::string_view("a"), '=') == Result("a", nullopt));
+    CHECK(split_once(std::string_view("=a"), '=') == Result("", "a"));
+    CHECK(split_once(std::string_view("a="), '=') == Result("a", ""));
+    CHECK(split_once(std::string_view("a=="), '=') == Result("a", "="));
+    CHECK(split_once(std::string_view("a=b"), '=') == Result("a", "b"));
+    CHECK(split_once(std::string_view("a=b="), '=') == Result("a", "b="));
+    CHECK(split_once(std::string_view("a=b=c"), '=') == Result("a", "b=c"));
+    CHECK(split_once(std::string_view("x y"), ' ') == Result("x", "y"));
   }
 }
 
 TEST_CASE("util::split_option_with_concat_path")
 {
-  using std::make_pair;
+  using Result = std::pair<std::string_view, std::optional<std::string_view>>;
   using std::nullopt;
   const auto split = util::split_option_with_concat_path;
 
-  CHECK(split("-I/c/foo") == make_pair("-I", "/c/foo"));
-  CHECK(split("-W,path/c/foo") == make_pair("-W,path", "/c/foo"));
-  CHECK(split("-DMACRO") == make_pair("-DMACRO", nullopt));
+  CHECK(split("-I/c/foo") == Result("-I", "/c/foo"));
+  CHECK(split("-W,path/c/foo") == Result("-W,path", "/c/foo"));
+  CHECK(split("-DMACRO") == Result("-DMACRO", nullopt));
 #ifdef _WIN32
-  CHECK(split("-I/C:/foo") == make_pair("-I", "/C:/foo"));
-  CHECK(split("-IC:/foo") == make_pair("-I", "C:/foo"));
-  CHECK(split("-W,path/c:/foo") == make_pair("-W,path", "/c:/foo"));
-  CHECK(split("-W,pathc:/foo") == make_pair("-W,path", "c:/foo"));
-  CHECK(split("-opt:value") == make_pair("-opt:value", nullopt));
+  CHECK(split("-I/C:/foo") == Result("-I", "/C:/foo"));
+  CHECK(split("-IC:/foo") == Result("-I", "C:/foo"));
+  CHECK(split("-W,path/c:/foo") == Result("-W,path", "/c:/foo"));
+  CHECK(split("-W,pathc:/foo") == Result("-W,path", "c:/foo"));
+  CHECK(split("-opt:value") == Result("-opt:value", nullopt));
 #endif
 }