Тестирование HeaderDoc
Начинаясь в версии 8.7, HeaderDoc включает комплект регрессионного теста, упрощающий изменять код синтаксического анализатора, не вызывая регрессии. В этой главе описываются, как использовать набор тестов.
Получение HeaderDoc Tarball
Начинаясь в HeaderDoc 8.8, набор тестов установлен как часть установки HeaderDoc. Таким образом можно выполнить набор тестов, не загружая источник tarball. Однако главная причина выполнить его состоит в том при изменении исходного кода когда намного проще работать с автономной копией HeaderDoc.
Можно загрузить HeaderDoc tarball с www.opensource.apple.com. Щелкните по последней версии OS X на той странице, затем ищите headerdoc на получающейся странице и щелчке ссылка на загрузку вправо.
Запущение тестов
Можно запустить тесты двумя способами: одновременно или индивидуально.
Для выполнения всех тестов сразу введите следующие команды:
# From an installed copy:
headerdoc2html -T run
# From a standalone copy:
cd /path/to/headerdoc-version
./headerDoc2HTML.pl -T run
HeaderDoc выполняет полную батарею тестов и производит сводку результатов в конце.
Для запущения единственного теста или группы тестов укажите их путь или пути после
runподкоманда. Например:# From an installed copy
headerdoc2html -T run /path/to/Xcode.app/Contents/Developer/usr/share/headerdoc/testsuite/parser_tests/PHP_function_1.test
# From a standalone copy:
./headerDoc2HTML.pl -T run testsuite/parser_tests/PHP_function_1.test
Обработка тестовых отказов
При использовании run подкоманда, Вы получаете только сводный вывод, говорящий, что привел к сбою тест. Обнаружение точно, что пошло не так, как надо, может быть более сложным. Вот основные шаги:
Используйте
updateподкоманда, как будто Вы пытались обновить результаты испытаний (headerDoc2HTML.pl -T update[дополнительный список тестов]). Когда тест перестал работать, HeaderDoc выводит на экран различия в результате испытаний.Ввести
lessи нажмите возврат для получения контекстной разности некоторых более многословных разделов результата.Если Вы видите, что изменение ожидается (если Вы внесли изменение в код, и новые результаты отражают желаемое изменение), ввести
confirmобновить результаты испытаний с новыми данными.Если результаты испытаний не как ожидалось, ввести
skipпродолжаться к следующему тесту, не обновляя результаты испытаний.
Создание теста
Создание теста несколько более включается, чем выполнение того. Для создания теста у Вас должны быть проблематичный блок комментария HeaderDoc и объявление. После того, как Вы имеете их, выполняете следующие шаги:
Создайте минимальный заголовок тестового сценария или сценарий, содержащий только объявление, вызывающее проблему (и класс, окружающий его, если применимо).
Переименуйте все классы, функции, переменные, и т.д. для имения имени, которое уникально через весь набор тестов.
Исправьте ошибки в HeaderDoc так, чтобы код был проанализирован правильно.
Запустите существующие тесты, чтобы удостовериться, что Вы не повреждали ничто больше.
Ввести
headerDoc2HTML.pl -T createсоздать новый тест.Выберите уникальное имя для теста. Имя для теста должно быть уникальным после пробелов, и специальные символы заменяются подчеркиваниями. Для списка существующих тестов посмотрите в подкаталогах в
testsuiteкаталог.В целом имена тестов на языках кроме C или C++ должны начаться с имени языка программирования.
Выберите язык программирования для теста. (Это должно соответствовать объявление.)
Если Вы создаете тест языка C, выбираете, создаете ли Вы тест препроцессора C или тест синтаксического анализатора.
Тесты синтаксического анализатора предназначаются для тестирования обоих синтаксический анализатор кода и комментарий, обрабатывающий код. Большую часть времени необходимо писать тест синтаксического анализатора. Тесты синтаксического анализатора ограничиваются единственным объявлением на тест, однако, и таким образом неподходящие для определения, изменяет ли директива препроцессору C правильно объявление.
C тесты препроцессора предназначаются, чтобы протестировать, изменяет ли макрос препроцессора C правильно объявление. В отличие от теста синтаксического анализатора, тест препроцессора C не тестирует комментарий, обрабатывающий код. Требуется два блока кода. Первый блок является серией макросов препроцессора C, которые все анализируются. Вторым является объявление для работы на. Это объявление анализируется, и информация о том объявлении хранится в результатах испытаний.
С этого момента шаги отличаются на основе типа теста, который Вы выбираете.
Создание теста синтаксического анализатора
Для создания теста синтаксического анализатора, после завершения шагов в Создании Теста, делают следующее:
Вставьте блок комментария HeaderDoc, затем контроль-за-прессой-D на новой строке для окончания комментария.
Вставьте код, затем контроль-за-прессой-D на новой строке для окончания объявления.
Введите в объяснительном сообщении, чтобы описать, как тестовый сценарий отличается от других подобных тестов, затем контроль-за-прессой-D на новой строке для окончания сообщения.
При перезаписи существующего тестового сценария HeaderDoc просит, чтобы Вы подтвердили, что намеревались сделать так. В целом скажите не, если Вы не сделали ошибку ранее и перезаписываете тест, Вы просто создали.
Ожидайте HeaderDoc для создания данных тестирования.
Представьте тестовый сценарий и патчи через bugreport.apple.com.
Создание теста препроцессора C
C тесты макроса препроцессора применяют серию макросов препроцессора C к объявлению (который может быть чем-либо от макроса препроцессора C до класса).
Для создания теста препроцессора C завершите шаги в Создании Теста, затем сделайте следующее:
Вставьте блок макросов препроцессора C, затем контроль-за-прессой-D на новой строке для окончания списка макросов.
Вставьте объявление, что макросы препроцессора C должны изменить, затем контроль-за-прессой-D на новой строке для окончания объявления.
Введите объяснительное сообщение, чтобы описать, как тестовый сценарий отличается от других подобных тестов, затем контроль-за-прессой-D на новой строке для окончания сообщения.
При перезаписи существующего тестового сценария HeaderDoc просит, чтобы Вы подтвердили, что намеревались сделать так. В целом скажите не, если Вы не сделали ошибку ранее и перезаписываете тест, Вы просто создали.
Ожидайте HeaderDoc для создания данных тестирования.
Представьте тестовый сценарий и патчи через bugreport.apple.com.