@@ -605,6 +605,69 @@ TEST_F(ProjMgrRpcTests, RpcSelectComponent) {
605605 EXPECT_FALSE (responses[5 ][" result" ].contains (" validation" ));
606606}
607607
608+
609+ TEST_F (ProjMgrRpcTests, RpcSelectComponentLayer) {
610+ string context = " selectable+CM0" ;
611+ vector<string> contextList = {
612+ context
613+ };
614+ RpcArgs::Options opt{" core.clayer.yml" , " @>=0.1.0" , true };
615+ json param;
616+ param[" context" ] = context;
617+ param[" id" ] = " ARM::RteTest:CORE" ;
618+ param[" count" ] = 1 ;
619+ RpcArgs::to_json (param[" options" ], opt);
620+
621+ auto requests = CreateLoadRequests (" /Validation/dependencies.csolution.yml" , " " , contextList);
622+ requests += FormatRequest (3 , " GetUsedItems" , json ({{ " context" , context }}));
623+ requests += FormatRequest (4 , " SelectComponent" , param);
624+ requests += FormatRequest (5 , " GetComponentsTree" , json ({{ " context" , context }, {" all" , false }}));
625+ requests += FormatRequest (6 , " GetComponentsTree" , json ({{ " context" , context }, {" all" , true }}));
626+ requests += FormatRequest (7 , " GetComponentsTree" , json ({{ " context" , context }, {" all" , false }}));
627+ requests += FormatRequest (8 , " Apply" , json ({{ " context" , context }}));
628+ requests += FormatRequest (9 , " GetUsedItems" , json ({{ " context" , context }}));
629+
630+ const auto & responses = RunRpcMethods (requests);
631+
632+ EXPECT_TRUE (responses[2 ][" result" ][" success" ]);
633+ auto components = responses[2 ][" result" ][" components" ];
634+ auto packs = responses[2 ][" result" ][" packs" ];
635+ EXPECT_EQ (packs.size (), 2 );
636+ EXPECT_EQ (packs[0 ][" pack" ], " ARM::RteTest_DFP@0.2.0" );
637+ EXPECT_EQ (packs[0 ][" resolvedPack" ], " ARM::RteTest_DFP@0.2.0" );
638+ EXPECT_EQ (components[0 ][" id" ], " Device:Startup&RteTest Startup" );
639+ EXPECT_EQ (components[0 ][" resolvedComponent" ][" id" ], " ARM::Device:Startup&RteTest Startup@2.0.3" );
640+
641+ EXPECT_TRUE (responses[3 ][" result" ][" success" ]); // select successful
642+
643+ EXPECT_TRUE (responses[7 ][" result" ][" success" ]); // apply successful
644+
645+ components = responses[8 ][" result" ][" components" ];
646+ packs = responses[8 ][" result" ][" packs" ];
647+ EXPECT_EQ (packs.size (), 3 ); // added reference to layer file
648+ EXPECT_EQ (packs[0 ][" pack" ], " ARM::RteTest_DFP@0.2.0" );
649+ string origin = packs[0 ][" origin" ];
650+ EXPECT_TRUE (origin.find (" .csolution.yml" ) != string::npos);
651+ EXPECT_TRUE (!!packs[0 ][" selected" ]);
652+ EXPECT_EQ (packs[2 ][" pack" ], " ARM::RteTest_DFP@0.2.0" );
653+ EXPECT_EQ (packs[2 ][" origin" ], " core.clayer.yml" );
654+ EXPECT_TRUE (!!packs[2 ][" selected" ]);
655+
656+ EXPECT_EQ (components[0 ][" id" ], " Device:Startup&RteTest Startup" );
657+ EXPECT_EQ (components[0 ][" resolvedComponent" ][" id" ], " ARM::Device:Startup&RteTest Startup@2.0.3" );
658+
659+ string id = components[1 ][" id" ];
660+ EXPECT_EQ (id, " ARM::RteTest:CORE@>=0.1.0" );
661+ EXPECT_EQ (RteUtils::ExtractPrefix (id, " ::" ), " ARM" );
662+ EXPECT_EQ (RteUtils::ExtractSuffix (id, " @" , true ), " @>=0.1.0" );
663+ EXPECT_EQ (components[1 ][" resolvedComponent" ][" id" ], " ARM::RteTest:CORE@0.1.1" );
664+ EXPECT_EQ (components[1 ][" options" ][" layer" ], " core.clayer.yml" );
665+ EXPECT_EQ (components[1 ][" options" ][" explicitVersion" ], " @>=0.1.0" );
666+ EXPECT_TRUE (components[1 ][" options" ][" explicitVendor" ]);
667+ }
668+
669+
670+
608671TEST_F (ProjMgrRpcTests, RpcSelectComponentMissing) {
609672 string context = " missing-component+CM0" ;
610673 vector<string> contextList = {
@@ -621,11 +684,11 @@ TEST_F(ProjMgrRpcTests, RpcSelectComponentMissing) {
621684 requests += FormatRequest (3 , " ValidateComponents" , json ({{ " context" , context }}));
622685 requests += FormatRequest (4 , " GetComponentsTree" , json ({{ " context" , context }, {" all" , false }}));
623686 requests += FormatRequest (5 , " GetUsedItems" , json ({{ " context" , context }}));
624- // unselect component
625- requests += FormatRequest (6 , " SelectComponent " , param );
687+ // change pack filter
688+ requests += FormatRequest (6 , " GetComponentsTree " , json ({{ " context " , context }, { " all " , true }}) );
626689 requests += FormatRequest (7 , " ValidateComponents" , json ({{ " context" , context }}));
627- // select component again
628- param[" count" ] = 1 ;
690+ // select component with another count
691+ param[" count" ] = 2 ;
629692 requests += FormatRequest (8 , " SelectComponent" , param);
630693 requests += FormatRequest (9 , " ValidateComponents" , json ({{ " context" , context }}));
631694 // finally unselect and apply
@@ -651,8 +714,8 @@ TEST_F(ProjMgrRpcTests, RpcSelectComponentMissing) {
651714 EXPECT_EQ (components[0 ][" selectedCount" ], 1 );
652715
653716 EXPECT_TRUE (responses[5 ][" result" ][" success" ]);
654- EXPECT_EQ (responses[6 ][" result" ][" result" ], " IGNORED " );
655- EXPECT_FALSE (responses[6 ][" result" ].contains (" validation" ));
717+ EXPECT_EQ (responses[6 ][" result" ][" result" ], " MISSING " );
718+ EXPECT_TRUE (responses[6 ][" result" ].contains (" validation" ));
656719
657720 EXPECT_EQ (responses[8 ][" result" ][" result" ], " MISSING" );
658721
0 commit comments