Skip to content

Commit 12b7a01

Browse files
authored
[projmgr] Rework created-for validation message
1 parent f3ba232 commit 12b7a01

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

tools/projmgr/include/ProjMgr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ class ProjMgr {
197197
bool m_frozenPacks;
198198
bool m_cbuildgen;
199199
bool m_updateIdx;
200+
bool m_rpcMode = false;
200201
GroupNode m_files;
201202
std::vector<ContextItem*> m_processedContexts;
202203
std::vector<ContextItem*> m_allContexts;

tools/projmgr/src/ProjMgr.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ int ProjMgr::ProcessCommands() {
441441
} else if (m_command == "rpc") {
442442
// Launch 'rpc' server over stdin/stdout
443443
ProjMgrLogger::m_silent = true;
444+
m_rpcMode = true;
444445
m_worker.RpcMode(true);
445446
if (!m_rpcServer.Run()) {
446447
return ErrorCode::ERROR;
@@ -1241,12 +1242,18 @@ bool ProjMgr::ValidateCreatedFor(const string& createdFor) {
12411242
if (currentVersion.empty()) {
12421243
return true;
12431244
}
1244-
currentVersion += (":" + currentVersion);
1245-
if (VersionCmp::RangeCompare(version, currentVersion) <= 0) {
1245+
if (VersionCmp::RangeCompare(version, currentVersion + ":" + currentVersion) <= 0) {
12461246
return true;
12471247
} else {
1248-
ProjMgrLogger::Get().Error("solution requires newer CMSIS-Toolbox version " + version, "", m_csolutionFile);
1249-
return false;
1248+
const string msg = "the 'created-for' node in file " + m_csolutionFile + " specifies a minimum version "
1249+
+ version + " which is higher than " + currentVersion + " of the used CMSIS-Toolbox manifest";
1250+
if (m_rpcMode) {
1251+
ProjMgrLogger::Get().Warn(msg);
1252+
return true;
1253+
} else {
1254+
ProjMgrLogger::Get().Error(msg);
1255+
return false;
1256+
}
12501257
}
12511258
}
12521259
}

tools/projmgr/test/src/ProjMgrUnitTests.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6141,15 +6141,17 @@ TEST_F(ProjMgrUnitTests, TestRestrictedContextsWithContextSet_Pass) {
61416141
}
61426142

61436143
TEST_F(ProjMgrUnitTests, ValidateCreatedFor) {
6144-
const vector<tuple<string, string, bool>> testData = {
6145-
{ "[email protected]", "error" , false },
6146-
{ "[email protected]", "warning", true },
6147-
{ "[email protected]", "" , true },
6148-
{ "" , "" , true },
6149-
{ "Unknown" , "warning", true },
6144+
const vector<tuple<string, bool, string, bool>> testData = {
6145+
{ "[email protected]", true , "warning", true },
6146+
{ "[email protected]", false, "error" , false },
6147+
{ "[email protected]", false, "warning", true },
6148+
{ "[email protected]", false, "" , true },
6149+
{ "" , false, "" , true },
6150+
{ "Unknown" , false, "warning", true },
61506151
};
61516152
StdStreamRedirect streamRedirect;
6152-
for (const auto& [createdFor, expectedMsg, expectedReturn] : testData) {
6153+
for (const auto& [createdFor, rpcMode, expectedMsg, expectedReturn] : testData) {
6154+
m_rpcMode = rpcMode;
61536155
streamRedirect.ClearStringStreams();
61546156
EXPECT_EQ(expectedReturn, ValidateCreatedFor(createdFor));
61556157
auto errMsg = streamRedirect.GetErrorString();
@@ -6165,14 +6167,15 @@ TEST_F(ProjMgrUnitTests, FailCreatedFor) {
61656167
char* argv[5];
61666168
StdStreamRedirect streamRedirect;
61676169
const string& csolution = testinput_folder + "/TestSolution/created-for.csolution.yml";
6168-
const string& expectedErrMsg = "error csolution: solution requires newer CMSIS-Toolbox version 9.9.9";
6170+
const string& expectedErrMsg = "error csolution: the 'created-for' node in file .*created-for\\.csolution\\.yml\
6171+
specifies a minimum version 9\\.9\\.9 which is higher than .* of the used CMSIS-Toolbox manifest\n";
61696172
argv[1] = (char*)"convert";
61706173
argv[2] = (char*)csolution.c_str();
61716174
argv[3] = (char*)"--output";
61726175
argv[4] = (char*)testoutput_folder.c_str();
61736176
EXPECT_EQ(1, RunProjMgr(5, argv, 0));
61746177
auto errMsg = streamRedirect.GetErrorString();
6175-
EXPECT_NE(string::npos, errMsg.find(expectedErrMsg));
6178+
EXPECT_TRUE(regex_match(errMsg, regex(expectedErrMsg)));
61766179
}
61776180

61786181
TEST_F(ProjMgrUnitTests, RunProjMgr_FailedConvertShouldCreateRteDirInProjectFolder) {

0 commit comments

Comments
 (0)