You've already forked cpp-httplib
Meson only runs required targets. The key_encrypted_pem and cert_encrypted_pem targets added in020b0db090
and8191fd8e6c
weren't added to the list of targets required by the test target, so the generation of the encrypted certs was skipped, resulting in the failure of BindServerTest.BindAndListenSeparatelySSLEncryptedKey.
113 lines
3.1 KiB
Meson
113 lines
3.1 KiB
Meson
# SPDX-FileCopyrightText: 2021 Andrea Pappacoda
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
gtest_dep = dependency('gtest', main: true)
|
|
openssl = find_program('openssl')
|
|
test_conf = files('test.conf')
|
|
|
|
key_pem = custom_target(
|
|
'key_pem',
|
|
output: 'key.pem',
|
|
command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
)
|
|
|
|
temp_req = custom_target(
|
|
'temp_req',
|
|
input: key_pem,
|
|
output: 'temp_req',
|
|
command: [openssl, 'req', '-new', '-batch', '-config', test_conf, '-key', '@INPUT@', '-out', '@OUTPUT@']
|
|
)
|
|
|
|
cert_pem = custom_target(
|
|
'cert_pem',
|
|
input: [temp_req, key_pem],
|
|
output: 'cert.pem',
|
|
command: [openssl, 'x509', '-in', '@INPUT0@', '-days', '3650', '-req', '-signkey', '@INPUT1@', '-out', '@OUTPUT@']
|
|
)
|
|
|
|
cert2_pem = custom_target(
|
|
'cert2_pem',
|
|
input: key_pem,
|
|
output: 'cert2.pem',
|
|
command: [openssl, 'req', '-x509', '-config', test_conf, '-key', '@INPUT@', '-sha256', '-days', '3650', '-nodes', '-out', '@OUTPUT@', '-extensions', 'SAN']
|
|
)
|
|
|
|
key_encrypted_pem = custom_target(
|
|
'key_encrypted_pem',
|
|
output: 'key_encrypted.pem',
|
|
command: [openssl, 'genrsa', '-passout', 'pass:test123!', '-out', '@OUTPUT@', '2048']
|
|
)
|
|
|
|
cert_encrypted_pem = custom_target(
|
|
'cert_encrypted_pem',
|
|
input: key_encrypted_pem,
|
|
output: 'cert_encrypted.pem',
|
|
command: [openssl, 'req', '-x509', '-config', test_conf, '-key', '@INPUT@', '-sha256', '-days', '3650', '-nodes', '-out', '@OUTPUT@', '-extensions', 'SAN']
|
|
)
|
|
|
|
rootca_key_pem = custom_target(
|
|
'rootca_key_pem',
|
|
output: 'rootCA.key.pem',
|
|
command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
)
|
|
|
|
rootca_cert_pem = custom_target(
|
|
'rootca_cert_pem',
|
|
input: rootca_key_pem,
|
|
output: 'rootCA.cert.pem',
|
|
command: [openssl, 'req', '-x509', '-new', '-batch', '-config', files('test.rootCA.conf'), '-key', '@INPUT@', '-days', '1024', '-out', '@OUTPUT@']
|
|
)
|
|
|
|
client_key_pem = custom_target(
|
|
'client_key_pem',
|
|
output: 'client.key.pem',
|
|
command: [openssl, 'genrsa', '-out', '@OUTPUT@', '2048']
|
|
)
|
|
|
|
client_temp_req = custom_target(
|
|
'client_temp_req',
|
|
input: client_key_pem,
|
|
output: 'client_temp_req',
|
|
command: [openssl, 'req', '-new', '-batch', '-config', test_conf, '-key', '@INPUT@', '-out', '@OUTPUT@']
|
|
)
|
|
|
|
client_cert_pem = custom_target(
|
|
'client_cert_pem',
|
|
input: [client_temp_req, rootca_cert_pem, rootca_key_pem],
|
|
output: 'client.cert.pem',
|
|
command: [openssl, 'x509', '-in', '@INPUT0@', '-days', '370', '-req', '-CA', '@INPUT1@', '-CAkey', '@INPUT2@', '-CAcreateserial', '-out', '@OUTPUT@']
|
|
)
|
|
|
|
# Copy test files to the build directory
|
|
configure_file(input: 'ca-bundle.crt', output: 'ca-bundle.crt', copy: true)
|
|
configure_file(input: 'image.jpg', output: 'image.jpg', copy: true)
|
|
subdir(join_paths('www', 'dir'))
|
|
subdir(join_paths('www2', 'dir'))
|
|
subdir(join_paths('www3', 'dir'))
|
|
|
|
test(
|
|
'main',
|
|
executable(
|
|
'main',
|
|
'test.cc',
|
|
dependencies: [
|
|
cpp_httplib_dep,
|
|
gtest_dep
|
|
]
|
|
),
|
|
depends: [
|
|
key_pem,
|
|
cert_pem,
|
|
cert2_pem,
|
|
key_encrypted_pem,
|
|
cert_encrypted_pem,
|
|
rootca_key_pem,
|
|
rootca_cert_pem,
|
|
client_key_pem,
|
|
client_cert_pem
|
|
],
|
|
workdir: meson.current_build_dir(),
|
|
timeout: 300
|
|
)
|