From 8c6fd05f39e4111650b62a62a528eb0a58ee012d Mon Sep 17 00:00:00 2001 From: Daniel Brondani Date: Fri, 30 Jan 2026 16:17:02 +0100 Subject: [PATCH] [csolution-rpc] Add `upgrade` node into `PackReference` --- tools/projmgr/CMakeLists.txt | 4 ++-- tools/projmgr/src/ProjMgrRpcServer.cpp | 3 +++ tools/projmgr/test/src/ProjMgrRpcTests.cpp | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tools/projmgr/CMakeLists.txt b/tools/projmgr/CMakeLists.txt index 905558662..8b2a03683 100644 --- a/tools/projmgr/CMakeLists.txt +++ b/tools/projmgr/CMakeLists.txt @@ -24,8 +24,8 @@ include(FetchContent) FetchContent_Declare( rpc-interface DOWNLOAD_EXTRACT_TIMESTAMP ON - URL https://github.com/Open-CMSIS-Pack/csolution-rpc/releases/download/v0.0.8/csolution-rpc.zip - URL_HASH SHA256=e347a98b6130c64d942d360ad31ca49899f3bf3113d40d9c460d6cd8f4c07b11 + URL https://github.com/Open-CMSIS-Pack/csolution-rpc/releases/download/v0.0.9/csolution-rpc.zip + URL_HASH SHA256=2be58020a28b7f8cda5da8f6cba8f605f93346beb32805919c5872b8fbc0d541 ) FetchContent_MakeAvailable(rpc-interface) diff --git a/tools/projmgr/src/ProjMgrRpcServer.cpp b/tools/projmgr/src/ProjMgrRpcServer.cpp index a696a7bb9..3c109a47e 100644 --- a/tools/projmgr/src/ProjMgrRpcServer.cpp +++ b/tools/projmgr/src/ProjMgrRpcServer.cpp @@ -417,6 +417,9 @@ PackReferenceVector RpcHandler::CollectPackReferences(const string& context) { packRef.origin = packItem.origin; packRef.path = packItem.path; packRef.selected = true; // initially pack is selected; + if (!contextItem.availablePackVersions[packId].empty()) { + packRef.upgrade = contextItem.availablePackVersions[packId]; + } packRefs.push_back(packRef); } return packRefs; diff --git a/tools/projmgr/test/src/ProjMgrRpcTests.cpp b/tools/projmgr/test/src/ProjMgrRpcTests.cpp index 54eaa9c22..9b06272f2 100644 --- a/tools/projmgr/test/src/ProjMgrRpcTests.cpp +++ b/tools/projmgr/test/src/ProjMgrRpcTests.cpp @@ -919,6 +919,21 @@ TEST_F(ProjMgrRpcTests, RpcGetUsedItems) { EXPECT_TRUE(components[1]["options"]["explicitVendor"]); } +TEST_F(ProjMgrRpcTests, RpcGetUsedItemsLocked) { + string context = "project_with_dfp_components+CM0"; + vector contextList = { + context + }; + auto requests = CreateLoadRequests("/TestSolution/PackLocking/lock_pack_version.csolution.yml", "", contextList); + requests += FormatRequest(3, "GetUsedItems", json({ { "context", context } })); + const auto& responses = RunRpcMethods(requests); + EXPECT_TRUE(responses[2]["result"]["success"]); + auto packs = responses[2]["result"]["packs"]; + EXPECT_EQ(packs[0]["pack"], "ARM::RteTest_DFP"); + EXPECT_EQ(packs[0]["resolvedPack"], "ARM::RteTest_DFP@0.1.1"); + EXPECT_EQ(packs[0]["upgrade"], "0.2.0"); +} + TEST_F(ProjMgrRpcTests, RpcGetPacksInfoSimple) { string context = "selectable+CM0"; vector contextList = {