Как ни странно, звучит так, будто вы ищете что-то вроде моего claft
(тестер командной строки и фильтра). Нечто подобное, но гораздо более зрелое.
claft
(пока) просто игрушка, которую я написал, чтобы помочь студентам с упражнениями по программированию. Идея состоит в том, чтобы предоставить упражнениям простые файлы конфигурации, которые представляют требования программы в терминах, которые являются достаточно понятными для человека (и декларативными, а не программными), а также пригодными для автоматического тестирования.
claft
выполняет все определенные тесты, предоставляя аргументы и входные данные для каждого, проверяя коды возврата и сопоставляя выходные данные (stdout
) и сообщения об ошибках (stderr
) с шаблонами регулярных выражений. Он собирает все ошибки в списке и печатает весь список в конце каждого набора.
Это НЕ делает произвольные диалоги последовательностей ввода / вывода. Пока он просто передает данные, затем считывает все данные / ошибки. Он также не реализует таймауты и даже не фиксирует неудачные попытки выполнения. (Я ведь говорил, что это просто игрушка, не так ли?). Я также еще не реализовал поддержку сценариев Setup, Teardown и External Check (хотя у меня есть планы сделать это).
Предложение Брайана о «каркасе робота» может быть лучше для ваших нужд; хотя быстрый взгляд на это говорит о том, что он значительно более вовлечен, чем я хочу для своих целей. (Мне нужно, чтобы все было достаточно просто, чтобы новички в программировании могли сосредоточиться на своих упражнениях и не тратить много времени на борьбу с настройкой своего жгута).
Вы можете посмотреть на claft
и использовать его или получить свое собственное решение (оно лицензировано BSD). Очевидно, вы можете внести свой вклад обратно. (Он находится на [bitbucket]: (http://www.bitbucket.org/), поэтому вы можете использовать Mercurial для клонирования, разветвления собственного репозитория ... и отправить "запрос на извлечение", если вы когда-нибудь захотите, чтобы я посмотрел на объединение ваших изменений в мой репо).
Опять же, возможно, я неправильно понимаю ваш вопрос.