68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
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 don’t 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",
|
||
},
|
||
)
|