Skip to content

Commit 0839678

Browse files
[projmgr] Check invalid context-set (#1086) (#1881)
Co-authored-by: Daniel Brondani <[email protected]>
1 parent 936cf7d commit 0839678

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

tools/projmgr/src/ProjMgrWorker.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4393,8 +4393,24 @@ bool ProjMgrWorker::ParseContextSelection(
43934393
}
43944394
}
43954395

4396-
// Process the selected contexts
43974396
if (!((m_selectedContexts.size() == 1) && (m_selectedContexts.front() == RteUtils::EMPTY_STRING))) {
4397+
// Check selected contexts
4398+
StrVec unknownContexts;
4399+
for (const auto& context : m_selectedContexts) {
4400+
if (m_contexts.find(context) == m_contexts.end()) {
4401+
unknownContexts.push_back(context);
4402+
}
4403+
}
4404+
if (!unknownContexts.empty()) {
4405+
string errMsg = "unknown selected context(s):";
4406+
for (const auto& context : unknownContexts) {
4407+
errMsg += "\n " + context;
4408+
}
4409+
ProjMgrLogger::Get().Error(errMsg);
4410+
return false;
4411+
}
4412+
4413+
// Parse context layers
43984414
for (const auto& context : m_selectedContexts) {
43994415
if (!ParseContextLayers(m_contexts[context])) {
44004416
return false;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
cbuild-set:
2+
generated-by: csolution version 2.6.0
3+
contexts:
4+
- context: unknown1.debug+target
5+
- context: unknown2.release+target
6+
compiler: AC6
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# yaml-language-server: $schema=https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/main/tools/projmgr/schemas/csolution.schema.json
2+
3+
solution:
4+
compiler: AC6
5+
6+
target-types:
7+
- type: CM0
8+
device: RteTest_ARMCM0
9+
10+
projects:
11+
- project: TestProject1/test1.cproject.yml

tools/projmgr/test/src/ProjMgrUnitTests.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6560,3 +6560,15 @@ TEST_F(ProjMgrUnitTests, PackCaseSensitive) {
65606560
EXPECT_EQ("required pack: Arm::RteTest_DFP not installed",
65616561
cbuild["build-idx"]["cbuilds"][0]["messages"]["errors"][0].as<string>());
65626562
}
6563+
6564+
TEST_F(ProjMgrUnitTests, InvalidContextSet) {
6565+
StdStreamRedirect streamRedirect;
6566+
char* argv[4];
6567+
const string& csolution = testinput_folder + "/TestSolution/invalid-context-set.csolution.yml";
6568+
argv[1] = (char*)"convert";
6569+
argv[2] = (char*)csolution.c_str();
6570+
argv[3] = (char*)"--context-set";
6571+
EXPECT_EQ(1, RunProjMgr(4, argv, m_envp));
6572+
auto errStr = streamRedirect.GetErrorString();
6573+
EXPECT_NE(string::npos, errStr.find("unknown selected context(s):\n unknown1.debug+target\n unknown2.release+target"));
6574+
}

0 commit comments

Comments
 (0)