Как автоматизировать локальные тесты с различными версиями зависимостей (используя composer)?

У меня есть приложение, которое должно работать с определенным пакетом в различных версиях.
Я хотел бы автоматически запускать локальные тесты для разных версий пакета.

Как это сделать?

Я могу думать о ручном способе:

  • изменить composer.json
  • бежать composer update
  • запустить тесты
  • повторить с другой версией

Обновить:

Как уже упоминалось Вот, Я могу просто вытащить другую версию поверх существующего composer.json:

  • composer require vendor/package:$(MY_PACKAGE_VERSION)
  • запустить тесты
  • вытащить другую версию

Но нужно быть осторожным, потому что вы работаете с рабочей копией приложения. Как об-иван предложил клонировать приложение в другом месте, вытащить новую версию и выполнить там тесты.

2

Решение

Вдохновленный этим вопросом, я разработал утилиту только для этой цели.

Представляем ДиверсиТест: https://github.com/ob-ivan/diversitest

Его основное преимущество перед запуском тестов на CI-сервере заключается в том, что он позволяет вам тестировать текущую работу перед фиксацией или даже перед написанием кода — например, если вы не хотите делать явный коммит после создания красного тесты в вашем процессе TTD.

Как пользоваться

Установить с помощью composer require ob-ivan/diversitest

Добавьте файл конфигурации следующим образом:

# diversitest.yaml
package_manager: 'composer require $package $version'
test_runner: 'vendor/bin/phpunit'
packages:
illuminate/support:
- 5.4.*
- 5.5.*

И запустить с:

vendor/bin/diversitest

При этом ваш рабочий каталог копируется во временную папку и включается в установку версий зависимостей и выполнение тестов с помощью команд, предоставляемых config.

Обратите внимание, что если вы перечислите несколько пакетов, каждый со списком версий, он будет проходить через декартово произведение всех поставляемых package:version пар.

Утилита все еще находится в стадии разработки, запросы на новые функции и сообщения об ошибках приветствуются на странице проблем GitHub.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector