@@ -301,7 +301,8 @@ int main(int argc, char** argv)
301301 const char * mainConfigYamlStr = R"(
302302 PreferredProfile: "imported-profile"
303303 Profiles:
304- - Import: "Default/g++.yaml"
304+ - Import: ["Default/gcc.yaml", "Default/gccCompilerLinker.yaml"]
305+
305306 - Name: "second-profile"
306307 FileExtensions: [.cpp, .cc, .cxx]
307308 Languages: ["c++"]
@@ -334,12 +335,15 @@ int main(int argc, char** argv)
334335 LinkTypes: *TypeInfoEntries
335336 )" ;
336337
337- const char * importedProfileYamlStr = R"(
338+ const char * importedGccProfileYamlStr = R"(
338339 Name: "imported-profile"
339- NameAliases: ["gcc "]
340+ NameAliases: ["g++ "]
340341 FileExtensions: [.cpp, .cc]
341342 Languages: ["c++"]
342343 Import: "filetypes.yaml"
344+ )" ;
345+
346+ const char * importedCompilerLinkerYamlStr = R"(
343347 Compiler:
344348 CheckExistence:
345349 DefaultPlatform: "imported-gcc -v"
@@ -387,80 +391,124 @@ int main(int argc, char** argv)
387391 .ReturnsResult ();
388392
389393 // Setup filesystem exist for the import yaml files
390- std::string firstExpectedImportPath = " some/config/dir/Default/g++.yaml" ;
391- std::string secondExpectedImportPath = " some/config/dir/Default/filetypes.yaml" ;
394+ std::string gccExpectedImportPath = " some/config/dir/Default/gcc.yaml" ;
395+ std::string filetypesExpectedImportPath = " some/config/dir/Default/filetypes.yaml" ;
396+ std::string gccCompilerLinkerExpectedImportPath =
397+ " some/config/dir/Default/gccCompilerLinker.yaml" ;
392398
393- std::shared_ptr<OverrideResult> firstImportFileExistResult =
399+ std::shared_ptr<OverrideResult> gccImportFileExistResult =
394400 CO_SETUP_OVERRIDE (OverrideInstance, Mock_exists)
395401 .WhenCalledWith <const std::string&,
396- CO_ANY_TYPE>( firstExpectedImportPath ,
402+ CO_ANY_TYPE>( gccExpectedImportPath ,
397403 CO_ANY)
398404 .Returns <bool >(true )
399405 .ReturnsResult ();
400- std::shared_ptr<OverrideResult> secondImportFileExistResult =
406+ std::shared_ptr<OverrideResult> filetypesImportFileExistResult =
401407 CO_SETUP_OVERRIDE (OverrideInstance, Mock_exists)
402408 .WhenCalledWith <const std::string&,
403- CO_ANY_TYPE>( secondExpectedImportPath ,
409+ CO_ANY_TYPE>( filetypesExpectedImportPath ,
404410 CO_ANY)
405411 .Returns <bool >(true )
406412 .ReturnsResult ();
413+ std::shared_ptr<OverrideResult> gccCompilerLinkerImportFileExistResult =
414+ CO_SETUP_OVERRIDE (OverrideInstance, Mock_exists)
415+ .WhenCalledWith
416+ <
417+ const std::string&,
418+ CO_ANY_TYPE
419+ >
420+ (
421+ gccCompilerLinkerExpectedImportPath,
422+ CO_ANY
423+ )
424+ .Returns <bool >(true )
425+ .ReturnsResult ();
407426
408427 // Record if there's an ifstream created with import paths
409- void * firstImportIfstreamInstance = nullptr ;
410- void * secondImportIfstreamInstance = nullptr ;
411- std::shared_ptr<OverrideResult> firstImportedFileStreamResult =
428+ void * gccImportIfstreamInstance = nullptr ;
429+ void * filetypesImportIfstreamInstance = nullptr ;
430+ void * gccCompilerLinkerImportIfstreamInstance = nullptr ;
431+ std::shared_ptr<OverrideResult> gccImportedFileStreamResult =
432+ CO_SETUP_OVERRIDE (OverrideInstance, Mock_ifstream)
433+ .WhenCalledWith <const ghc::filesystem::path>
434+ (gccExpectedImportPath)
435+ .Times (1 )
436+ .WhenCalledExpectedly_Do
437+ (
438+ [&gccImportIfstreamInstance]
439+ (void * instance, const std::vector<void *>&)
440+ {
441+ gccImportIfstreamInstance = instance;
442+ }
443+ )
444+ .ReturnsResult ();
445+ std::shared_ptr<OverrideResult> filetypesImportedFileStreamResult =
412446 CO_SETUP_OVERRIDE (OverrideInstance, Mock_ifstream)
413447 .WhenCalledWith <const ghc::filesystem::path>
414- (firstExpectedImportPath )
448+ (filetypesExpectedImportPath )
415449 .Times (1 )
416450 .WhenCalledExpectedly_Do
417451 (
418- [&firstImportIfstreamInstance ]
452+ [&filetypesImportIfstreamInstance ]
419453 (void * instance, const std::vector<void *>&)
420454 {
421- firstImportIfstreamInstance = instance;
455+ filetypesImportIfstreamInstance = instance;
422456 }
423457 )
424458 .ReturnsResult ();
425- std::shared_ptr<OverrideResult> secondImportedFileStreamResult =
459+ std::shared_ptr<OverrideResult> gccCompilerLinkerImportedFileStreamResult =
426460 CO_SETUP_OVERRIDE (OverrideInstance, Mock_ifstream)
427461 .WhenCalledWith <const ghc::filesystem::path>
428- (secondExpectedImportPath )
462+ (gccCompilerLinkerExpectedImportPath )
429463 .Times (1 )
430464 .WhenCalledExpectedly_Do
431465 (
432- [&secondImportIfstreamInstance ]
466+ [&gccCompilerLinkerImportIfstreamInstance ]
433467 (void * instance, const std::vector<void *>&)
434468 {
435- secondImportIfstreamInstance = instance;
469+ gccCompilerLinkerImportIfstreamInstance = instance;
436470 }
437471 )
438472 .ReturnsResult ();
439473
440474 // Mock for rdbuf call with specific path check for import files
441- std::shared_ptr<OverrideResult> firstImportedFileRdbufResult =
475+ std::shared_ptr<OverrideResult> gccImportedFileRdbufResult =
442476 CO_SETUP_OVERRIDE (OverrideInstance, rdbuf)
443- .Returns <std::string>(importedProfileYamlStr )
477+ .Returns <std::string>(importedGccProfileYamlStr )
444478 .Times (1 )
445479 .If
446480 (
447- [&firstImportIfstreamInstance ]
481+ [&gccImportIfstreamInstance ]
448482 (void * instance, const std::vector<void *>&) -> bool
449483 {
450- return instance == firstImportIfstreamInstance ;
484+ return instance == gccImportIfstreamInstance ;
451485 }
452486 )
453487 .ReturnsResult ();
454- std::shared_ptr<OverrideResult> secondImportedFileRdbufResult =
488+ std::shared_ptr<OverrideResult> filetypesImportedFileRdbufResult =
455489 CO_SETUP_OVERRIDE (OverrideInstance, rdbuf)
456490 .Returns <std::string>(importedFiletypesYamlStr)
457491 .Times (1 )
458492 .If
459493 (
460- [&secondImportIfstreamInstance]
494+ [&filetypesImportIfstreamInstance]
495+ (void * instance, const std::vector<void *>&) -> bool
496+ {
497+ return instance == filetypesImportIfstreamInstance;
498+ }
499+ )
500+ .ReturnsResult ();
501+ std::shared_ptr<OverrideResult> gccCompilerLinkerImportedFileRdbufResult =
502+ CO_SETUP_OVERRIDE (OverrideInstance, rdbuf)
503+ .Returns <std::string>(importedCompilerLinkerYamlStr)
504+ .Times (1 )
505+ .If
506+ (
507+ [&gccCompilerLinkerImportIfstreamInstance]
461508 (void * instance, const std::vector<void *>&) -> bool
462509 {
463- return instance == secondImportIfstreamInstance;
510+ return instance ==
511+ gccCompilerLinkerImportIfstreamInstance;
464512 }
465513 )
466514 .ReturnsResult ();
@@ -476,14 +524,17 @@ int main(int argc, char** argv)
476524 );
477525
478526 commonOverrideStatusCheck ();
479- ssTEST_OUTPUT_ASSERT (" " , firstImportFileExistResult->GetSucceedCount (), 1 );
480- ssTEST_OUTPUT_ASSERT (" " , secondImportFileExistResult->GetSucceedCount (), 1 );
527+ ssTEST_OUTPUT_ASSERT (" " , gccImportFileExistResult->GetSucceedCount (), 1 );
528+ ssTEST_OUTPUT_ASSERT (" " , filetypesImportFileExistResult->GetSucceedCount (), 1 );
529+ ssTEST_OUTPUT_ASSERT (" " , gccCompilerLinkerImportFileExistResult->GetSucceedCount (), 1 );
481530
482- ssTEST_OUTPUT_ASSERT (" " , firstImportedFileStreamResult->GetSucceedCount (), 1 );
483- ssTEST_OUTPUT_ASSERT (" " , secondImportedFileStreamResult->GetSucceedCount (), 1 );
531+ ssTEST_OUTPUT_ASSERT (" " , gccImportedFileStreamResult->GetSucceedCount (), 1 );
532+ ssTEST_OUTPUT_ASSERT (" " , filetypesImportedFileStreamResult->GetSucceedCount (), 1 );
533+ ssTEST_OUTPUT_ASSERT (" " , gccCompilerLinkerImportedFileStreamResult->GetSucceedCount (), 1 );
484534
485- ssTEST_OUTPUT_ASSERT (" " , firstImportedFileRdbufResult->GetSucceedCount (), 1 );
486- ssTEST_OUTPUT_ASSERT (" " , secondImportedFileRdbufResult->GetSucceedCount (), 1 );
535+ ssTEST_OUTPUT_ASSERT (" " , gccImportedFileRdbufResult->GetSucceedCount (), 1 );
536+ ssTEST_OUTPUT_ASSERT (" " , filetypesImportedFileRdbufResult->GetSucceedCount (), 1 );
537+ ssTEST_OUTPUT_ASSERT (" " , gccCompilerLinkerImportedFileRdbufResult->GetSucceedCount (), 1 );
487538
488539 ssTEST_OUTPUT_ASSERT (" ReadUserConfig should succeed" , parseResult);
489540 ssTEST_OUTPUT_ASSERT (" Should parse 2 profiles (1 imported + 1 inline)" , profiles.size (), 2 );
@@ -503,7 +554,7 @@ int main(int argc, char** argv)
503554 " file-prefix" );
504555 ssTEST_OUTPUT_ASSERT ( " First profile should have correct name aliases" ,
505556 profiles[0 ].NameAliases .size () == 1 &&
506- profiles[0 ].NameAliases .find (" gcc " ) !=
557+ profiles[0 ].NameAliases .find (" g++ " ) !=
507558 profiles[0 ].NameAliases .end ());
508559 ssTEST_OUTPUT_ASSERT ( " PreferredProfile should match the imported profile" ,
509560 preferredProfile,
0 commit comments