2014-09-29 8 views
3

У меня есть следующие разделы require в моей composer.json:композитор игнорирует белый список

"require": { 
    "php": ">=5.4.0" 
}, 
"require-dev": { 
    "phpspec/phpspec": "~2.0", 
    "henrikbjorn/phpspec-code-coverage": "~0.2", 
    "satooshi/php-coveralls": "~0.6" 
}, 

Теперь я хочу использовать Travis-CI, для PHP 5.4 и 5.5, и hhvm. Однако, поскольку hhvm не поддерживает xdebug и, следовательно, не защищает код, мне нужно отключить покрытие кода для сборки hhvm.

Для этого мне нужно исключить установки покрытия кода. Однако, когда я пытаюсь установить только phpspec, работающий composer update phpspec/phpspec, остальные две зависимости также устанавливаются. Как-то Композитор, кажется, игнорирует мой белый список.

Это мой текущий .travis.yml:

language: php 

php: [5.4, 5.5, hhvm] 

install: 
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then composer update ; fi 
    - if [[ $TRAVIS_PHP_VERSION == 'hhvm' ]]; then composer update phpspec/phpspec; fi 

script: 
    - bin/phpspec run --format=pretty 
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then bin/coveralls -v ; fi 

Как я могу достичь своей цели, используя функцию белого списка, или есть другой способ достижения этой цели?


Обратите внимание, что я не хотите установить henrikbjorn/phpspec-code-coverage, ни satooshi/php-coverallsв hhvm Travis построить. I do хотят установить их в сборках PHP 5.4 и 5.5.

ответ

2

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

language: php 
php: 
    - 5.4 
    - 5.5 
    - hhvm 

script: 
    - bin/phpspec run 
    - bash -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then bin/coveralls -v; fi;' 

before_script: 
    - bash -c 'if [ "$TRAVIS_PHP_VERSION" == "hhvm" ]; then composer remove "henrikbjorn/phpspec-code-coverage" --dev --no-update; fi;' 
    - composer install --prefer-source 
+0

Я не знал о команде удаления, но это действительно более естественно. – nhaarman

-1

Try работает

php composer.phar self-update 

php composer.phar update --with-dependencies 

Согласно документации должны ingnore, что находится в белом списке

Если вы хотите обновить или обновить цепь только несколько пакетов, пожалуйста, выполните следующее

php composer.phar update "packagename" "packagename2" 
+0

Спасибо за ваш ответ! Однако это не касается того факта, что я хотел бы _exclude_ пакетов из установки (т. Е. Установить только 'phpspec/phpspec'). – nhaarman

+0

Обновлено Мой ответ –

+0

Я уже пробовал этот метод, он не работал, как указано в моем вопросе. – nhaarman

-1

Пробег

composer update --no-dev

, потому что при запуске композитор обновления он устанавливает все на «требуют-DEV» по умолчанию

+0

Это приведет к тому, что 'phpspec' не будет установлен, что, очевидно, необходимо в сборке Travis. – nhaarman

1

Если вам нужно покрытие кода для работы в другом месте, почему бы не просто изменить .travis.yml требовать покрытия кода с помощью composer require henrikbjorn/phpspec-code-coverage=~0.2:

language: php 

php: [5.4, 5.5, hhvm] 

install: 
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then composer require henrikbjorn/phpspec-code-coverage=~0.2 ; fi 

script: 
    - bin/phpspec run --format=pretty 
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then bin/coveralls -v ; fi 
+0

А, да, это хорошая альтернатива! Дай мне попробовать! – nhaarman

+0

Спасибо, это работает красиво! – nhaarman

Смежные вопросы