blob: 400d2f9e79b094e094f848c91745bc98da52d504 [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/util/run_command.h"
Brian Silvermanaf784862014-05-13 08:14:55 -07002#include "gtest/gtest.h"
Kai Tinkessbf1385d2020-01-18 14:18:49 -08003#include <thread>
Brian Silverman653491d2014-05-13 16:53:29 -07004
Brian Silvermanaf784862014-05-13 08:14:55 -07005namespace aos {
6namespace util {
7namespace testing {
8
9TEST(RunCommandTest, True) {
10 int result = RunCommand("true");
11 ASSERT_NE(-1, result);
12 ASSERT_TRUE(WIFEXITED(result));
13 EXPECT_EQ(0, WEXITSTATUS(result));
14}
15
16TEST(RunCommandTest, False) {
17 int result = RunCommand("false");
18 ASSERT_NE(-1, result);
19 ASSERT_TRUE(WIFEXITED(result));
20 EXPECT_EQ(1, WEXITSTATUS(result));
21}
22
23TEST(RunCommandTest, CommandNotFound) {
24 int result = RunCommand("ajflkjasdlfa");
25 ASSERT_NE(-1, result);
26 ASSERT_TRUE(WIFEXITED(result));
27 EXPECT_EQ(127, WEXITSTATUS(result));
28}
29
30TEST(RunCommandTest, KilledBySignal) {
31 int result = RunCommand("kill -QUIT $$");
32 ASSERT_NE(-1, result);
33 ASSERT_TRUE(WIFSIGNALED(result));
34 EXPECT_EQ(SIGQUIT, WTERMSIG(result));
35}
36
Brian Silverman653491d2014-05-13 16:53:29 -070037TEST(RunCommandTest, MultipleThreads) {
38 int result1, result2;
Kai Tinkessbf1385d2020-01-18 14:18:49 -080039 std::thread t1([&result1]() {
Brian Silverman653491d2014-05-13 16:53:29 -070040 result1 = RunCommand("true");
41 });
Kai Tinkessbf1385d2020-01-18 14:18:49 -080042 std::thread t2([&result2]() {
Brian Silverman653491d2014-05-13 16:53:29 -070043 result2 = RunCommand("true");
44 });
Kai Tinkessbf1385d2020-01-18 14:18:49 -080045 t1.join();
46 t2.join();
Brian Silverman653491d2014-05-13 16:53:29 -070047 ASSERT_NE(-1, result1);
48 ASSERT_NE(-1, result2);
49 ASSERT_TRUE(WIFEXITED(result1));
50 ASSERT_TRUE(WIFEXITED(result2));
51 EXPECT_EQ(0, WEXITSTATUS(result1));
52 EXPECT_EQ(0, WEXITSTATUS(result2));
53}
54
Brian Silvermanaf784862014-05-13 08:14:55 -070055} // namespace testing
56} // namespace util
57} // namespace aos