s21_tetris/materials/instructions_for_testing_rus.md
2024-02-22 10:34:16 +00:00

5.4 KiB
Raw Blame History

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

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

  • Стилевые тесты. Чтобы проверить, насколько красота вашего кода соответствует стандартам, вы можете протестировать ваш код с помощью утилиты clang-format. В папке materials/linters лежит файл .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 14.0.5
    Linux 13.0.1

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

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

    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. Скрипт обернет ваше решение в докер и запустит его вместе с типовым сценарием сборки.