Использование Google Unit Test с собственной оболочкой - PullRequest
0 голосов
/ 21 ноября 2018

По сути, я создал оболочку и хочу использовать модульный тест 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...