kicad/thirdparty/sentry-native/tests/test_build_static.py

68 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import subprocess
import sys
import os
import pytest
from .conditions import has_breakpad, has_crashpad
def test_static_lib(cmake):
tmp_path = cmake(
["sentry_example"],
{
"SENTRY_BACKEND": "none",
"SENTRY_TRANSPORT": "none",
"BUILD_SHARED_LIBS": "OFF",
},
)
# on linux we can use `ldd` to check that we dont link to `libsentry.so`
if sys.platform == "linux":
output = subprocess.check_output("ldd sentry_example", cwd=tmp_path, shell=True)
assert b"libsentry.so" not in output
# on windows, we read the file header to check that the exe is compiled correctly
if sys.platform == "win32":
with open(os.path.join(tmp_path, "sentry_example.exe"), "rb") as binary:
binary.seek(0x3C, 0)
offset = int.from_bytes(binary.read(4), byteorder="little")
binary.seek(offset, 0)
magic = binary.read(6)
# https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#signature-image-only
assert magic == (
b"PE\x00\x00\x4c\x01"
if os.environ.get("TEST_X86")
else b"PE\x00\x00\x64\x86"
)
# similarly, we use `file` on linux
if sys.platform == "linux":
output = subprocess.check_output(
"file sentry_example", cwd=tmp_path, shell=True
)
assert (
b"ELF 32-bit" if os.environ.get("TEST_X86") else b"ELF 64-bit"
) in output
@pytest.mark.skipif(not has_crashpad, reason="test needs crashpad backend")
def test_static_crashpad(cmake):
tmp_path = cmake(
["sentry_example"],
{
"SENTRY_BACKEND": "crashpad",
"SENTRY_TRANSPORT": "none",
"BUILD_SHARED_LIBS": "OFF",
},
)
@pytest.mark.skipif(not has_breakpad, reason="test needs breakpad backend")
def test_static_breakpad(cmake):
tmp_path = cmake(
["sentry_example"],
{
"SENTRY_BACKEND": "breakpad",
"SENTRY_TRANSPORT": "none",
"BUILD_SHARED_LIBS": "OFF",
},
)