По сути, я создал оболочку и хочу использовать модульный тест Google, чтобы проверить, выполняет ли моя оболочка что-то из обычного терминала, и мне интересно, как я могу скопировать вывод моей оболочки в строку и сравнить ее?,Просто я создал буфер, который читает выходные данные обычного терминала, и я не знаю, как использовать буфер для чтения выходных данных моей оболочки.Вот мой код для модульного теста Google
TEST(lsTest, lsT) {
string bash_cmd = "ls";
std::array<char, 128> buffer;
string result;
FILE* pipe = popen(bash_cmd.c_str(),"r");
while(fgets(buffer.data(),128,pipe)!=NULL){
result += buffer.data();
}
Base* start = parse(bash_command);
start->execute(); // this would output the command of my shell
EXPECT_EQ(result,?output of start->execute()?);}
Поскольку execute () является логической функцией, я не могу использовать буфер для преобразования вывода в строку.Есть ли способ прочитать вывод моей оболочки в строку?Кроме того, моя оболочка не содержит перенаправлений >
, >>
, | tee
и т. Д. Она в основном содержит ls
, echo
, mkdir
.