Skip to content

Commit 63d72ca

Browse files
committed
fix: improve error handling in Exec function and enhance test cases for command execution
1 parent eeb37a0 commit 63d72ca

File tree

3 files changed

+46
-18
lines changed

3 files changed

+46
-18
lines changed

src/common/cmdHelper/src/cmdHelper.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <memory>
1010
#include <ranges>
1111
#include <sstream>
12+
#include <stdexcept>
1213
#include <string>
1314
#include <vector>
1415

@@ -91,13 +92,11 @@ namespace Utils
9192

9293
return {.StdOut = output, .StdErr = error, .ExitCode = process.exit_code()};
9394
}
94-
// NOLINTBEGIN(bugprone-empty-catch)
95-
catch (const std::exception&)
95+
catch (const std::exception& e)
9696
{
97-
// log? throw?
97+
return {.StdOut = "", .StdErr = e.what(), .ExitCode = 1};
9898
}
99-
// NOLINTEND(bugprone-empty-catch)
10099

101-
return {};
100+
return {.StdOut = "", .StdErr = "", .ExitCode = 1};
102101
}
103102
} // namespace Utils

src/common/cmdHelper/tests/cmdHelper_test.cpp

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,52 @@
11
#include "cmdHelper_test.hpp"
22
#include "cmdHelper.hpp"
33

4-
void CmdUtilsTest::SetUp() {};
5-
6-
void CmdUtilsTest::TearDown() {};
4+
#include <string>
75

86
#ifdef WIN32
9-
TEST_F(CmdUtilsTest, CmdVersion)
7+
const std::string TEST_CMD = "ver";
8+
#else
9+
const std::string TEST_CMD = "uname";
10+
#endif
11+
12+
TEST_F(CmdUtilsTest, PipeOpenCmd)
1013
{
11-
const auto result {Utils::PipeOpen("ver")};
14+
const auto result {Utils::PipeOpen(TEST_CMD)};
1215
EXPECT_FALSE(result.empty());
1316
}
14-
#else
15-
TEST_F(CmdUtilsTest, CmdUname)
17+
18+
TEST_F(CmdUtilsTest, ExecCmd)
1619
{
17-
const auto result {Utils::PipeOpen("uname")};
18-
EXPECT_FALSE(result.empty());
20+
const auto result {Utils::Exec(TEST_CMD)};
21+
EXPECT_FALSE(result.StdOut.empty());
22+
EXPECT_TRUE(result.StdErr.empty());
23+
EXPECT_EQ(result.ExitCode, 0);
24+
}
25+
26+
TEST_F(CmdUtilsTest, ExecInvalidCmd)
27+
{
28+
const auto result {Utils::Exec("invalid_command")};
29+
EXPECT_TRUE(result.StdOut.empty());
30+
EXPECT_FALSE(result.StdErr.empty());
31+
EXPECT_NE(result.ExitCode, 0);
32+
}
33+
34+
TEST_F(CmdUtilsTest, PipeOpenInvalidCmd)
35+
{
36+
const auto result {Utils::PipeOpen("invalid_command")};
37+
EXPECT_TRUE(result.empty());
38+
}
39+
40+
TEST_F(CmdUtilsTest, ExecEmptyCmd)
41+
{
42+
const auto result {Utils::Exec("")};
43+
EXPECT_TRUE(result.StdOut.empty());
44+
EXPECT_FALSE(result.StdErr.empty());
45+
EXPECT_NE(result.ExitCode, 0);
46+
}
47+
48+
TEST_F(CmdUtilsTest, PipeOpenEmptyCmd)
49+
{
50+
const auto result {Utils::PipeOpen("")};
51+
EXPECT_TRUE(result.empty());
1952
}
20-
#endif

src/common/cmdHelper/tests/cmdHelper_test.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,4 @@ class CmdUtilsTest : public ::testing::Test
77
protected:
88
CmdUtilsTest() = default;
99
virtual ~CmdUtilsTest() = default;
10-
11-
void SetUp() override;
12-
void TearDown() override;
1310
};

0 commit comments

Comments
 (0)