diff --git a/tools/projmgr/src/ProjMgrRpcServer.cpp b/tools/projmgr/src/ProjMgrRpcServer.cpp index 3c109a47e..8bab3cf68 100644 --- a/tools/projmgr/src/ProjMgrRpcServer.cpp +++ b/tools/projmgr/src/ProjMgrRpcServer.cpp @@ -286,6 +286,7 @@ RpcArgs::SuccessResult RpcHandler::LoadPacks(void) { } RpcArgs::SuccessResult RpcHandler::LoadSolution(const string& solution, const string& activeTarget) { + m_bUseAllPacks = false; // loading solution will first use only listed packs m_packReferences.clear(); RpcArgs::SuccessResult result = {false}; const auto csolutionFile = RteFsUtils::MakePathCanonical(solution); @@ -846,6 +847,9 @@ RpcArgs::ConvertSolutionResult RpcHandler::ConvertSolution(const string& solutio if(!CheckSolutionArg(csolutionFile, result.message)) { return result; } + m_bUseAllPacks = false; // loading solution will first use only listed packs + m_packReferences.clear(); // will be updated + if(!m_manager.RunConvert(csolutionFile, activeTarget, updateRte) || !ProjMgrLogger::Get().GetErrors().empty()) { if(m_worker.HasVarDefineError()) { const auto& vars = m_worker.GetUndefLayerVars(); diff --git a/tools/projmgr/test/src/ProjMgrRpcTests.cpp b/tools/projmgr/test/src/ProjMgrRpcTests.cpp index 9b06272f2..bafb14dbf 100644 --- a/tools/projmgr/test/src/ProjMgrRpcTests.cpp +++ b/tools/projmgr/test/src/ProjMgrRpcTests.cpp @@ -539,6 +539,28 @@ TEST_F(ProjMgrRpcTests, RpcResolveComponents) { EXPECT_FALSE(responses[4]["result"].contains("validation")); } +TEST_F(ProjMgrRpcTests, RpcGetComponentsTree) { + string context = "selectable+CM0"; + vector contextList = { + context + }; + string csolution = "/Validation/dependencies.csolution.yml"; + auto requests = CreateLoadRequests(csolution, "", contextList); + requests += FormatRequest(3, "GetComponentsTree", json({{ "context", context }, {"all", true}})); + requests += FormatRequest(4, "GetComponentsTree", json({{ "context", context }, {"all", false}})); + requests += FormatRequest(5, "LoadSolution", json({{ "solution", testinput_folder + csolution }, { "activeTarget", "" }})); + requests += FormatRequest(6, "GetComponentsTree", json({{ "context", context }, {"all", true}})); + + const auto& responses = RunRpcMethods(requests); + + auto size3 = responses[2]["result"]["classes"].size(); + auto size4 = responses[3]["result"]["classes"].size(); + auto size6 = responses[5]["result"]["classes"].size(); + EXPECT_TRUE(size3 > size4); // there are more components in all packs that in packs listed in solution + EXPECT_EQ(size3, size6); // after solution reload, all components can be requested +} + + TEST_F(ProjMgrRpcTests, RpcSelectComponent) { string context = "selectable+CM0"; vector contextList = {