Skip to content

Commit bc34cb6

Browse files
authored
Merge pull request libgit2#4778 from libgit2/ethomson/clar-xml
Clar XML output redux
2 parents 55d354d + d17e67d commit bc34cb6

File tree

12 files changed

+429
-189
lines changed

12 files changed

+429
-189
lines changed

.vsts-ci.yml

Lines changed: 37 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -11,128 +11,50 @@ jobs:
1111
pool:
1212
vmImage: 'Ubuntu 16.04'
1313
steps:
14-
- task: Docker@0
15-
displayName: Build
16-
inputs:
17-
action: 'Run an image'
14+
- template: ci/vsts-docker.yml
15+
parameters:
1816
imageName: 'libgit2/trusty-openssl:latest'
19-
volumes: |
20-
$(Build.SourcesDirectory):/src
21-
$(Build.BinariesDirectory):/build
22-
workDir: '/build'
23-
containerCommand: '/src/ci/build.sh'
24-
detached: false
25-
- task: Docker@0
26-
displayName: Test
27-
inputs:
28-
action: 'Run an image'
29-
imageName: 'libgit2/trusty-openssl:latest'
30-
volumes: |
31-
$(Build.SourcesDirectory):/src
32-
$(Build.BinariesDirectory):/build
33-
envVars: |
17+
environmentVariables: |
3418
CC=gcc
3519
LEAK_CHECK=valgrind
36-
workDir: '/build'
37-
containerCommand: '/src/ci/test.sh'
38-
detached: false
3920
4021
- job: linux_trusty_gcc_mbedtls
4122
displayName: 'Linux (Trusty; GCC; mbedTLS)'
4223
pool:
4324
vmImage: 'Ubuntu 16.04'
4425
steps:
45-
- task: Docker@0
46-
displayName: Build
47-
inputs:
48-
action: 'Run an image'
26+
- template: ci/vsts-docker.yml
27+
parameters:
4928
imageName: 'libgit2/trusty-mbedtls:latest'
50-
volumes: |
51-
$(Build.SourcesDirectory):/src
52-
$(Build.BinariesDirectory):/build
53-
envVars: |
29+
environmentVariables: |
5430
CC=gcc
5531
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
5632
LEAK_CHECK=valgrind
57-
workDir: '/build'
58-
containerCommand: '/src/ci/build.sh'
59-
detached: false
60-
- task: Docker@0
61-
displayName: Test
62-
inputs:
63-
action: 'Run an image'
64-
imageName: 'libgit2/trusty-mbedtls:latest'
65-
volumes: |
66-
$(Build.SourcesDirectory):/src
67-
$(Build.BinariesDirectory):/build
68-
envVars: 'LEAK_CHECK=valgrind'
69-
workDir: '/build'
70-
containerCommand: '/src/ci/test.sh'
71-
detached: false
7233
7334
- job: linux_trusty_clang_openssl
7435
displayName: 'Linux (Trusty; Clang; OpenSSL)'
7536
pool:
7637
vmImage: 'Ubuntu 16.04'
7738
steps:
78-
- task: Docker@0
79-
displayName: Build
80-
inputs:
81-
action: 'Run an image'
82-
imageName: 'libgit2/trusty-openssl:latest'
83-
volumes: |
84-
$(Build.SourcesDirectory):/src
85-
$(Build.BinariesDirectory):/build
86-
workDir: '/build'
87-
containerCommand: '/src/ci/build.sh'
88-
detached: false
89-
- task: Docker@0
90-
displayName: Test
91-
inputs:
92-
action: 'Run an image'
39+
- template: ci/vsts-docker.yml
40+
parameters:
9341
imageName: 'libgit2/trusty-openssl:latest'
94-
volumes: |
95-
$(Build.SourcesDirectory):/src
96-
$(Build.BinariesDirectory):/build
97-
envVars: |
42+
environmentVariables: |
9843
CC=clang
9944
LEAK_CHECK=valgrind
100-
workDir: '/build'
101-
containerCommand: '/src/ci/test.sh'
102-
detached: false
10345
10446
- job: linux_trusty_clang_mbedtls
10547
displayName: 'Linux (Trusty; Clang; mbedTLS)'
10648
pool:
10749
vmImage: 'Ubuntu 16.04'
10850
steps:
109-
- task: Docker@0
110-
displayName: Build
111-
inputs:
112-
action: 'Run an image'
51+
- template: ci/vsts-docker.yml
52+
parameters:
11353
imageName: 'libgit2/trusty-mbedtls:latest'
114-
volumes: |
115-
$(Build.SourcesDirectory):/src
116-
$(Build.BinariesDirectory):/build
117-
envVars: |
54+
environmentVariables: |
11855
CC=clang
11956
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
12057
LEAK_CHECK=valgrind
121-
workDir: '/build'
122-
containerCommand: '/src/ci/build.sh'
123-
detached: false
124-
- task: Docker@0
125-
displayName: Test
126-
inputs:
127-
action: 'Run an image'
128-
imageName: 'libgit2/trusty-mbedtls:latest'
129-
volumes: |
130-
$(Build.SourcesDirectory):/src
131-
$(Build.BinariesDirectory):/build
132-
envVars: 'LEAK_CHECK=valgrind'
133-
workDir: '/build'
134-
containerCommand: '/src/ci/test.sh'
135-
detached: false
13658
13759
- job: macos
13860
displayName: 'macOS'
@@ -141,37 +63,30 @@ jobs:
14163
steps:
14264
- bash: . '$(Build.SourcesDirectory)/ci/setup-osx.sh'
14365
displayName: Setup
144-
- bash: . '$(Build.SourcesDirectory)/ci/build.sh'
145-
displayName: Build
146-
env:
147-
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
148-
- bash: . '$(Build.SourcesDirectory)/ci/test.sh'
149-
displayName: Test
150-
env:
151-
TMPDIR: $(Agent.TempDirectory)
152-
LEAK_CHECK: leaks
66+
- template: ci/vsts-bash.yml
67+
parameters:
68+
environmentVariables:
69+
TMPDIR: $(Agent.TempDirectory)
70+
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
71+
LEAK_CHECK: leaks
15372

15473
- job: windows_vs_amd64
15574
displayName: 'Windows (Visual Studio; amd64)'
15675
pool: Hosted
15776
steps:
158-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
159-
displayName: Build
160-
env:
161-
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
162-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
163-
displayName: Test
77+
- template: ci/vsts-powershell.yml
78+
parameters:
79+
environmentVariables:
80+
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
16481

16582
- job: windows_vs_x86
16683
displayName: 'Windows (Visual Studio; x86)'
16784
pool: Hosted
16885
steps:
169-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
170-
displayName: Build
171-
env:
172-
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
173-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
174-
displayName: Test
86+
- template: ci/vsts-powershell.yml
87+
parameters:
88+
environmentVariables:
89+
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
17590

17691
- job: windows_mingw_amd64
17792
displayName: 'Windows (MinGW; amd64)'
@@ -182,27 +97,24 @@ jobs:
18297
env:
18398
TEMP: $(Agent.TempDirectory)
18499
ARCH: amd64
185-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
186-
displayName: Build
187-
env:
188-
CMAKE_OPTIONS: -G"MinGW Makefiles"
189-
PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
190-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
191-
displayName: Test
100+
- template: ci/vsts-powershell.yml
101+
parameters:
102+
environmentVariables:
103+
CMAKE_OPTIONS: -G"MinGW Makefiles"
104+
PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
192105

193106
- job: windows_mingw_x86
194107
displayName: 'Windows (MinGW; x86)'
195108
pool: Hosted
196109
steps:
197110
- powershell: . '$(Build.SourcesDirectory)\ci\setup-mingw.ps1'
198111
displayName: Setup
112+
workingDirectory: '$(Build.BinariesDirectory)'
199113
env:
200114
TEMP: $(Agent.TempDirectory)
201115
ARCH: x86
202-
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
203-
displayName: Build
204-
env:
205-
CMAKE_OPTIONS: -G"MinGW Makefiles"
206-
PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
207-
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
208-
displayName: Test
116+
- template: ci/vsts-powershell.yml
117+
parameters:
118+
environmentVariables:
119+
CMAKE_OPTIONS: -G"MinGW Makefiles"
120+
PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ OPTION(USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
6262
OPTION(DEBUG_POOL "Enable debug pool allocator" OFF)
6363
OPTION(ENABLE_WERROR "Enable compilation with -Werror" OFF)
6464
OPTION(USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF)
65+
SET(CLAR_XML "OFF" CACHE STRING
66+
"Writes test results in XML format. One of ON, OFF or the directory to write to; this does not affect the output executables, this only affects the behavior of the ctest command.")
6567

6668
IF (UNIX AND NOT APPLE)
6769
OPTION(ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF)

ci/build.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ Write-Host "####################################################################
1818
Write-Host "## Configuring build environment"
1919
Write-Host "##############################################################################"
2020

21-
Invoke-Expression "cmake ${SourceDirectory} -DBUILD_EXAMPLES=ON ${Env:CMAKE_OPTIONS}"
21+
$TestOutputDirectory = $BuildDirectory -replace "\\", "/"
22+
23+
Invoke-Expression "cmake ${SourceDirectory} -DBUILD_EXAMPLES=ON -DCLAR_XML=${TestOutputDirectory} ${Env:CMAKE_OPTIONS}"
2224
if ($LastExitCode -ne 0) { [Environment]::Exit($LastExitCode) }
2325

2426
Write-Host ""

ci/build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ echo "##########################################################################
2828
echo "## Configuring build environment"
2929
echo "##############################################################################"
3030

31-
echo cmake ${SOURCE_DIR} -DBUILD_EXAMPLES=ON ${CMAKE_OPTIONS}
32-
cmake ${SOURCE_DIR} -DENABLE_WERROR=ON -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON ${CMAKE_OPTIONS}
31+
echo cmake ${SOURCE_DIR} -DENABLE_WERROR=ON -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON -DCLAR_XML=\"${BUILD_DIR}\" ${CMAKE_OPTIONS}
32+
cmake ${SOURCE_DIR} -DENABLE_WERROR=ON -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON -DCLAR_XML="${BUILD_DIR}" ${CMAKE_OPTIONS}
3333

3434
echo ""
3535
echo "##############################################################################"

ci/vsts-bash.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# These are the steps used for building on machines with bash.
2+
steps:
3+
- bash: . '$(Build.SourcesDirectory)/ci/build.sh'
4+
displayName: Build
5+
workingDirectory: '$(Build.BinariesDirectory)'
6+
env: ${{ parameters.environmentVariables }}
7+
- bash: . '$(Build.SourcesDirectory)/ci/test.sh'
8+
displayName: Test
9+
workingDirectory: '$(Build.BinariesDirectory)'
10+
env: ${{ parameters.environmentVariables }}
11+
- task: PublishTestResults@2
12+
displayName: Publish Test Results
13+
condition: succeededOrFailed()
14+
inputs:
15+
testResultsFiles: 'results_*.xml'
16+
searchFolder: '$(Build.BinariesDirectory)'
17+
mergeTestResults: true

ci/vsts-docker.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# These are the steps used in a container-based build in VSTS.
2+
steps:
3+
- task: docker@0
4+
displayName: Build
5+
inputs:
6+
action: 'Run an image'
7+
imageName: ${{ parameters.imageName }}
8+
volumes: |
9+
$(Build.SourcesDirectory):/src
10+
$(Build.BinariesDirectory):/build
11+
envVars: ${{ parameters.environmentVariables }}
12+
workDir: '/build'
13+
containerCommand: '/src/ci/build.sh'
14+
detached: false
15+
- task: docker@0
16+
displayName: Test
17+
inputs:
18+
action: 'Run an image'
19+
imageName: ${{ parameters.imageName }}
20+
volumes: |
21+
$(Build.SourcesDirectory):/src
22+
$(Build.BinariesDirectory):/build
23+
envVars: ${{ parameters.environmentVariables }}
24+
workDir: '/build'
25+
containerCommand: '/src/ci/test.sh'
26+
detached: false
27+
- task: publishtestresults@2
28+
displayName: Publish Test Results
29+
condition: succeededOrFailed()
30+
inputs:
31+
testResultsFiles: 'results_*.xml'
32+
searchFolder: '$(Build.BinariesDirectory)'
33+
mergeTestResults: true

ci/vsts-powershell.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# These are the steps used for building on machines with PowerShell.
2+
steps:
3+
- powershell: . '$(Build.SourcesDirectory)\ci\build.ps1'
4+
displayName: Build
5+
workingDirectory: '$(Build.BinariesDirectory)'
6+
env: ${{ parameters.environmentVariables }}
7+
- powershell: . '$(Build.SourcesDirectory)\ci\test.ps1'
8+
displayName: Test
9+
workingDirectory: '$(Build.BinariesDirectory)'
10+
env: ${{ parameters.environmentVariables }}
11+
- task: PublishTestResults@2
12+
displayName: Publish Test Results
13+
condition: succeededOrFailed()
14+
inputs:
15+
testResultsFiles: 'results_*.xml'
16+
searchFolder: '$(Build.BinariesDirectory)'
17+
mergeTestResults: true

tests/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,22 @@ IF (MSVC_IDE)
5454
SET_SOURCE_FILES_PROPERTIES("precompiled.c" COMPILE_FLAGS "/Ycprecompiled.h")
5555
ENDIF ()
5656

57-
ADD_TEST(offline "${libgit2_BINARY_DIR}/libgit2_clar" -v -xonline)
58-
ADD_TEST(online "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline)
59-
ADD_TEST(gitdaemon "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push)
60-
ADD_TEST(ssh "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths)
61-
ADD_TEST(proxy "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_in_url -sonline::clone::proxy_credentials_request)
57+
IF (CLAR_XML)
58+
IF (CLAR_XML STREQUAL "ON")
59+
SET(XML_PATH "")
60+
ELSE ()
61+
SET(XML_PATH "${CLAR_XML}/")
62+
ENDIF ()
63+
64+
SET(TESTS_OFFLINE_XML "-r${XML_PATH}results_offline.xml")
65+
SET(TESTS_ONLINE_XML "-r${XML_PATH}results_online.xml")
66+
SET(TESTS_GITDAEMON_XML "-r${XML_PATH}results_gitdaemon.xml")
67+
SET(TESTS_SSH_XML "-r${XML_PATH}results_ssh.xml")
68+
SET(TESTS_PROXY_XML "-r${XML_PATH}results_proxy.xml")
69+
ENDIF ()
70+
71+
ADD_TEST(offline "${libgit2_BINARY_DIR}/libgit2_clar" -v ${TESTS_OFFLINE_XML} -xonline)
72+
ADD_TEST(online "${libgit2_BINARY_DIR}/libgit2_clar" -v ${TESTS_ONLINE_XML} -sonline)
73+
ADD_TEST(gitdaemon "${libgit2_BINARY_DIR}/libgit2_clar" -v ${TESTS_GITDAEMON_XML} -sonline::push)
74+
ADD_TEST(ssh "${libgit2_BINARY_DIR}/libgit2_clar" -v ${TESTS_SSH_XML} -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths)
75+
ADD_TEST(proxy "${libgit2_BINARY_DIR}/libgit2_clar" -v ${TESTS_PROXY_XML} -sonline::clone::proxy_credentials_in_url -sonline::clone::proxy_credentials_request)

0 commit comments

Comments
 (0)