s21_tetris/materials/instructions_for_testing_rus.md
2025-04-23 16:13:20 +00:00

6.8 KiB
Raw Permalink Blame History

Инструкция по запуску тестов

Помимо тестов на корректные выходные данные система автотестирования будет проверять твою программу и ее исходный код по следующим пунктам:

  • Стилевые тесты. Чтобы проверить, насколько красота твоего кода соответствует стандартам, ты можешь протестировать свой код с помощью утилиты clang-format. В папке materials/ лежит файл .clang-format, который содержит необходимые настройки для стилевого теста. Данный конфигурационный файл распространяет свое действие на все файлы, которые лежат с ним в директории или в директориях ниже. Поэтому, чтобы данные настройки применились к твоим файлам с исходным кодом, скопируй .clang-format в папку src.

    Чтобы запустить проверку на стиль, выполни следующую команду:
    clang-format -n src/sourcefile_name.c

    Чтобы скачать clang-format, введи в терминал одну из следующих команд:
    brew install clang-format
    или, если у тебя есть root-права (для Ubuntu / Linux Mint / Debian)
    sudo apt install clang-format

    Необходимая версия clang-format:
    Mac 18.1.8
    Linux 18.1.8

    Google Style: https://google.github.io/styleguide/cppguide.html

  • Статический анализ кода. Иногда (или не совсем иногда) встречается такое, что корректно компилирующаяся C-программа работает совершенно неправильно или завершается с ошибкой попытки доступа не к своей области памяти. Чтобы предотвратить подобные ошибки на этапе написания программы, используют специальные утилиты, которые анализируют ваш исходный код на предмет потенциальных ошибок. Наша система автотестов использует для этого cppcheck.

    Вы можете протестировать ваш исходный код:
    cppcheck --enable=all --std=c11 --check-level=exhaustive --disable=information --suppress=missingIncludeSystem --suppress=missingInclude --suppress=checkersReport src/soursefile_name.c
    Также можно проверить сразу все файлы с исходным кодом в директории:
    cppcheck --enable=all --std=c11 --check-level=exhaustive --disable=information --suppress=missingIncludeSystem --suppress=missingInclude --suppress=checkersReport src

    Необходимая версия cppcheck:
    Mac 2.13
    Linux 2.13

  • Тест на корректную работу с памятью. При написании C-программ очень важно следить за утечками памяти. Для этого в Unix-подобных операционных системах довольно часто используют утилиту valgrind. Однако на OS X имеются проблемы с поддержкой valgrind, поэтому вместо нее можно использовать утилиту leaks. Вдаваться в механизм работы этих утилит мы сейчас не будем — если интересно, можешь почитать в гугле.

    Чтобы запустить свой исполняемый файл с помощью этой утилиты, набери в терминале:
    leaks -atExit -- ./main.out | grep LEAK:

    Обрати внимание на команду | grep LEAK:. Мы используем ее для короткого вывода, чтобы видеть только линии с утечками, если они есть. Если ты хочешь увидеть весь вывод, просто удали эту команду.

    При запуске исполняемого файла с помощью leaks может появиться сообщение об ошибке:

    dyld: could not load inserted library /usr/local/lib/libLeaksAtExit.dylib because image not found

    Ошибка возникает из-за того, что leaks не может найти библиотеку libLeaksAtExit.dylib.
    В этом случае тебе необходимо ввести следующие команды:

    cd /usr/local/lib  
    sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/lib/libLeaksAtExit.dylib
    

    Дополнительно:
    Используй флаг -exclude утилиты leaks для того, чтобы отфильтровать утечки в функциях, где известно об утечках памяти. Этот флаг позволяет уменьшить количество посторонней информации, сообщаемой leaks.

    VALGRIND

    Чтобы установить valgrind на компьютер, введи одну из следующих команд:
    brew install valgrind
    или, если у тебя есть root-права (для Ubuntu / Linux Mint / Debian)
    sudo apt install valgrind
    Чтобы запустить свой исполняемый файл с помощью этой утилиты, набери в терминале:
    valgrind --tool=memcheck --leak-check=yes ./main.out

    Не рекомендуется использовать valgrind на OS X, вместо нее лучше использовать leaks.

  • Тест сборки. Программу можно проверить на корректность сборки на тестовой системе. Для этого потребуется установленный Docker. Если на системе есть докер, то можно зайти в директорию materials/build и запустить оттуда скрипт run.sh. Скрипт обернет твое решение в докер и запустит его вместе с типовым сценарием сборки.