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).