Автоматическое тестирование Ваших github-репозиториев

Данная статья будет полезна, как и тем, кто только начинает осваивать тестирование своего кода, так и тем, кто использует тесты в подседневной работе. Сегодня мы научимся автоматизировать этот процесс используя сервис Travis CI.

Покрытие кода тестами - это безусловно хорошо, но как показывает практика, на их запуск тратится довольно много времени, а иногда они вообще не запускаются, хотя должны и т.д.
Для устранения этих недочетов существует методология Непрерывной интеграции (CI - Continuous Integration)...

и все, что нам осталось, это собственно разобраться как бы все это дело развернуть и подешевле. Для этого нам понадобится два инструмента:

Travis-CI отлично интегрирован с Github, достаточно лишь авторизоваться вашим github аккаунтом.

Итак вы готовы. Приступим:

Примером файла настроек может послужить эта ссылка.

  1. Загрузите ваш код с тестами на github. Для тестов подойдут встроенные в хакс haxe.unit, utest, buddy, munit и другие (хотя с другими могут быть и проблемы, но это тема отдельной статьи).

  2. Открываете профиль в travis и активируете хуки для вашего репозитория. Для этого необходимо “поставить галочку” напротив нужного репозитория (ниже для bindx2 включен)

  3. Рядом с “галочкой” есть кнопка с ключиком, по клику на которую откроются дополнительные настройки. Их не много, но я обычно активирую первую опцию “Build only if .travis.yml is present”. Ниже, есть опция, для сборки всех Pull Request-ов, что тоже очень полезно для активно разрабатываемых библиотек.

  4. Для интеграции travis-ci с нашим хакс кодом мы воспользуемся готовым решением travis-hx. Он отлично документирован, но даже в нем есть пара нюансов.  Главное, что он из коробки работает на linux и osx и позволяет тестировать все возможные таргеты хакса (более 10). Ознакомтесь с документацией по ссылке и переходите к файлу, который надо скопировать себе в репозиторий, под именем “.travis.yml”. Но не спешите коммитить его!

  5. travis.yml почти готов для работы, но надо изменить пару строк:

    • Строка 56 (см. ниже) - параметры компилятора, для сборки тестов. Важно указать только общие для всех тестов параметры!

      - HXFLAGS="-cp src -main test.TestAll" ~/travis-hx/build.sh

    • Отлючить не нужные таргеты в разделе env.matrix или добавить нужные команды, в зависимости от ваших потребностей. А документация и гугл вам будут только помогать.
  6. Коммитите фаил .travis.yml и идете на главную travis-ci, где в списке слева появится ваш репозиторий. По клику на который, вы сможете проследить за этапом сборки и запуска тестов, а также просмотреть историю сборок.

  7. На этом все. Travis будет прележно прогонять тесты после каждого коммита и оповещать вас по почте о проделанной работе. Можно еще утащить себе картинку с состоянием билда, что тоже полезно. Ну а в будущем настроить дополнительные интеграции с другими сервисами при необходимости. Результат всех ваших действий, должен быть аналогичен этому.

Конечно travis-ci не пишет за вас тесты, а лишь запускает уже написанные, но он все равно экономит кучу времени и работает совершенно бесплатно для open source проектов.

Но не стоит останавливаться и на этом, travis-ci поддерживает сборку и тестирование только под linux и macos окружением, кроме него есть такие сервисы как https://saucelabs.com/ - позволяющий проверить работу вашего кода в овер 400 комбинация браузеров и ОС, или http://www.appveyor.com/ для сборки и тестирования на windows. Тем более, что travis-hx имеет поддержу всех этих сервисов из коробки!

Отдельная благодарность Сергею Мирянову, SlavaRa и Александру Кузьменко за помощь в написании статьи.

 

Дополнительный материал:

Комментарии

sudo

Если в отчёте travis-ci видите ошибку
sudo: must be setuid root

То в файл .travis.yml на верхнем уровне нужно добавить строку
sudo: required

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
p
e
T
A
5
R
Enter the code without spaces and pay attention to upper/lower case.