Skip to content

Commit f6dcac3

Browse files
authored
[projmgr] make Info message under verbose and update affected unit tests
1 parent 5e83c84 commit f6dcac3

File tree

9 files changed

+185
-80
lines changed

9 files changed

+185
-80
lines changed

tools/projmgr/include/ProjMgrLogger.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class ProjMgrLogger {
5959
void Info(const std::string& msg, const std::string& context = std::string(),
6060
const std::string& file = std::string(), const int line = 0, const int column = 0);
6161

62-
/**
62+
/**
6363
* @brief print debug
6464
* @param message
6565
*/
@@ -78,15 +78,25 @@ class ProjMgrLogger {
7878
static bool IsQuiet() { return m_quiet || m_silent; }
7979

8080
/**
81-
* @brief flag to suppress infos and warnings
81+
* @brief check if in verbose mode
82+
* @return true if verbose
83+
*/
84+
static bool IsVerbose() { return m_verbose; }
85+
86+
/**
87+
* @brief flag to suppress infos and warnings
8288
*/
8389
static bool m_quiet;
8490

85-
/**
86-
* @brief flag to suppress all output and redirect cout to string buffer
91+
/**
92+
* @brief flag to suppress all output and redirect cout to string buffer
8793
*/
8894
static bool m_silent;
8995

96+
/**
97+
* @brief flag to enable verbose for infos
98+
*/
99+
static bool m_verbose;
90100

91101
/**
92102
* @brief get errors

tools/projmgr/src/ProjMgr.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ int ProjMgr::ParseCommandLine(int argc, char** argv) {
230230
m_cbuildgen = parseResult.count("cbuildgen");
231231
m_worker.SetCbuild2Cmake(!m_cbuildgen);
232232
ProjMgrLogger::m_quiet = parseResult.count("quiet");
233+
ProjMgrLogger::m_verbose = m_verbose;
233234
m_rpcServer.SetContentLengthHeader(parseResult.count("content-length"));
234235
m_rpcServer.SetDebug(m_debug);
235236
m_locked = parseResult.count("locked");
@@ -313,6 +314,12 @@ int ProjMgr::ParseCommandLine(int argc, char** argv) {
313314
return PrintUsage(optionsDict, m_command, m_args) ? -1 : 1;
314315
}
315316

317+
// Validate mutually exclusive options
318+
if (ProjMgrLogger::m_quiet && ProjMgrLogger::m_verbose) {
319+
ProjMgrLogger::Get().Error("command line options '--quiet' and '--verbose' are mutually exclusive");
320+
return ErrorCode::ERROR;
321+
}
322+
316323
// Set load packs policy
317324
if (!SetLoadPacksPolicy()) {
318325
return ErrorCode::ERROR;

tools/projmgr/src/ProjMgrLogger.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ static constexpr const char* PROJMGR_INFO = "info";
2222

2323
bool ProjMgrLogger::m_quiet = false;
2424
bool ProjMgrLogger::m_silent = false;
25+
bool ProjMgrLogger::m_verbose = false;
2526

2627
// singleton instance
2728
static unique_ptr<ProjMgrLogger> theProjMgrLogger = 0;
@@ -73,7 +74,7 @@ void ProjMgrLogger::Info(const string& msg, const string& context,
7374
const string mark = (line > 0 ? ":" + to_string(line) : "") + (column > 0 ? ":" + to_string(column) : "");
7475
CollectionUtils::PushBackUniquely(m_infos[context],
7576
(file.empty() ? "" : RteUtils::ExtractFileName(file) + mark + " - ") + msg);
76-
if (!IsQuiet() ) {
77+
if (!IsQuiet() && IsVerbose()) {
7778
cout << (file.empty() ? "" : file + mark + " - ") << PROJMGR_INFO << PROJMGR_TOOL << msg << endl;
7879
}
7980
}

tools/projmgr/test/data/TestLayers/ref/config.cbuild-idx.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,9 @@ build-idx:
8888
configuration: .CompatibleLayers+RteTest_ARMCM3
8989
clayers:
9090
- clayer: config.clayer.yml
91+
messages:
92+
info:
93+
- "valid configuration #1: (context 'config.CompatibleLayers+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/config.clayer.yml\n set: set1.select1 (connect R - set 1 select 1)\n ${DEVTOOLS(data)}/TestLayers/config.cproject.yml\n set: set1.select1 (project X - set 1 select 1)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config1.clayer.yml (layer type: Config1)\n set: set1.select1 (connect A - set 1 select 1)\n set: set2.select1 (connect C - set 2 select 1)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config2.clayer.yml (layer type: Config2)\n set: set1.select1 (connect F - set 1 select 1)\n"
94+
- "valid configuration #2: (context 'config.CompatibleLayers+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/config.clayer.yml\n set: set1.select1 (connect R - set 1 select 1)\n ${DEVTOOLS(data)}/TestLayers/config.cproject.yml\n set: set1.select1 (project X - set 1 select 1)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config1.clayer.yml (layer type: Config1)\n set: set1.select1 (connect A - set 1 select 1)\n set: set2.select1 (connect C - set 2 select 1)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config3.clayer.yml (layer type: Config2)\n set: set3.select1 (connect F - set 3 select 1)\n"
95+
- "valid configuration #3: (context 'config.CompatibleLayers+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/config.clayer.yml\n set: set1.select2 (connect S - set 1 select 2)\n ${DEVTOOLS(data)}/TestLayers/config.cproject.yml\n set: set1.select2 (project Y - set 1 select 2)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config1.clayer.yml (layer type: Config1)\n set: set1.select2 (connect B - set 1 select 2)\n set: set2.select2 (connect D - set 2 select 2)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config2.clayer.yml (layer type: Config2)\n set: set1.select2 (connect G - set 1 select 2)\n"
96+
- "valid configuration #4: (context 'config.CompatibleLayers+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/config.clayer.yml\n set: set1.select2 (connect S - set 1 select 2)\n ${DEVTOOLS(data)}/TestLayers/config.cproject.yml\n set: set1.select2 (project Y - set 1 select 2)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config1.clayer.yml (layer type: Config1)\n set: set1.select2 (connect B - set 1 select 2)\n set: set2.select2 (connect D - set 2 select 2)\n ${DEVTOOLS(packs)}/ARM/RteTest_DFP/0.2.0/Layers/config3.clayer.yml (layer type: Config2)\n set: set3.select2 (connect G - set 3 select 2)\n"

tools/projmgr/test/data/TestLayers/ref/no_compiler.cbuild-idx.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ build-idx:
3030
configuration: +RteTest_ARMCM3
3131
clayers:
3232
- clayer: select.clayer.yml
33+
messages:
34+
info:
35+
- "valid configuration #1: (context 'no_compiler+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/no_compiler.cproject.yml\n set: set1.select1 (project X - set 1 select 1)\n ${DEVTOOLS(data)}/TestLayers/select.clayer.yml (layer type: Board)\n set: set1.select1 (provided connections A and B - set 1 select 1)\n"
36+
- "valid configuration #2: (context 'no_compiler+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/no_compiler.cproject.yml\n set: set1.select2 (project Y - set 1 select 2)\n ${DEVTOOLS(data)}/TestLayers/select.clayer.yml (layer type: Board)\n set: set1.select2 (provided connections B and C - set 1 select 2)\n"

tools/projmgr/test/data/TestLayers/ref/select.cbuild-idx.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ build-idx:
2727
configuration: +RteTest_ARMCM3
2828
clayers:
2929
- clayer: select.clayer.yml
30+
messages:
31+
info:
32+
- "valid configuration #1: (context 'select+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/select.cproject.yml\n set: set1.select1 (project X - set 1 select 1)\n ${DEVTOOLS(data)}/TestLayers/select.clayer.yml (layer type: Board)\n set: set1.select1 (provided connections A and B - set 1 select 1)\n"
33+
- "valid configuration #2: (context 'select+RteTest_ARMCM3')\n ${DEVTOOLS(data)}/TestLayers/select.cproject.yml\n set: set1.select2 (project Y - set 1 select 2)\n ${DEVTOOLS(data)}/TestLayers/select.clayer.yml (layer type: Board)\n set: set1.select2 (provided connections B and C - set 1 select 2)\n"

tools/projmgr/test/src/ProjMgrGeneratorUnitTests.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "ProjMgr.h"
88
#include "ProjMgrTestEnv.h"
9+
#include "ProjMgrLogger.h"
910
#include "RteFsUtils.h"
1011
#include "gtest/gtest.h"
1112
#include <regex>
@@ -17,6 +18,12 @@ class ProjMgrGeneratorUnitTests : public ProjMgrGenerator, public ::testing::Tes
1718
protected:
1819
ProjMgrGeneratorUnitTests() {}
1920
virtual ~ProjMgrGeneratorUnitTests() {}
21+
22+
void TearDown() {
23+
// return mode to normal to avoid affecting other tests
24+
ProjMgrLogger::m_quiet = false;
25+
ProjMgrLogger::m_verbose = false;
26+
}
2027
};
2128

2229
TEST_F(ProjMgrGeneratorUnitTests, GetStringFromVector) {
@@ -159,7 +166,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRunIncapableGenerator) {
159166
}
160167

161168
TEST_F(ProjMgrGeneratorUnitTests, DryRun) {
162-
char* argv[7], *envp[2];
169+
char* argv[8], *envp[2];
163170
string gcc = "GCC_TOOLCHAIN_11_2_1=" + testinput_folder;
164171
envp[0] = (char*)gcc.c_str();
165172
envp[1] = (char*)'\0';
@@ -172,6 +179,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRun) {
172179
argv[4] = (char*)"-g";
173180
argv[5] = (char*)"RteTestGeneratorIdentifier";
174181
argv[6] = (char*)"--dry-run";
182+
argv[7] = (char*)"--verbose";
175183

176184
const string generatorInputFile = testinput_folder + "/TestSolution/tmp/TestProject3_1.Debug+TypeA.cbuild-gen.yml";
177185
const string generatorDestination = testinput_folder + "/TestSolution/TestProject3_1/gendir";
@@ -181,7 +189,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRun) {
181189
RteFsUtils::RemoveDir(generatorDestination);
182190
RteFsUtils::RemoveDir(rteDir);
183191

184-
EXPECT_EQ(0, ProjMgr::RunProjMgr(7, argv, envp));
192+
EXPECT_EQ(0, ProjMgr::RunProjMgr(8, argv, envp));
185193

186194
ProjMgrTestEnv::CompareFile(testinput_folder + "/TestSolution/ref/TestProject3_1.Debug+TypeA.cbuild-gen.yml", generatorInputFile, ProjMgrTestEnv::StripAbsoluteFunc);
187195

@@ -208,7 +216,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRun) {
208216
}
209217

210218
TEST_F(ProjMgrGeneratorUnitTests, DryRunNoLdScript) {
211-
char* argv[7], *envp[2];
219+
char* argv[8], *envp[2];
212220
string gcc = "GCC_TOOLCHAIN_11_2_1=" + testinput_folder;
213221
envp[0] = (char*)gcc.c_str();
214222
envp[1] = (char*)'\0';
@@ -221,6 +229,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRunNoLdScript) {
221229
argv[4] = (char*)"-g";
222230
argv[5] = (char*)"RteTestGeneratorIdentifier";
223231
argv[6] = (char*)"--dry-run";
232+
argv[7] = (char*)"--verbose";
224233

225234
const string generatorInputFile = testinput_folder + "/TestSolution/tmp/TestProject3_5.Debug+TypeA.cbuild-gen.yml";
226235
const string generatorDestination = testinput_folder + "/TestSolution/TestProject3_5/gendir";
@@ -230,7 +239,7 @@ TEST_F(ProjMgrGeneratorUnitTests, DryRunNoLdScript) {
230239
RteFsUtils::RemoveDir(generatorDestination);
231240
RteFsUtils::RemoveDir(rteDir);
232241

233-
EXPECT_EQ(0, ProjMgr::RunProjMgr(7, argv, envp));
242+
EXPECT_EQ(0, ProjMgr::RunProjMgr(8, argv, envp));
234243

235244
ProjMgrTestEnv::CompareFile(testinput_folder + "/TestSolution/ref/TestProject3_5.Debug+TypeA.cbuild-gen.yml", generatorInputFile, ProjMgrTestEnv::StripAbsoluteFunc);
236245

0 commit comments

Comments
 (0)