# Инструкция по запуску тестов Помимо тестов на корректные выходные данные система автотестирования будет проверять твою программу и ее исходный код по следующим пунктам: * **Стилевые тесты.** Чтобы проверить, насколько красота твоего кода соответствует стандартам, ты можешь протестировать свой код с помощью утилиты _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-программ очень важно следить за утечками памяти. Для этого в 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_. \ В этом случае тебе необходимо ввести следующие команды: ```sh 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. Скрипт обернет твое решение в докер и запустит его вместе с типовым сценарием сборки.