You've already forked sentry-native
mirror of
https://github.com/encounter/sentry-native.git
synced 2026-03-30 11:37:49 -07:00
50 lines
1.1 KiB
C++
50 lines
1.1 KiB
C++
#ifndef SENTRY_TESTS_TESTUTILS_HPP_INCLUDED
|
|
#define SENTRY_TESTS_TESTUTILS_HPP_INCLUDED
|
|
|
|
#include <sentry.h>
|
|
#include <value.hpp>
|
|
#include <vector>
|
|
|
|
struct MockTransportData {
|
|
std::vector<sentry::Value> events;
|
|
};
|
|
|
|
extern MockTransportData mock_transport;
|
|
|
|
static void send_envelope(const sentry_envelope_t *envelope, void *) {
|
|
mock_transport.events.push_back(
|
|
sentry::Value(sentry_envelope_get_event(envelope)));
|
|
}
|
|
|
|
struct SentryGuard {
|
|
SentryGuard(sentry_options_t *options) {
|
|
if (!options) {
|
|
options = sentry_options_new();
|
|
sentry_options_set_dsn(options, "https://publickey@127.0.0.1/1");
|
|
}
|
|
mock_transport = MockTransportData();
|
|
sentry_options_set_transport(options, send_envelope, nullptr);
|
|
sentry_init(options);
|
|
m_done = false;
|
|
}
|
|
|
|
void done() {
|
|
if (m_done) {
|
|
return;
|
|
}
|
|
sentry_shutdown();
|
|
m_done = true;
|
|
}
|
|
|
|
~SentryGuard() {
|
|
done();
|
|
}
|
|
|
|
bool m_done;
|
|
};
|
|
|
|
#define WITH_MOCK_TRANSPORT(Options) \
|
|
for (SentryGuard _guard(Options); !_guard.m_done; _guard.done())
|
|
|
|
#endif
|