Skip to content

Commit 9d4bacc

Browse files
authored
[rtefsutils] Ensure canonical directory separator
1 parent a5bb591 commit 9d4bacc

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

libs/rtefsutils/src/RteFsUtils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using namespace std;
3131
string RteFsUtils::MakePathCanonical(const string& path)
3232
{
3333
error_code ec;
34-
string canonical = fs::weakly_canonical(path, ec).generic_string();
34+
string canonical = fs::weakly_canonical(RteUtils::BackSlashesToSlashes(path), ec).generic_string();
3535
if (ec) {
3636
// canonical call failed, e.g. path does not exist
3737
return path;

libs/rtefsutils/test/src/RteFsUtilsTest.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ const string filenameBackup0 = RteUtils::SlashesToOsSlashes(filenameRegular + ".
4747
const string filenameBackup1 = RteUtils::SlashesToOsSlashes(filenameRegular + ".0001");
4848
const string pathInvalid = dirnameSubdir + "/Invalid";
4949

50+
// For Canonical Tests
51+
const string filenameBackslashForCanonical = dirnameSubdirBackslash + "\\file.txt";
52+
const string dirnameSubdirBackslashForCanonical = dirnameBase + "\\dir\\subdir";
53+
const string dirnameMixedWithTrailingForCanonical = dirnameBase + "/dir\\subdir/";
54+
const string dirnameBackslashWithTrailingForCanonical = dirnameBase + "\\dir\\subdir\\";
55+
5056
static set<string, VersionCmp::Greater> sortedFileSet = {
5157
"foo.h",
5258
"bar.h",
@@ -849,23 +855,23 @@ TEST_F(RteFsUtilsTest, MakePathCanonical) {
849855
EXPECT_EQ(ret, nonExistingFileAbs);
850856

851857
// Test filename with backslashes separators
852-
ret = RteFsUtils::MakePathCanonical(filenameBackslash);
858+
ret = RteFsUtils::MakePathCanonical(filenameBackslashForCanonical);
853859
EXPECT_EQ(ret, filenameCanonical);
854860

855861
// Test filename with mixed separators
856-
ret = RteFsUtils::MakePathCanonical(filenameBackslash);
862+
ret = RteFsUtils::MakePathCanonical(filenameBackslashForCanonical);
857863
EXPECT_EQ(ret, filenameCanonical);
858864

859865
// Test dirname with regular separators and trailing
860866
ret = RteFsUtils::MakePathCanonical(dirnameSubdirWithTrailing);
861867
EXPECT_EQ(ret, dirnameCanonical);
862868

863869
// Test dirname with backslashes separators and trailing
864-
ret = RteFsUtils::MakePathCanonical(dirnameBackslashWithTrailing);
870+
ret = RteFsUtils::MakePathCanonical(dirnameBackslashWithTrailingForCanonical);
865871
EXPECT_EQ(ret, dirnameCanonical);
866872

867873
// Test dirname with mixed separators and trailing
868-
ret = RteFsUtils::MakePathCanonical(dirnameMixedWithTrailing);
874+
ret = RteFsUtils::MakePathCanonical(dirnameMixedWithTrailingForCanonical);
869875
EXPECT_EQ(ret, dirnameCanonical);
870876

871877
// Test path with dot inside

tools/projmgr/src/ProjMgrYamlEmitter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ void ProjMgrYamlCbuild::SetLicenseInfoNode(YAML::Node node, const ContextItem* c
806806
SetNodeValue(licNode[YAML_LICENSE], RteLicenseInfo::ConstructLicenseTitle(licInfo));
807807
const string& license_agreement = licInfo->GetAttribute("agreement");
808808
if (!license_agreement.empty()) {
809-
SetNodeValue(licNode[YAML_LICENSE_AGREEMENT], license_agreement);
809+
SetNodeValue(licNode[YAML_LICENSE_AGREEMENT], FormatPath(license_agreement, context->directories.cbuild));
810810
}
811811
YAML::Node packsNode = licNode[YAML_PACKS];
812812
for (auto pack : licInfo->GetPackIDs()) {

tools/projmgr/test/src/ProjMgrUtilsUnitTests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ TEST_F(ProjMgrUtilsUnitTests, FormatPath) {
495495
vector<pair<string, string>> testData = {
496496
{ "OriginalPath" , testoutput_folder + "/OriginalPath" },
497497
{ "${CMSIS_PACK_ROOT}/Pack" , testcmsispack_folder + "/Pack" },
498+
{ "${CMSIS_PACK_ROOT}/Backslash" , testcmsispack_folder + "\\Backslash" },
498499
{ "${CMSIS_COMPILER_ROOT}/Toolchain" , testcmsiscompiler_folder + "/Toolchain" },
499500
{ "https://www.url.com" , "https://www.url.com" },
500501
};

0 commit comments

Comments
 (0)