From 80cd64e84296f1166e133c237fa0afc046b01ce2 Mon Sep 17 00:00:00 2001 From: Ryan Ofsky Date: Fri, 4 Feb 2022 08:59:17 -0500 Subject: [PATCH] Re-enable util_datadir check disabled in #20744 This should also fix an assert error if a -datadir with a trailing slash is used on windows. This appears to be a real error and regression introduced with #20744. On windows (or at least wine), fs calls that actuallly access the filesystem like fs::equivalent or fs::exists seem to treat directory paths with trailing slashes as not existing, so it's necessary to normalize these paths before using them. This fix adds a path::lexically_normal() call to the failing assert so it passes. --- src/test/util_tests.cpp | 3 --- src/util/system.cpp | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index b6479efe7d1..52b24327eca 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -71,12 +71,9 @@ BOOST_AUTO_TEST_CASE(util_datadir) args.ClearPathCache(); BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirBase()); -#ifndef WIN32 - // Windows does not consider "datadir/.//" to be a valid directory path. args.ForceSetArg("-datadir", fs::PathToString(dd_norm) + "/.//"); args.ClearPathCache(); BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirBase()); -#endif } BOOST_AUTO_TEST_CASE(util_check) diff --git a/src/util/system.cpp b/src/util/system.cpp index 0ee63f6381d..8d0cec249d8 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -253,7 +253,7 @@ fs::path StripRedundantLastElementsOfPath(const fs::path& path) result = result.parent_path(); } - assert(fs::equivalent(result, path)); + assert(fs::equivalent(result, path.lexically_normal())); return result; } } // namespace