Skip to content

Commit 385d36c

Browse files

File tree

4 files changed

+164
-84
lines changed

4 files changed

+164
-84
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,10 @@ tmp-php.ini
249249
# ------------------------------------------------------------------------------
250250
*.gcda
251251
*.gcno
252+
/gcovr_html/
252253
/lcov_html/
253254
/php_lcov.info
255+
/coverage.xml
254256

255257
# ------------------------------------------------------------------------------
256258
# Archives generated during the PHP release process

azure-pipelines.yml

Lines changed: 69 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -16,69 +16,73 @@ jobs:
1616
parameters:
1717
configurationName: DEBUG_NTS
1818
configurationParameters: '--enable-debug --disable-maintainer-zts'
19-
- template: azure/job.yml
20-
parameters:
21-
configurationName: RELEASE_ZTS
22-
configurationParameters: '--disable-debug --enable-maintainer-zts'
23-
- template: azure/i386/job.yml
19+
# - template: azure/job.yml
20+
# parameters:
21+
# configurationName: RELEASE_ZTS
22+
# configurationParameters: '--disable-debug --enable-maintainer-zts'
23+
- template: azure/coverage_job.yml
2424
parameters:
25-
configurationName: I386_DEBUG_ZTS
26-
configurationParameters: '--enable-debug --enable-maintainer-zts'
27-
- template: azure/macos/job.yml
28-
parameters:
29-
configurationName: MACOS_DEBUG_NTS
30-
configurationParameters: '--enable-debug --disable-maintainer-zts'
31-
- ${{ if eq(variables['Build.Reason'], 'Schedule') }}:
32-
- template: azure/job.yml
33-
parameters:
34-
configurationName: DEBUG_ZTS
35-
configurationParameters: '--enable-debug --enable-maintainer-zts'
36-
- template: azure/job.yml
37-
parameters:
38-
configurationName: RELEASE_NTS
39-
configurationParameters: '--disable-debug --disable-maintainer-zts'
40-
- template: azure/i386/job.yml
41-
parameters:
42-
configurationName: I386_DEBUG_NTS
43-
configurationParameters: '--enable-debug --disable-maintainer-zts'
44-
- template: azure/i386/job.yml
45-
parameters:
46-
configurationName: I386_RELEASE_NTS
47-
configurationParameters: '--disable-debug --disable-maintainer-zts'
48-
- template: azure/i386/job.yml
49-
parameters:
50-
configurationName: I386_RELEASE_ZTS
51-
configurationParameters: '--disable-debug --enable-maintainer-zts'
52-
- template: azure/macos/job.yml
53-
parameters:
54-
configurationName: MACOS_DEBUG_ZTS
55-
configurationParameters: '--enable-debug --enable-maintainer-zts'
56-
- template: azure/macos/job.yml
57-
parameters:
58-
configurationName: MACOS_RELEASE_NTS
59-
configurationParameters: '--disable-debug --disable-maintainer-zts'
60-
- template: azure/macos/job.yml
61-
parameters:
62-
configurationName: MACOS_RELEASE_ZTS
63-
configurationParameters: '--disable-debug --enable-maintainer-zts'
64-
- template: azure/job.yml
65-
parameters:
66-
configurationName: DEBUG_ZTS_ASAN_UBSAN
67-
configurationParameters: >-
68-
--enable-debug --enable-maintainer-zts
69-
CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC'
70-
LDFLAGS='-fsanitize=undefined,address'
71-
runTestsParameters: --asan
72-
timeoutInMinutes: 120
73-
- template: azure/msan_job.yml
74-
parameters:
75-
configurationName: DEBUG_ZTS_MSAN
76-
configurationParameters: '--enable-debug --enable-maintainer-zts'
77-
runTestsParameters: --asan
78-
- template: azure/community_job.yml
79-
parameters:
80-
configurationName: COMMUNITY
81-
configurationParameters: >-
82-
--enable-debug --enable-maintainer-zts
83-
CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
84-
LDFLAGS='-fsanitize=undefined,address'
25+
configurationName: COVERAGE
26+
configurationParameters: '--enable-debug --disable-maintainer-zts --enable-gcov'
27+
# - template: azure/i386/job.yml
28+
# parameters:
29+
# configurationName: I386_DEBUG_ZTS
30+
# configurationParameters: '--enable-debug --enable-maintainer-zts'
31+
# - template: azure/macos/job.yml
32+
# parameters:
33+
# configurationName: MACOS_DEBUG_NTS
34+
# configurationParameters: '--enable-debug --disable-maintainer-zts'
35+
# - ${{ if eq(variables['Build.Reason'], 'Schedule') }}:
36+
# - template: azure/job.yml
37+
# parameters:
38+
# configurationName: DEBUG_ZTS
39+
# configurationParameters: '--enable-debug --enable-maintainer-zts'
40+
# - template: azure/job.yml
41+
# parameters:
42+
# configurationName: RELEASE_NTS
43+
# configurationParameters: '--disable-debug --disable-maintainer-zts'
44+
# - template: azure/i386/job.yml
45+
# parameters:
46+
# configurationName: I386_DEBUG_NTS
47+
# configurationParameters: '--enable-debug --disable-maintainer-zts'
48+
# - template: azure/i386/job.yml
49+
# parameters:
50+
# configurationName: I386_RELEASE_NTS
51+
# configurationParameters: '--disable-debug --disable-maintainer-zts'
52+
# - template: azure/i386/job.yml
53+
# parameters:
54+
# configurationName: I386_RELEASE_ZTS
55+
# configurationParameters: '--disable-debug --enable-maintainer-zts'
56+
# - template: azure/macos/job.yml
57+
# parameters:
58+
# configurationName: MACOS_DEBUG_ZTS
59+
# configurationParameters: '--enable-debug --enable-maintainer-zts'
60+
# - template: azure/macos/job.yml
61+
# parameters:
62+
# configurationName: MACOS_RELEASE_NTS
63+
# configurationParameters: '--disable-debug --disable-maintainer-zts'
64+
# - template: azure/macos/job.yml
65+
# parameters:
66+
# configurationName: MACOS_RELEASE_ZTS
67+
# configurationParameters: '--disable-debug --enable-maintainer-zts'
68+
# - template: azure/job.yml
69+
# parameters:
70+
# configurationName: DEBUG_ZTS_ASAN_UBSAN
71+
# configurationParameters: >-
72+
# --enable-debug --enable-maintainer-zts
73+
# CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC'
74+
# LDFLAGS='-fsanitize=undefined,address'
75+
# runTestsParameters: --asan
76+
# timeoutInMinutes: 120
77+
# - template: azure/msan_job.yml
78+
# parameters:
79+
# configurationName: DEBUG_ZTS_MSAN
80+
# configurationParameters: '--enable-debug --enable-maintainer-zts'
81+
# runTestsParameters: --asan
82+
# - template: azure/community_job.yml
83+
# parameters:
84+
# configurationName: COMMUNITY
85+
# configurationParameters: >-
86+
# --enable-debug --enable-maintainer-zts
87+
# CFLAGS='-fsanitize=undefined,address -fno-sanitize-recover -DZEND_TRACK_ARENA_ALLOC'
88+
# LDFLAGS='-fsanitize=undefined,address'

azure/coverage_job.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
parameters:
2+
configurationName: ''
3+
configurationParameters: ''
4+
runTestsParameters: ''
5+
timeoutInMinutes: 60
6+
7+
jobs:
8+
- job: ${{ parameters.configurationName }}
9+
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
10+
pool:
11+
vmImage: 'ubuntu-latest'
12+
steps:
13+
- template: apt.yml
14+
parameters:
15+
packages: lcov
16+
- script: |
17+
sudo -H pip install gcovr
18+
- template: configure.yml
19+
parameters:
20+
configurationParameters: ${{ parameters.configurationParameters }}
21+
- script: make -j$(/usr/bin/nproc) >/dev/null
22+
displayName: 'Make Build'
23+
- script: |
24+
sudo make install
25+
sudo mkdir /etc/php.d
26+
sudo chmod 777 /etc/php.d
27+
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
28+
echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
29+
echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini
30+
echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
31+
displayName: 'Install Build'
32+
- script: |
33+
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
34+
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
35+
sudo -u postgres psql -c "CREATE DATABASE test;"
36+
displayName: 'Setup'
37+
- template: test.yml
38+
parameters:
39+
configurationName: ${{ parameters.configurationName }}
40+
runTestsParameters: ${{ parameters.runTestsParameters }}
41+
- template: test.yml
42+
parameters:
43+
configurationName: ${{ parameters.configurationName }}
44+
runTestsName: 'OpCache'
45+
runTestsParameters: >-
46+
${{ parameters.runTestsParameters }}
47+
-d zend_extension=opcache.so
48+
- script: |
49+
rm -rf coverage.xml | true
50+
gcovr -sr . -o coverage.xml --xml \
51+
-e '.*/ext/bcmath/libbcmath/.*' \
52+
-e '.*/ext/date/lib/.*' \
53+
-e '.*/ext/fileinfo/libmagic/.*' \
54+
-e '.*/ext/gd/libgd/.*' \
55+
-e '.*/ext/hash/sha3/.*' \
56+
-e '.*/ext/mbstring/libmbfl/.*' \
57+
-e '.*/ext/opcache/jit/libudis86/.*' \
58+
-e '.*/ext/pcre/pcre2lib/.*' \
59+
-e '.*/ext/xmlrpc/libxmlrpc/.*'
60+
displayName: 'Coverage ${{ parameters.configurationName }} ${{ parameters.runTestsName }}'
61+
condition: or(succeeded(), failed())
62+
- task: PublishCodeCoverageResults@1
63+
inputs:
64+
codeCoverageTool: 'Cobertura'
65+
summaryFileLocation: coverage.xml
66+
displayName: 'Export ${{ parameters.configurationName }} ${{ parameters.runTestsName }} Coverage'
67+
condition: or(succeeded(), failed())

build/Makefile.gcov

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
11
#
2-
# LCOV
2+
# GCOV
33
#
44

5-
lcov: lcov-html
5+
GCOV_EXCLUDES = \
6+
'$(top_srcdir)/ext/bcmath/libbcmath/*' \
7+
'$(top_srcdir)/ext/date/lib/*' \
8+
'$(top_srcdir)/ext/fileinfo/libmagic/*' \
9+
'$(top_srcdir)/ext/gd/libgd/*' \
10+
'$(top_srcdir)/ext/hash/sha3/*' \
11+
'$(top_srcdir)/ext/mbstring/libmbfl/*' \
12+
'$(top_srcdir)/ext/opcache/jit/libudis86/*' \
13+
'$(top_srcdir)/ext/pcre/pcre2lib/*' \
14+
'$(top_srcdir)/ext/xmlrpc/libxmlrpc/*'
615

7-
lcov-test: lcov-clean-data test
8-
9-
php_lcov.info: lcov-test
16+
php_lcov.info: test
1017
@echo "Generating lcov data for $@"
11-
@$(LTP) --capture --no-external --directory . --output-file $@
18+
$(LTP) --capture --no-external --directory . --output-file $@
1219
@echo "Stripping bundled libraries from $@"
13-
@$(LTP) --remove $@ \
14-
'*/<stdout>' \
15-
'$(top_srcdir)/ext/bcmath/libbcmath/*' \
16-
'$(top_srcdir)/ext/date/lib/*' \
17-
'$(top_srcdir)/ext/fileinfo/libmagic/*' \
18-
'$(top_srcdir)/ext/gd/libgd/*' \
19-
'$(top_srcdir)/ext/hash/sha3/*' \
20-
'$(top_srcdir)/ext/mbstring/libmbfl/*' \
21-
'$(top_srcdir)/ext/opcache/jit/libudis86/*' \
22-
'$(top_srcdir)/ext/pcre/pcre2lib/*' \
23-
'$(top_srcdir)/ext/xmlrpc/libxmlrpc/*' \
24-
--output-file $@
20+
$(LTP) --output-file $@ --remove $@ '*/<stdout>' $(GCOV_EXCLUDES)
2521

2622
lcov-html: php_lcov.info
2723
@echo "Generating lcov HTML"
28-
@$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info
24+
$(LTP_GENHTML) --legend --output-directory lcov_html/ --title "PHP Code Coverage" php_lcov.info
2925

3026
lcov-clean:
3127
rm -f php_lcov.info
3228
rm -rf lcov_html/
3329

3430
lcov-clean-data:
3531
@find . -name \*.gcda -o -name \*.da -o -name \*.bbg? | xargs rm -f
32+
33+
gcovr-html: test
34+
@echo "Generating gcovr HTML"
35+
@rm -rf gcovr_html/
36+
@mkdir gcovr_html
37+
gcovr -sr . -o gcovr_html/index.html --html --html-details $(foreach lib, $(GCOV_EXCLUDES), -e $(lib))
38+
39+
gcovr-xml: test
40+
@echo "Generating gcovr XML"
41+
@rm -f coverage.xml
42+
gcovr -sr . -o coverage.xml --xml $(foreach lib, $(GCOV_EXCLUDES), -e $(lib))

0 commit comments

Comments
 (0)