У меня есть приложение, которое должно работать с определенным пакетом в различных версиях.
Я хотел бы автоматически запускать локальные тесты для разных версий пакета.
Как это сделать?
Я могу думать о ручном способе:
composer update
Обновить:
Как уже упоминалось Вот, Я могу просто вытащить другую версию поверх существующего composer.json:
composer require vendor/package:$(MY_PACKAGE_VERSION)
Но нужно быть осторожным, потому что вы работаете с рабочей копией приложения. Как об-иван предложил клонировать приложение в другом месте, вытащить новую версию и выполнить там тесты.
Вдохновленный этим вопросом, я разработал утилиту только для этой цели.
Представляем ДиверсиТест: 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.
Других решений пока нет …