Skip to content

Commit 9e5b022

Browse files
[projmgr] Improve regions file existence check
1 parent 0fcca05 commit 9e5b022

File tree

5 files changed

+24
-15
lines changed

5 files changed

+24
-15
lines changed

tools/projmgr/include/ProjMgrWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,7 @@ class ProjMgrWorker {
901901
bool ProvidedConnectionsMatch(ConnectionsCollection collection, ConnectionsList connections);
902902
StrSet GetValidSets(ContextItem& context, const std::string& clayer);
903903
void SetDefaultLinkerScript(ContextItem& context);
904-
bool CheckAndGenerateRegionsHeader(ContextItem& context);
904+
void CheckAndGenerateRegionsHeader(ContextItem& context);
905905
bool GenerateRegionsHeader(ContextItem& context, std::string& generatedRegionsFile);
906906
void ExpandAccessSequence(const ContextItem& context, const ContextItem& refContext, const std::string& sequence, const std::string& outdir, std::string& item, bool withHeadingDot);
907907
void ExpandPackDir(ContextItem& context, const std::string& pack, std::string& item);

tools/projmgr/src/ProjMgrWorker.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,7 +2034,7 @@ bool ProjMgrWorker::AddRequiredComponents(ContextItem& context) {
20342034
return true;
20352035
}
20362036

2037-
bool ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
2037+
void ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
20382038
const string regionsHeader = RteFsUtils::MakePathCanonical(fs::path(context.directories.cprj).append(context.linker.regions).generic_string());
20392039
if (!RteFsUtils::Exists(regionsHeader)) {
20402040
string generatedRegionsFile;
@@ -2043,10 +2043,8 @@ bool ProjMgrWorker::CheckAndGenerateRegionsHeader(ContextItem& context) {
20432043
}
20442044
}
20452045
if (!RteFsUtils::Exists(regionsHeader)) {
2046-
ProjMgrLogger::Get().Error("specified regions header was not found", context.name, regionsHeader);
2047-
return false;
2046+
m_missingFiles.insert({ regionsHeader, FileNode() });
20482047
}
2049-
return true;
20502048
}
20512049

20522050
string ProjMgrWorker::GetContextRteFolder(ContextItem& context) {
@@ -3689,7 +3687,7 @@ bool ProjMgrWorker::ProcessContext(ContextItem& context, bool loadGenFiles, bool
36893687
}
36903688
// Check regions header, generate it if needed
36913689
if (!context.linker.regions.empty()) {
3692-
ret &= CheckAndGenerateRegionsHeader(context);
3690+
CheckAndGenerateRegionsHeader(context);
36933691
}
36943692
ret &= ProcessConfigFiles(context);
36953693
ret &= ProcessComponentFiles(context);

tools/projmgr/test/data/TestSolution/missing.cproject.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,15 @@ project:
55
- group: Sources
66
files:
77
- file: missing.c
8+
- file: generated.c
9+
10+
linker:
11+
- regions: regions.h
12+
- regions: generated.h
13+
14+
executes:
15+
- execute: dummy
16+
run: dummy
17+
output:
18+
- $ProjectDir()$/generated.c
19+
- $ProjectDir()$/generated.h

tools/projmgr/test/src/ProjMgrUnitTests.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6486,8 +6486,11 @@ TEST_F(ProjMgrUnitTests, MissingFile) {
64866486
argv[1] = (char*)"convert";
64876487
argv[2] = (char*)csolution.c_str();
64886488
EXPECT_EQ(1, RunProjMgr(3, argv, m_envp));
6489-
const string expectedOutStr = ".*/missing.cproject.yml:7:11 - error csolution: file '.*/TestSolution/missing.c' was not found";
6490-
EXPECT_TRUE(regex_search(streamRedirect.GetErrorString(), regex(expectedOutStr)));
6489+
const auto& errStr = streamRedirect.GetErrorString();
6490+
EXPECT_NE(string::npos, errStr.find("missing.c' was not found"));
6491+
EXPECT_NE(string::npos, errStr.find("regions.h' was not found"));
6492+
EXPECT_EQ(string::npos, errStr.find("generated.h' was not found"));
6493+
EXPECT_EQ(string::npos, errStr.find("generated.c' was not found"));
64916494
}
64926495

64936496
TEST_F(ProjMgrUnitTests, RunProjMgrSolution_pack_version_not_available) {

tools/projmgr/test/src/ProjMgrWorkerUnitTests.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,10 +1520,9 @@ TEST_F(ProjMgrWorkerUnitTests, CheckAndGenerateRegionsHeader) {
15201520
// Generation fails
15211521
context.directories.cprj = testoutput_folder;
15221522
context.linker.regions = "regions_RteTest_ARMCM0.h";
1523-
EXPECT_FALSE(CheckAndGenerateRegionsHeader(context));
1523+
CheckAndGenerateRegionsHeader(context);
15241524
expectedErrStr = "\
15251525
warning csolution: regions header file generation failed\n\
1526-
.*/regions_RteTest_ARMCM0.h - error csolution: specified regions header was not found\n\
15271526
";
15281527
errStr = streamRedirect.GetErrorString();
15291528
EXPECT_TRUE(regex_match(errStr, regex(expectedErrStr)));
@@ -1533,20 +1532,17 @@ warning csolution: regions header file generation failed\n\
15331532
context.targetAttributes["Dname"] = "RteTest_ARMCM0";
15341533
EXPECT_TRUE(SetTargetAttributes(context, context.targetAttributes));
15351534
streamRedirect.ClearStringStreams();
1536-
EXPECT_FALSE(CheckAndGenerateRegionsHeader(context));
1535+
CheckAndGenerateRegionsHeader(context);
15371536
expectedOutStr = ".*/Device/RteTest_ARMCM0/regions_RteTest_ARMCM0.h - info csolution: regions header generated successfully\n";
1538-
expectedErrStr = ".*/regions_RteTest_ARMCM0.h - error csolution: specified regions header was not found\n";
15391537
outStr = streamRedirect.GetOutString();
1540-
errStr = streamRedirect.GetErrorString();
15411538
EXPECT_TRUE(regex_match(outStr, regex(expectedOutStr)));
1542-
EXPECT_TRUE(regex_match(errStr, regex(expectedErrStr)));
1539+
EXPECT_NE(string::npos, m_missingFiles.begin()->first.find(context.linker.regions));
15431540

15441541
// Region header already exists, does nothing
15451542
streamRedirect.ClearStringStreams();
15461543
context.linker.regions = "./Device/RteTest_ARMCM0/regions_RteTest_ARMCM0.h";
15471544
CheckAndGenerateRegionsHeader(context);
15481545
EXPECT_TRUE(streamRedirect.GetOutString().empty());
1549-
EXPECT_TRUE(streamRedirect.GetErrorString().empty());
15501546
};
15511547

15521548
TEST_F(ProjMgrWorkerUnitTests, GetGeneratorDir) {

0 commit comments

Comments
 (0)