Skip to content

Commit d358115

Browse files
authored
[projmgr] Always accept --active <target-type> option regardless of available target-set
1 parent 734a2f2 commit d358115

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

tools/projmgr/src/ProjMgrWorker.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5835,10 +5835,15 @@ bool ProjMgrWorker::PopulateActiveTargetSet(const string& activeTargetSet) {
58355835
}
58365836
}
58375837
m_activeTargetType = targetType;
5838+
if (!targetSetFound && targetSet.empty() && !type.targetSet.empty()) {
5839+
// selected target-type does not have a default target-set: take first named target-set
5840+
// use default context selection (ParseTargetSetContextSelection)
5841+
m_activeTargetSet = type.targetSet.front();
5842+
}
58385843
break;
58395844
}
58405845
}
5841-
if (m_activeTargetType.empty() || !targetSetFound) {
5846+
if (m_activeTargetType.empty() || (!targetSetFound && !targetSet.empty())) {
58425847
ProjMgrLogger::Get().Error("'" + activeTargetSet + "' is not selectable as active target-set");
58435848
return false;
58445849
}

tools/projmgr/test/src/ProjMgrUnitTests.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7047,24 +7047,29 @@ TEST_F(ProjMgrUnitTests, ConvertActiveTargetSet) {
70477047
const YAML::Node& cbuildRun2 = YAML::LoadFile(testinput_folder + "/TestTargetSet/out/solution+Type1.cbuild-run.yml");
70487048
EXPECT_EQ("<default>", cbuildRun2["cbuild-run"]["target-set"].as<string>());
70497049

7050-
streamRedirect.ClearStringStreams();
70517050
argv[4] = (char*)"";
70527051
EXPECT_EQ(0, RunProjMgr(5, argv, 0));
70537052
const YAML::Node& cbuildRun3 = YAML::LoadFile(testinput_folder + "/TestTargetSet/out/solution+Type1.cbuild-run.yml");
70547053
EXPECT_EQ("Type1", cbuildRun3["cbuild-run"]["target-type"].as<string>());
70557054
EXPECT_EQ("<default>", cbuildRun3["cbuild-run"]["target-set"].as<string>());
70567055

7056+
argv[4] = (char*)"Type2";
7057+
EXPECT_EQ(0, RunProjMgr(5, argv, 0));
7058+
const YAML::Node& cbuildRun4 = YAML::LoadFile(testinput_folder + "/TestTargetSet/out/solution+Type2.cbuild-run.yml");
7059+
EXPECT_EQ("Type2", cbuildRun4["cbuild-run"]["target-type"].as<string>());
7060+
EXPECT_EQ("Default2", cbuildRun4["cbuild-run"]["target-set"].as<string>());
7061+
70577062
streamRedirect.ClearStringStreams();
70587063
argv[4] = (char*)"Type1@Unknown";
70597064
EXPECT_EQ(1, RunProjMgr(5, argv, 0));
70607065
auto errStr = streamRedirect.GetErrorString();
70617066
EXPECT_STREQ(errStr.c_str(), "error csolution: 'Type1@Unknown' is not selectable as active target-set\n");
70627067

70637068
streamRedirect.ClearStringStreams();
7064-
argv[4] = (char*)"Type2";
7069+
argv[4] = (char*)"TypeUnknown";
70657070
EXPECT_EQ(1, RunProjMgr(5, argv, 0));
70667071
errStr = streamRedirect.GetErrorString();
7067-
EXPECT_STREQ(errStr.c_str(), "error csolution: 'Type2' is not selectable as active target-set\n");
7072+
EXPECT_STREQ(errStr.c_str(), "error csolution: 'TypeUnknown' is not selectable as active target-set\n");
70687073

70697074
streamRedirect.ClearStringStreams();
70707075
argv[4] = (char*)"Type1";

0 commit comments

Comments
 (0)