Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 3.05 KB

TestsConfig.md

File metadata and controls

32 lines (27 loc) · 3.05 KB

Конфигурирование тестов

...происходит посредством правки файла tests.please. Каждая строчка в этом файле описывает очередную тест-серию, может быть нескольких видов:

  • echo PARAMS (echo 1 2 3)
  • PATH_TO_GENERATOR PARAMS (generator.cpp 100500, может быть мультигенератором)
  • MASK_OF_TEST_FILE_NAME (tests/test[0-9].?, ручные тесты, задаются с помощью маски python'овского glob)
  • python PYTHON_CODE_STRING ( 'ab' * 10, выражение, вычислимое с помощью python'овского eval()). Можно использовать функции из модуля random: "5\n" + " ".join(map(str, [randint(1,3444) for i in range(5)])

Также возможны теги вначале каждой строки в квадратных скобках, например [tag1, tag2=132, tag3=cat, tag4]. Теги нужны, чтобы генерировать конкретные виды тестов посредством команды please generate tests with tag[s] TAGS_LIST.

Hint! Тег sample означает, что данный тест будет включён в условия при их составлении.

Комментарий оформляется как # comment ([sample] generator.cpp 17 # type your comment here)

Мультигенераторы

Если генератор пишет в файлы, то эти файлы считаются тестами. Маски отбираемых файлов можно задать в тегах при помощи ключевых слов mask и exclude, означающих, соответственно, маски оболочки командной строки включаемых и исключаемых файлов из сгенерированных ([sample, mask = tests/*, exclude = tests/2] mult.cpp). По умолчанию для мультигенераторов включаются все файлы. Если генератор не пишет в файлы, то тестом считается весь вывод в stdout.

Ручные тесты по маске

По умолчанию отбираются все файлы, удовлетворяющие маске, но можно указать тег exclude с маской python'овского re, задающий исключаемые файлы.

Пример

[sample]tests/[1-2] #примеры
tests/[3-4] #тесты tests/3 и tests/4
[sample, exclude = tests/?7] tests/[0-1][0-9] # будут отобраны все файлы tests/00 ... tests/19, кроме файлов tests/07 и tests/17
[sample, mask = *.in] generator_random.cpp 3
[exclude = 1.in] generator_random.cpp 4
generator_random.cpp 17
generator_random.cpp 588
python 'a' * 10 + 'b' * 5 #исполняемая строка
[max_test]generator_max.cpp 123
[max_test]generator_max.cpp 4321