summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-10-11 17:44:50 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-10-11 17:44:59 +0200
commit242b5547a2666b2df9833236c335c1db40d5a85a (patch)
tree8ae220679892ae2d547bb3930f2b9d07c0e920ea
parent17f91360bd93f08fc80100e25f52a39da1289494 (diff)
parentdb54b0fa187e874ae8d02104cb3471cdcd89e9d2 (diff)
downloadphp-git-242b5547a2666b2df9833236c335c1db40d5a85a.tar.gz
Merge branch 'PHP-7.4'
-rw-r--r--.gitignore2
-rw-r--r--azure-pipelines.yml4
-rw-r--r--azure/coverage_job.yml42
-rw-r--r--azure/install.yml10
-rw-r--r--azure/job.yml10
-rw-r--r--build/Makefile.gcov62
6 files changed, 103 insertions, 27 deletions
diff --git a/.gitignore b/.gitignore
index 5b262b4a89..c8106a0637 100644
--- a/.gitignore
+++ b/.gitignore
@@ -258,6 +258,8 @@ tmp-php.ini
# ------------------------------------------------------------------------------
*.gcda
*.gcno
+/gcovr.xml
+/gcovr_html/
/lcov_html/
/php_lcov.info
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 586edf72e8..7b36b7da4c 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -82,3 +82,7 @@ jobs:
--enable-debug --enable-zts
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
LDFLAGS='-fsanitize=undefined,address'
+ - template: azure/coverage_job.yml
+ parameters:
+ configurationName: COVERAGE_DEBUG_ZTS
+ configurationParameters: '--enable-debug --disable-zts'
diff --git a/azure/coverage_job.yml b/azure/coverage_job.yml
new file mode 100644
index 0000000000..217b5d664a
--- /dev/null
+++ b/azure/coverage_job.yml
@@ -0,0 +1,42 @@
+parameters:
+ configurationName: ''
+ configurationParameters: ''
+ runTestsParameters: ''
+ timeoutInMinutes: 60
+
+jobs:
+ - job: ${{ parameters.configurationName }}
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - template: apt.yml
+ - script: |
+ sudo -H pip install gcovr
+ displayName: 'Install gcovr'
+ - template: configure.yml
+ parameters:
+ configurationParameters: --enable-gcov ${{ parameters.configurationParameters }}
+ - script: make -j$(/usr/bin/nproc) >/dev/null
+ displayName: 'Make Build'
+ - template: install.yml
+ - script: |
+ mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
+ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
+ sudo -u postgres psql -c "CREATE DATABASE test;"
+ displayName: 'Setup'
+ - template: test.yml
+ parameters:
+ configurationName: ${{ parameters.configurationName }}
+ runTestsParameters: ${{ parameters.runTestsParameters }}
+ - script: |
+ make gcovr-xml
+ mv gcovr.xml coverage.xml
+ displayName: 'Generate ${{ parameters.configurationName }} Test Coverage'
+ condition: or(succeeded(), failed())
+ - task: PublishCodeCoverageResults@1
+ inputs:
+ codeCoverageTool: 'Cobertura'
+ summaryFileLocation: coverage.xml
+ displayName: 'Publish ${{ parameters.configurationName }} Test Coverage'
+ condition: or(succeeded(), failed())
diff --git a/azure/install.yml b/azure/install.yml
new file mode 100644
index 0000000000..7f5bf4b68f
--- /dev/null
+++ b/azure/install.yml
@@ -0,0 +1,10 @@
+steps:
+ - script: |
+ sudo make install
+ sudo mkdir /etc/php.d
+ sudo chmod 777 /etc/php.d
+ echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
+ echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
+ echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
+ echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
+ displayName: 'Install Build'
diff --git a/azure/job.yml b/azure/job.yml
index 7e8d42013c..72a36da8ce 100644
--- a/azure/job.yml
+++ b/azure/job.yml
@@ -16,15 +16,7 @@ jobs:
configurationParameters: ${{ parameters.configurationParameters }}
- script: make -j$(/usr/bin/nproc) >/dev/null
displayName: 'Make Build'
- - script: |
- sudo make install
- sudo mkdir /etc/php.d
- sudo chmod 777 /etc/php.d
- echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
- echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
- echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
- echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
- displayName: 'Install Build'
+ - template: install.yml
- script: |
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
diff --git a/build/Makefile.gcov b/build/Makefile.gcov
index 944739aff3..a206523061 100644
--- a/build/Makefile.gcov
+++ b/build/Makefile.gcov
@@ -1,34 +1,43 @@
#
-# LCOV
+# GCOV
#
LTP = lcov
LTP_GENHTML = genhtml
-lcov: lcov-html
+LCOV_EXCLUDES = \
+ '$(top_srcdir)/ext/bcmath/libbcmath/*' \
+ '$(top_srcdir)/ext/date/lib/*' \
+ '$(top_srcdir)/ext/fileinfo/libmagic/*' \
+ '$(top_srcdir)/ext/gd/libgd/*' \
+ '$(top_srcdir)/ext/hash/sha3/*' \
+ '$(top_srcdir)/ext/mbstring/libmbfl/*' \
+ '$(top_srcdir)/ext/opcache/jit/libudis86/*' \
+ '$(top_srcdir)/ext/pcre/pcre2lib/*' \
+ '$(top_srcdir)/ext/xmlrpc/libxmlrpc/*'
+
+GCOVR_EXCLUDES = \
+ 'ext/bcmath/libbcmath/.*' \
+ 'ext/date/lib/.*' \
+ 'ext/fileinfo/libmagic/.*' \
+ 'ext/gd/libgd/.*' \
+ 'ext/hash/sha3/.*' \
+ 'ext/mbstring/libmbfl/.*' \
+ 'ext/opcache/jit/libudis86/.*' \
+ 'ext/pcre/pcre2lib/.*' \
+ 'ext/xmlrpc/libxmlrpc/.*'
-lcov-test: lcov-clean-data test
+lcov: lcov-html
-php_lcov.info: lcov-test
+php_lcov.info:
@echo "Generating lcov data for $@"
- @$(LTP) --capture --no-external --directory . --output-file $@
+ $(LTP) --capture --no-external --directory . --output-file $@
@echo "Stripping bundled libraries from $@"
- @$(LTP) --remove $@ \
- '*/<stdout>' \
- '$(top_srcdir)/ext/bcmath/libbcmath/*' \
- '$(top_srcdir)/ext/date/lib/*' \
- '$(top_srcdir)/ext/fileinfo/libmagic/*' \
- '$(top_srcdir)/ext/gd/libgd/*' \
- '$(top_srcdir)/ext/hash/sha3/*' \
- '$(top_srcdir)/ext/mbstring/libmbfl/*' \
- '$(top_srcdir)/ext/opcache/jit/libudis86/*' \
- '$(top_srcdir)/ext/pcre/pcre2lib/*' \
- '$(top_srcdir)/ext/xmlrpc/libxmlrpc/*' \
- --output-file $@
+ $(LTP) --output-file $@ --remove $@ '*/<stdout>' $(LCOV_EXCLUDES)
lcov-html: php_lcov.info
@echo "Generating lcov HTML"
- @$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info
+ $(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info
lcov-clean:
rm -f php_lcov.info
@@ -36,3 +45,20 @@ lcov-clean:
lcov-clean-data:
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
+
+gcovr-html:
+ @echo "Generating gcovr HTML"
+ @rm -rf gcovr_html/
+ @mkdir gcovr_html
+ gcovr -sr . -o gcovr_html/index.html --html --html-details \
+ --exclude-directories 'ext/date/lib$$' \
+ $(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))
+
+gcovr-xml:
+ @echo "Generating gcovr XML"
+ @rm -f gcovr.xml
+ gcovr -sr . -o gcovr.xml --xml \
+ --exclude-directories 'ext/date/lib$$' \
+ $(foreach lib, $(GCOVR_EXCLUDES), -e $(lib))
+
+.PHONY: gcovr-html lcov-html php_lcov.info