Как встроить команды gcc и gcov в ожидаемый скрипт - PullRequest
0 голосов
/ 01 ноября 2009

Я хотел встроить команды gcc и gcov как часть ожидаемого сценария ..

Я пробовал как ..

#!/usr/bin/expect -f
send ":gcc -fprofile-arcs -ftest-coverage c.c\r"

send ":gcov c.c\r"

Но он не запускается и не выполняет команды.

Есть какие-нибудь идеи по этому поводу? Спасибо.


У меня проблема в том, что я не уверен, как я могу вставить команду в нужном месте. Все, что я знаю, это данные тесты, приведенные ниже: -

#!/usr/bin/expect -f
spawn $env(SUBJECTS_SRC_DIR)/vim -u $env(HOME)/.vimrc $env(TESTS_SRC)/copy1
expect "copy1"
sleep 1
send ":se lines=24\r"
send ":se columns=80\r"
send ":redir >> move_2.1.1.out\r"
send "$"
send "\007"
send "5h"

send "\007"
send ":redir END\r"

send ":wq\r"
expect
exit -onexit {
interact
}

Он содержится в определенном файле с именем testfile. Как только этот тестовый файл выполняется в скрипте Perl, генерируется вывод.

Что-то вроде ниже:

$IN_DIR/$SCRIPT_FILE;

$outfile = "$OUT_DIR/t$scriptCounter";

Я попытался поместить ожидаемую команду, которую вы предлагали ранее, в отдельный файл с именем и передал новую переменную с именем ... $MY_FILE в $IN_DIR.

А потом я прошел $IN_DIR/$MY_FILE;

но он ничего не делает. Файлы .gcno также не выполняются, поэтому .gcov.

1 Ответ

1 голос
/ 01 ноября 2009

Expect полезно для интерактивных программ, а не для утилит командной строки. Если вы хотите просто выполнить gcc и gcov как часть ожидаемого сценария, сделайте следующее:

exec gcc -fprofile-arcs -ftest-coverage c.c
exec gcov c.c

Кстати, запуск gcov без первого запуска исполняемого файла бесполезен: вам нужно произвести данных покрытия во время выполнения, прежде чем вы сможете их проанализировать.

...