diff --git a/.gitignore b/.gitignore index 7579f74311..2bd1c9943b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +.build/ vendor composer.lock diff --git a/.travis.yml b/.travis.yml index 04b153eec1..45caf043e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,16 +2,18 @@ language: php dist: precise -php: - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 - - 7.1 - - 7.2 - - 7.3 - - nightly +jobs: + include: + - php: 5.3 + - php: 5.4 + - php: 5.5 + - php: 5.6 + - php: 7.0 + - php: 7.1 + - php: 7.2 + - php: 7.3 + env: WITH_COVERAGE=true + - php: nightly matrix: allow_failures: @@ -22,9 +24,16 @@ cache: - $HOME/.composer/cache before_install: - - phpenv config-rm xdebug.ini || true + - source .travis/xdebug.sh + - xdebug-disable before_script: - - travis_retry composer install --no-interaction --prefer-dist + - travis_retry composer install --no-interaction --prefer-dist -script: make sniff test +script: + - make sniff + - if [[ "$WITH_COVERAGE" == "true" ]]; then xdebug-enable; fi + - if [[ "$WITH_COVERAGE" == "true" ]]; then make coverage; else make test; fi + +after_success: + - if [[ "$WITH_COVERAGE" == "true" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/.travis/xdebug.sh b/.travis/xdebug.sh new file mode 100644 index 0000000000..c3cebe3c66 --- /dev/null +++ b/.travis/xdebug.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# The problem is that we do not want to remove the configuration file, just disable it for a few tasks, then enable it +# +# For reference, see +# +# - https://docs.travis-ci.com/user/languages/php#Disabling-preinstalled-PHP-extensions +# - https://docs.travis-ci.com/user/languages/php#Custom-PHP-configuration + +config="/home/travis/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini" + +function xdebug-disable() { + if [[ -f $config ]]; then + mv $config "$config.bak" + fi +} + +function xdebug-enable() { + if [[ -f "$config.bak" ]]; then + mv "$config.bak" $config + fi +} diff --git a/Makefile b/Makefile index 6f82996888..478801e94f 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,13 @@ -.PHONY: build fix help sniff test +.PHONY: build coverage fix help sniff test help: @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' build: fix test ## Runs fix and test targets +coverage: vendor/autoload.php ## Collects coverage with phpunit + vendor/bin/phpunit --coverage-text --coverage-clover=.build/logs/clover.xml + fix: vendor/autoload.php ## Fixes code style issues with phpcbf vendor/bin/phpcbf --standard=PSR2 src diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 722b046b34..2a7832a37d 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -13,4 +13,10 @@ ./test/Faker/ + + + + src/ + + diff --git a/readme.md b/readme.md index 6bca447752..1c0659ce85 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ # Faker +[![Code Coverage](https://codecov.io/gh/fzaninotto/Faker/branch/master/graph/badge.svg)](https://codecov.io/gh/fzaninotto/Faker) + Faker is a PHP library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you. Faker is heavily inspired by Perl's [Data::Faker](http://search.cpan.org/~jasonk/Data-Faker-0.07/), and by ruby's [Faker](https://rubygems.org/gems/faker).