mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Azure: Publish code coverage results
* Add an Azure Publish Code Coverage Results task * Add `make gcovr-html` to generate a gcovr test coverage report in HTML * Add `make gcovr-xml` to generate a gcovr test coverage report in XML * Remove `test` target dependency from `make lcov-html`; Run the two targets together instead: `make test lcov-html`. Re: https://github.com/php/php-src/pull/4739#issuecomment-534911441 See: https://externals.io/message/107113, https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=azure-devops, and https://github.com/php/php-src/pull/4759.
This commit is contained in:
parent
aa10e20830
commit
db54b0fa18
6 changed files with 103 additions and 27 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -249,6 +249,8 @@ tmp-php.ini
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
*.gcda
|
*.gcda
|
||||||
*.gcno
|
*.gcno
|
||||||
|
/gcovr.xml
|
||||||
|
/gcovr_html/
|
||||||
/lcov_html/
|
/lcov_html/
|
||||||
/php_lcov.info
|
/php_lcov.info
|
||||||
|
|
||||||
|
|
|
@ -82,3 +82,7 @@ jobs:
|
||||||
--enable-debug --enable-maintainer-zts
|
--enable-debug --enable-maintainer-zts
|
||||||
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
|
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
|
||||||
LDFLAGS='-fsanitize=undefined,address'
|
LDFLAGS='-fsanitize=undefined,address'
|
||||||
|
- template: azure/coverage_job.yml
|
||||||
|
parameters:
|
||||||
|
configurationName: COVERAGE_DEBUG_ZTS
|
||||||
|
configurationParameters: '--enable-debug --disable-maintainer-zts'
|
||||||
|
|
42
azure/coverage_job.yml
Normal file
42
azure/coverage_job.yml
Normal file
|
@ -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())
|
10
azure/install.yml
Normal file
10
azure/install.yml
Normal file
|
@ -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'
|
|
@ -16,15 +16,7 @@ jobs:
|
||||||
configurationParameters: ${{ parameters.configurationParameters }}
|
configurationParameters: ${{ parameters.configurationParameters }}
|
||||||
- script: make -j$(/usr/bin/nproc) >/dev/null
|
- script: make -j$(/usr/bin/nproc) >/dev/null
|
||||||
displayName: 'Make Build'
|
displayName: 'Make Build'
|
||||||
- script: |
|
- template: install.yml
|
||||||
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'
|
|
||||||
- script: |
|
- script: |
|
||||||
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
|
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 "ALTER USER postgres PASSWORD 'postgres';"
|
||||||
|
|
|
@ -1,34 +1,43 @@
|
||||||
#
|
#
|
||||||
# LCOV
|
# GCOV
|
||||||
#
|
#
|
||||||
|
|
||||||
LTP = lcov
|
LTP = lcov
|
||||||
LTP_GENHTML = genhtml
|
LTP_GENHTML = genhtml
|
||||||
|
|
||||||
|
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: lcov-html
|
lcov: lcov-html
|
||||||
|
|
||||||
lcov-test: lcov-clean-data test
|
php_lcov.info:
|
||||||
|
|
||||||
php_lcov.info: lcov-test
|
|
||||||
@echo "Generating lcov data for $@"
|
@echo "Generating lcov data for $@"
|
||||||
@$(LTP) --capture --no-external --directory . --output-file $@
|
$(LTP) --capture --no-external --directory . --output-file $@
|
||||||
@echo "Stripping bundled libraries from $@"
|
@echo "Stripping bundled libraries from $@"
|
||||||
@$(LTP) --remove $@ \
|
$(LTP) --output-file $@ --remove $@ '*/<stdout>' $(LCOV_EXCLUDES)
|
||||||
'*/<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 $@
|
|
||||||
|
|
||||||
lcov-html: php_lcov.info
|
lcov-html: php_lcov.info
|
||||||
@echo "Generating lcov HTML"
|
@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:
|
lcov-clean:
|
||||||
rm -f php_lcov.info
|
rm -f php_lcov.info
|
||||||
|
@ -36,3 +45,20 @@ lcov-clean:
|
||||||
|
|
||||||
lcov-clean-data:
|
lcov-clean-data:
|
||||||
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
|
@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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue