SourceForge.net Logo
prevtopnext
Система тестирования izh_test
    Виды тестов
        Терминальные тесты
exec_check_directory - Тест для консольной программы, изменяющей файлы

Этот тест предназначен для тестирования программ, которые помимо того что выводят что-то на стандартный поток вывода, меняют ещё какие то файлы в той директории, в которой они запускаются.

Для таких программ используется следующий подход:

  1. Готовится специальная директория "t" с тестовым содержимым директории до работы тестовой программы.
  2. Готовится специальная директория "e" с эталонным содержимым директории после работы тестовой программы.
  3. При выполнении теста, система копирует содержимое директории "t" в директорию "r" и запускает тестируемую программу в этой директории ("r").
  4. По завершении работы программы система сравнивает содержимое директории "r" с содержимым директории "e".
  5. Как и в случае обычного exec_check проверяется также стандартный вывод программы.

Полное описание теста выглядит как:
<exec_check_directory>
  <spec>
    <sname>short_name_of_test</sname>
    <fname>full name of test</fname>
    <descr>description of test</descr>
  </spec>  
  <cmd>command line for test</cmd>
  <out>test result base path</out>
  <in>name of file to send to input</in>
  <input>text to send to input</input>
  <res>test return code to compare with</res>
  <path>test path</path>
  <main>test main result file</main>
</exec_check_directory>
здесь
cmd

Командная строка для запуска теста.

Результат запуска этой командной строки будет сравниваться с эталонным.

Система запускает тест, не добавляя к этой строке ничего (только заменяя переменные) из поддиректории "r" директории указанной в параметре "path" в которую перед этим копируется содержимое поддиректории "t" директории указанной в параметре "path".

out

Базовое название файла, в котором будет сохраняться результат теста.

По умолчанию - output.txt

Предполагается, что имеет расширение.

Если файл имеет вид [имя_файла].[последнее_расширение] то

  • имя файла-результата строится как [имя_файла].result.[последнее_расширение],
  • имя файла-эталона как [имя_файла].etalon.[последнее_расширение],
  • имя файла-разницы как [имя_файла].diff.

При использовании к имени файла автоматически добавляется путь к файлу, в котором лежит описание теста и путь, заданный в параметре "path", так что %test_dir% использовать не надо.

in

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

Если поля in и input (смотри далее) пустые, то на стандартный вход программы ничего не подаётся.

При использовании к имени файла автоматически добавляется путь к файлу в котором лежит описание теста и путь заданный в параметре path, так что %test_dir% использовать не надо.

input

Текст, который будет подаваться на вход тестируемой программы.

Имеет смысл только если поле in (смотри предыдущее описание) пустое.

В случае если это не так (в поле in задано имя файла с входными данными), на вход будет подаваться всё-таки содержимое файла, а содержимое поля input будет просто проигнорировано.

Если поля in и input (смотри выше) пустые, то на стандартный вход программы ничего не подаётся.

res

Ожидаемый код возврата программы.

По умолчанию - 0.

В случае если тестируемая программа возвращает другой код, выдаётся предупреждение.

path

Путь до тестовой директории, в которой содержатся директории с эталонными данными "до запуска" ("t") и "после запуска" ("e").

Задаётся относительно директории, в которой лежит файл с описанием теста.

main

Используется в основном для gui-тестов

Указывает, какой из файлов в директории после теста самый главный (соответственно какой файл первым показывать для сравнения)

Это удобно, например, в некоторых случаях при тестировании отчётов, которые выдаются не на стандартный поток вывода, а в какой то файл рядом в директории.

Задаётся относительно директории, из которой запускается команда.

Спецификатор spec стандартный для всех тестов:
spec Идентификационная информация о тесте (имена, описание)
sname Короткое название теста. Используется для вывода в ГУИ-среде и для указания пути к тесту в консольном варианте . Без перевода строк. Желательно покороче, и без пробелов.
fname Полное название теста. Используется для вывода в консольном варианте системы . Без перевода строк. Предполагается, что должно поместиться в одну строку/экран. То есть желательно уложиться до 60 символов.
descr Полное описание текста. Вот здесь можно писать что угодно, любой длинны и с любыми переводами каретки. В консольном и ГУИ варианте это описание можно посмотреть только специальной командой.

prevtopnext

SourceForge.net Logo