summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xenia/base/main.h20
-rw-r--r--src/xenia/base/main_posix.cc8
-rw-r--r--src/xenia/base/main_win.cc8
-rw-r--r--src/xenia/base/testing/memory_test.cc26
-rw-r--r--src/xenia/base/testing/threading_test.cc40
-rw-r--r--src/xenia/base/testing/utf8_test.cc24
-rw-r--r--src/xenia/cpu/testing/util.h2
m---------third_party/catch0
-rw-r--r--tools/build/src/test_suite_main.cc7
9 files changed, 74 insertions, 61 deletions
diff --git a/src/xenia/base/main.h b/src/xenia/base/main.h
index c985eb4de..792fee5d6 100644
--- a/src/xenia/base/main.h
+++ b/src/xenia/base/main.h
@@ -10,6 +10,7 @@
#ifndef XENIA_BASE_MAIN_H_
#define XENIA_BASE_MAIN_H_
+#include <optional>
#include <string>
#include <vector>
@@ -25,19 +26,26 @@ bool has_console_attached();
// launch.
struct EntryInfo {
std::string name;
- std::string positional_usage;
- std::vector<std::string> positional_options;
int (*entry_point)(const std::vector<std::string>& args);
+ bool transparent_options; // no argument parsing
+ std::optional<std::string> positional_usage;
+ std::optional<std::vector<std::string>> positional_options;
};
EntryInfo GetEntryInfo();
#define DEFINE_ENTRY_POINT(name, entry_point, positional_usage, ...) \
xe::EntryInfo xe::GetEntryInfo() { \
std::initializer_list<std::string> positional_options = {__VA_ARGS__}; \
- return xe::EntryInfo( \
- {name, positional_usage, \
- std::vector<std::string>(std::move(positional_options)), \
- entry_point}); \
+ return xe::EntryInfo{ \
+ name, entry_point, false, positional_usage, \
+ std::vector<std::string>(std::move(positional_options))}; \
+ }
+
+// TODO(Joel Linn): Add some way to filter consumed arguments in
+// cvar::ParseLaunchArguments()
+#define DEFINE_ENTRY_POINT_TRANSPARENT(name, entry_point) \
+ xe::EntryInfo xe::GetEntryInfo() { \
+ return xe::EntryInfo{name, entry_point, true, std::nullopt, std::nullopt}; \
}
} // namespace xe
diff --git a/src/xenia/base/main_posix.cc b/src/xenia/base/main_posix.cc
index 673ff0ac4..1e5e9e526 100644
--- a/src/xenia/base/main_posix.cc
+++ b/src/xenia/base/main_posix.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
- * Copyright 2020 Ben Vanik. All rights reserved. *
+ * Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -23,8 +23,10 @@ bool has_console_attached() { return true; }
extern "C" int main(int argc, char** argv) {
auto entry_info = xe::GetEntryInfo();
- cvar::ParseLaunchArguments(argc, argv, entry_info.positional_usage,
- entry_info.positional_options);
+ if (!entry_info.transparent_options) {
+ cvar::ParseLaunchArguments(argc, argv, entry_info.positional_usage.value(),
+ entry_info.positional_options.value());
+ }
std::vector<std::string> args;
for (int n = 0; n < argc; n++) {
diff --git a/src/xenia/base/main_win.cc b/src/xenia/base/main_win.cc
index d61fe607b..6162d3846 100644
--- a/src/xenia/base/main_win.cc
+++ b/src/xenia/base/main_win.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
- * Copyright 2020 Ben Vanik. All rights reserved. *
+ * Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -104,8 +104,10 @@ static bool parse_launch_arguments(const xe::EntryInfo& entry_info,
LocalFree(wargv);
- cvar::ParseLaunchArguments(argc, argv, entry_info.positional_usage,
- entry_info.positional_options);
+ if (!entry_info.transparent_options) {
+ cvar::ParseLaunchArguments(argc, argv, entry_info.positional_usage.value(),
+ entry_info.positional_options.value());
+ }
args.clear();
for (int n = 0; n < argc; n++) {
diff --git a/src/xenia/base/testing/memory_test.cc b/src/xenia/base/testing/memory_test.cc
index ac7c2c773..f78d9c3bb 100644
--- a/src/xenia/base/testing/memory_test.cc
+++ b/src/xenia/base/testing/memory_test.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
- * Copyright 2015 Ben Vanik. All rights reserved. *
+ * Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -18,7 +18,7 @@ namespace xe {
namespace base {
namespace test {
-TEST_CASE("copy_128_aligned", "Copy and Swap") {
+TEST_CASE("copy_128_aligned", "[copy_and_swap]") {
alignas(128) uint8_t src[256], dest[256];
for (uint8_t i = 0; i < 255; ++i) {
src[i] = 255 - i;
@@ -37,7 +37,7 @@ TEST_CASE("copy_128_aligned", "Copy and Swap") {
REQUIRE(std::memcmp(dest, src + 1, 128));
}
-TEST_CASE("copy_and_swap_16_aligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_16_aligned", "[copy_and_swap]") {
alignas(16) uint16_t a = 0x1111, b = 0xABCD;
copy_and_swap_16_aligned(&a, &b, 1);
REQUIRE(a == 0xCDAB);
@@ -93,7 +93,7 @@ TEST_CASE("copy_and_swap_16_aligned", "Copy and Swap") {
REQUIRE(std::strcmp(f, "s atdnra dlagimnne.t") == 0);
}
-TEST_CASE("copy_and_swap_16_unaligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_16_unaligned", "[copy_and_swap]") {
uint16_t a = 0x1111, b = 0xABCD;
copy_and_swap_16_unaligned(&a, &b, 1);
REQUIRE(a == 0xCDAB);
@@ -139,7 +139,7 @@ TEST_CASE("copy_and_swap_16_unaligned", "Copy and Swap") {
"noeg rhtnas atdnra dlagimnne.t") == 0);
}
-TEST_CASE("copy_and_swap_32_aligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_32_aligned", "[copy_and_swap]") {
alignas(32) uint32_t a = 0x11111111, b = 0x89ABCDEF;
copy_and_swap_32_aligned(&a, &b, 1);
REQUIRE(a == 0xEFCDAB89);
@@ -195,7 +195,7 @@ TEST_CASE("copy_and_swap_32_aligned", "Copy and Swap") {
REQUIRE(std::strcmp(f, "ats radnla dmngi.tne") == 0);
}
-TEST_CASE("copy_and_swap_32_unaligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_32_unaligned", "[copy_and_swap]") {
uint32_t a = 0x11111111, b = 0x89ABCDEF;
copy_and_swap_32_unaligned(&a, &b, 1);
REQUIRE(a == 0xEFCDAB89);
@@ -259,7 +259,7 @@ TEST_CASE("copy_and_swap_32_unaligned", "Copy and Swap") {
"regnahtats radnla dmngi.tne") == 0);
}
-TEST_CASE("copy_and_swap_64_aligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_64_aligned", "[copy_and_swap]") {
alignas(64) uint64_t a = 0x1111111111111111, b = 0x0123456789ABCDEF;
copy_and_swap_64_aligned(&a, &b, 1);
REQUIRE(a == 0xEFCDAB8967452301);
@@ -317,7 +317,7 @@ TEST_CASE("copy_and_swap_64_aligned", "Copy and Swap") {
REQUIRE(std::strcmp(f, "radnats mngila d") == 0);
}
-TEST_CASE("copy_and_swap_64_unaligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_64_unaligned", "[copy_and_swap]") {
uint64_t a = 0x1111111111111111, b = 0x0123456789ABCDEF;
copy_and_swap_64_unaligned(&a, &b, 1);
REQUIRE(a == 0xEFCDAB8967452301);
@@ -407,12 +407,12 @@ TEST_CASE("copy_and_swap_64_unaligned", "Copy and Swap") {
"regradnats mngila d") == 0);
}
-TEST_CASE("copy_and_swap_16_in_32_aligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_16_in_32_aligned", "[copy_and_swap]") {
// TODO(bwrsandman): test once properly understood.
REQUIRE(true == true);
}
-TEST_CASE("copy_and_swap_16_in_32_unaligned", "Copy and Swap") {
+TEST_CASE("copy_and_swap_16_in_32_unaligned", "[copy_and_swap]") {
// TODO(bwrsandman): test once properly understood.
REQUIRE(true == true);
}
@@ -425,7 +425,7 @@ TEST_CASE("create_and_close_file_mapping", "Virtual Memory Mapping") {
xe::memory::CloseFileMappingHandle(memory, path);
}
-TEST_CASE("map_view", "Virtual Memory Mapping") {
+TEST_CASE("map_view", "[virtual_memory_mapping]") {
auto path = fmt::format("xenia_test_{}", Clock::QueryHostTickCount());
const size_t length = 0x100;
auto memory = xe::memory::CreateFileMappingHandle(
@@ -442,7 +442,7 @@ TEST_CASE("map_view", "Virtual Memory Mapping") {
xe::memory::CloseFileMappingHandle(memory, path);
}
-TEST_CASE("read_write_view", "Virtual Memory Mapping") {
+TEST_CASE("read_write_view", "[virtual_memory_mapping]") {
const size_t length = 0x100;
auto path = fmt::format("xenia_test_{}", Clock::QueryHostTickCount());
auto memory = xe::memory::CreateFileMappingHandle(
@@ -469,7 +469,7 @@ TEST_CASE("read_write_view", "Virtual Memory Mapping") {
xe::memory::CloseFileMappingHandle(memory, path);
}
-TEST_CASE("make_fourcc", "FourCC") {
+TEST_CASE("make_fourcc", "[fourcc]") {
SECTION("'1234'") {
const uint32_t fourcc_host = 0x31323334;
constexpr fourcc_t fourcc_1 = make_fourcc('1', '2', '3', '4');
diff --git a/src/xenia/base/testing/threading_test.cc b/src/xenia/base/testing/threading_test.cc
index e2437dfb2..4bb87a518 100644
--- a/src/xenia/base/testing/threading_test.cc
+++ b/src/xenia/base/testing/threading_test.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
-* Copyright 2018 Ben Vanik. All rights reserved. *
+* Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -84,17 +84,17 @@ TEST_CASE("Enable process to set thread affinity") {
EnableAffinityConfiguration();
}
-TEST_CASE("Yield Current Thread", "MaybeYield") {
+TEST_CASE("Yield Current Thread", "[maybe_yield]") {
// Run to see if there are any errors
MaybeYield();
}
-TEST_CASE("Sync with Memory Barrier", "SyncMemory") {
+TEST_CASE("Sync with Memory Barrier", "[sync_memory]") {
// Run to see if there are any errors
SyncMemory();
}
-TEST_CASE("Sleep Current Thread", "Sleep") {
+TEST_CASE("Sleep Current Thread", "[sleep]") {
auto wait_time = 50ms;
auto start = std::chrono::steady_clock::now();
Sleep(wait_time);
@@ -102,7 +102,7 @@ TEST_CASE("Sleep Current Thread", "Sleep") {
REQUIRE(duration >= wait_time);
}
-TEST_CASE("Sleep Current Thread in Alertable State", "Sleep") {
+TEST_CASE("Sleep Current Thread in Alertable State", "[sleep]") {
auto wait_time = 50ms;
auto start = std::chrono::steady_clock::now();
auto result = threading::AlertableSleep(wait_time);
@@ -201,7 +201,7 @@ TEST_CASE("HighResolutionTimer") {
// spawned from differing threads
}
-TEST_CASE("Wait on Multiple Handles", "Wait") {
+TEST_CASE("Wait on Multiple Handles", "[wait]") {
auto mutant = Mutant::Create(true);
auto semaphore = Semaphore::Create(10, 10);
auto event_ = Event::CreateManualResetEvent(false);
@@ -244,7 +244,7 @@ TEST_CASE("Signal and Wait") {
REQUIRE(result == WaitResult::kSuccess);
}
-TEST_CASE("Wait on Event", "Event") {
+TEST_CASE("Wait on Event", "[event]") {
auto evt = Event::CreateAutoResetEvent(false);
WaitResult result;
@@ -262,7 +262,7 @@ TEST_CASE("Wait on Event", "Event") {
REQUIRE(result == WaitResult::kTimeout);
}
-TEST_CASE("Reset Event", "Event") {
+TEST_CASE("Reset Event", "[event]") {
auto evt = Event::CreateAutoResetEvent(false);
WaitResult result;
@@ -283,7 +283,7 @@ TEST_CASE("Reset Event", "Event") {
REQUIRE(result == WaitResult::kSuccess);
}
-TEST_CASE("Wait on Multiple Events", "Event") {
+TEST_CASE("Wait on Multiple Events", "[event]") {
auto events = std::array<std::unique_ptr<Event>, 4>{
Event::CreateAutoResetEvent(false),
Event::CreateAutoResetEvent(false),
@@ -348,7 +348,7 @@ TEST_CASE("Wait on Multiple Events", "Event") {
// REQUIRE(order[3] == '3');
}
-TEST_CASE("Wait on Semaphore", "Semaphore") {
+TEST_CASE("Wait on Semaphore", "[semaphore]") {
WaitResult result;
std::unique_ptr<Semaphore> sem;
int previous_count = 0;
@@ -450,7 +450,7 @@ TEST_CASE("Wait on Semaphore", "Semaphore") {
// REQUIRE(sem.get() == nullptr);
}
-TEST_CASE("Wait on Multiple Semaphores", "Semaphore") {
+TEST_CASE("Wait on Multiple Semaphores", "[semaphore]") {
WaitResult all_result;
std::pair<WaitResult, size_t> any_result;
int previous_count;
@@ -507,7 +507,7 @@ TEST_CASE("Wait on Multiple Semaphores", "Semaphore") {
REQUIRE(previous_count == 4);
}
-TEST_CASE("Wait on Mutant", "Mutant") {
+TEST_CASE("Wait on Mutant", "[mutant]") {
WaitResult result;
std::unique_ptr<Mutant> mut;
@@ -564,7 +564,7 @@ TEST_CASE("Wait on Mutant", "Mutant") {
REQUIRE(mut->Release());
}
-TEST_CASE("Wait on Multiple Mutants", "Mutant") {
+TEST_CASE("Wait on Multiple Mutants", "[mutant]") {
WaitResult all_result;
std::pair<WaitResult, size_t> any_result;
std::unique_ptr<Mutant> mut0, mut1;
@@ -627,7 +627,7 @@ TEST_CASE("Wait on Multiple Mutants", "Mutant") {
thread2.join();
}
-TEST_CASE("Wait on Timer", "Timer") {
+TEST_CASE("Wait on Timer", "[timer]") {
WaitResult result;
std::unique_ptr<Timer> timer;
@@ -692,7 +692,7 @@ TEST_CASE("Wait on Timer", "Timer") {
REQUIRE(result == WaitResult::kTimeout); // No more signals from repeating
}
-TEST_CASE("Wait on Multiple Timers", "Timer") {
+TEST_CASE("Wait on Multiple Timers", "[timer]") {
WaitResult all_result;
std::pair<WaitResult, size_t> any_result;
@@ -730,13 +730,13 @@ TEST_CASE("Wait on Multiple Timers", "Timer") {
REQUIRE(any_result.second == 1);
}
-TEST_CASE("Create and Trigger Timer Callbacks", "Timer") {
+TEST_CASE("Create and Trigger Timer Callbacks", "[timer]") {
// TODO(bwrsandman): Check which thread performs callback and timing of
// callback
REQUIRE(true);
}
-TEST_CASE("Set and Test Current Thread ID", "Thread") {
+TEST_CASE("Set and Test Current Thread ID", "[thread]") {
// System ID
auto system_id = current_thread_system_id();
REQUIRE(system_id > 0);
@@ -769,7 +769,7 @@ TEST_CASE("Set and Test Current Thread Name", "Thread") {
REQUIRE_NOTHROW(set_name(old_thread_name));
}
-TEST_CASE("Create and Run Thread", "Thread") {
+TEST_CASE("Create and Run Thread", "[thread]") {
std::unique_ptr<Thread> thread;
WaitResult result;
Thread::CreationParameters params = {};
@@ -838,7 +838,7 @@ TEST_CASE("Create and Run Thread", "Thread") {
// TODO(bwrsandman): Test setting and getting thread affinity
}
-TEST_CASE("Test Suspending Thread", "Thread") {
+TEST_CASE("Test Suspending Thread", "[thread]") {
std::unique_ptr<Thread> thread;
WaitResult result;
Thread::CreationParameters params = {};
@@ -899,7 +899,7 @@ TEST_CASE("Test Suspending Thread", "Thread") {
REQUIRE(result == threading::WaitResult::kSuccess);
}
-TEST_CASE("Test Thread QueueUserCallback", "Thread") {
+TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
std::unique_ptr<Thread> thread;
WaitResult result;
Thread::CreationParameters params = {};
diff --git a/src/xenia/base/testing/utf8_test.cc b/src/xenia/base/testing/utf8_test.cc
index 935f65846..9a33ff4fb 100644
--- a/src/xenia/base/testing/utf8_test.cc
+++ b/src/xenia/base/testing/utf8_test.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
- * Copyright 2020 Ben Vanik. All rights reserved. *
+ * Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -194,7 +194,7 @@ struct example_results {
};
#undef TEST_EXAMPLE_RESULT
-TEST_CASE("utf8::count", "UTF-8 Count") {
+TEST_CASE("UTF-8 Count", "[utf8]") {
example_results<size_t> results = {};
results.Danish[0] = 88;
results.German[0] = 58;
@@ -225,7 +225,7 @@ TEST_CASE("utf8::count", "UTF-8 Count") {
// TODO(gibbed): hash_fnv1a
// TODO(gibbed): hash_fnv1a_case
-TEST_CASE("utf8::split", "UTF-8 Split") {
+TEST_CASE("UTF-8 Split", "[utf8]") {
std::vector<std::string_view> parts;
// Danish
@@ -290,17 +290,17 @@ TEST_CASE("utf8::split", "UTF-8 Split") {
// TODO(gibbed): Turkish
}
-TEST_CASE("utf8::equal_z", "UTF-8 Equal Z") {
+TEST_CASE("UTF-8 Equal Z", "[utf8]") {
REQUIRE(utf8::equal_z(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_z(u8"bar", u8"baz\0"));
}
-TEST_CASE("utf8::equal_case", "UTF-8 Equal Case") {
+TEST_CASE("UTF-8 Equal Case", "[utf8]") {
REQUIRE(utf8::equal_case(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_case(u8"bar", u8"baz\0"));
}
-TEST_CASE("utf8::equal_case_z", "UTF-8 Equal Case Z") {
+TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
REQUIRE(utf8::equal_case_z(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_case_z(u8"bar", u8"baz\0"));
}
@@ -345,7 +345,7 @@ TEST_CASE("utf8::equal_case_z", "UTF-8 Equal Case Z") {
REQUIRE(func(input_values, '\\') == output_value); \
} while (0)
-TEST_CASE("utf8::join_paths", "UTF-8 Join Paths") {
+TEST_CASE("UTF-8 Join Paths", "[utf8]") {
TEST_PATHS(utf8::join_paths, u8"");
TEST_PATHS(utf8::join_paths, u8"foo", u8"foo");
TEST_PATHS(utf8::join_paths, u8"foo/bar", u8"foo", u8"bar");
@@ -355,7 +355,7 @@ TEST_CASE("utf8::join_paths", "UTF-8 Join Paths") {
// TODO(gibbed): join_guest_paths
-TEST_CASE("utf8::fix_path_separators", "UTF-8 Fix Path Separators") {
+TEST_CASE("UTF-8 Fix Path Separators", "[utf8]") {
TEST_PATH_RAW(utf8::fix_path_separators, "", "");
TEST_PATH_RAW(utf8::fix_path_separators, "\\", "/");
TEST_PATH_RAW(utf8::fix_path_separators, "/", "/");
@@ -386,7 +386,7 @@ TEST_CASE("utf8::fix_path_separators", "UTF-8 Fix Path Separators") {
// TODO(gibbed): fix_guest_path_separators
-TEST_CASE("utf8::find_name_from_path", "UTF-8 Find Name From Path") {
+TEST_CASE("UTF-8 Find Name From Path", "[utf8]") {
TEST_PATH(utf8::find_name_from_path, "/", "");
TEST_PATH(utf8::find_name_from_path, "foo/bar/baz/qux/", "qux");
TEST_PATH(utf8::find_name_from_path, "foo/bar/baz/qux.txt", "qux.txt");
@@ -410,7 +410,7 @@ TEST_CASE("utf8::find_name_from_path", "UTF-8 Find Name From Path") {
// TODO(gibbed): find_name_from_guest_path
-TEST_CASE("utf8::find_base_name_from_path", "UTF-8 Find Base Name From Path") {
+TEST_CASE("UTF-8 Find Base Name From Path", "[utf8]") {
TEST_PATH(utf8::find_base_name_from_path, "foo/bar/baz/qux.txt", "qux");
TEST_PATH(utf8::find_base_name_from_path, "foo/bar/baz/qux/", "qux");
TEST_PATH(utf8::find_base_name_from_path,
@@ -439,7 +439,7 @@ TEST_CASE("utf8::find_base_name_from_path", "UTF-8 Find Base Name From Path") {
// TODO(gibbed): find_base_name_from_guest_path
-TEST_CASE("utf8::find_base_path", "UTF-8 Find Base Path") {
+TEST_CASE("UTF-8 Find Base Path", "[utf8]") {
TEST_PATH(utf8::find_base_path, "", "");
TEST_PATH(utf8::find_base_path, "/", "");
TEST_PATH(utf8::find_base_path, "//", "");
@@ -479,7 +479,7 @@ TEST_CASE("utf8::find_base_path", "UTF-8 Find Base Path") {
// TODO(gibbed): find_base_guest_path
-TEST_CASE("utf8::canonicalize_path", "UTF-8 Canonicalize Path") {
+TEST_CASE("UTF-8 Canonicalize Path", "[utf8]") {
TEST_PATH(utf8::canonicalize_path, "foo/bar/baz/qux", "foo/bar/baz/qux");
TEST_PATH(utf8::canonicalize_path, "foo/bar/baz/qux/", "foo/bar/baz/qux");
TEST_PATH(utf8::canonicalize_path, "foo/./baz/qux", "foo/baz/qux");
diff --git a/src/xenia/cpu/testing/util.h b/src/xenia/cpu/testing/util.h
index 075903455..79ca8bc03 100644
--- a/src/xenia/cpu/testing/util.h
+++ b/src/xenia/cpu/testing/util.h
@@ -20,7 +20,7 @@
#include "xenia/cpu/processor.h"
#include "xenia/cpu/test_module.h"
-#include "third_party/catch/single_include/catch.hpp"
+#include "third_party/catch/include/catch.hpp"
#define XENIA_TEST_X64 1
diff --git a/third_party/catch b/third_party/catch
-Subproject 6860c8def0ba7559bf077515b7a7ff63ad3444f
+Subproject 5c88067bd339465513af4aec606bd2292f1b594
diff --git a/tools/build/src/test_suite_main.cc b/tools/build/src/test_suite_main.cc
index d84c7047c..1ea73ac36 100644
--- a/tools/build/src/test_suite_main.cc
+++ b/tools/build/src/test_suite_main.cc
@@ -2,7 +2,7 @@
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
- * Copyright 2019 Ben Vanik. All rights reserved. *
+ * Copyright 2021 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
@@ -17,7 +17,7 @@
#include "xenia/base/main.h"
#define CATCH_CONFIG_RUNNER
-#include "third_party/catch/include/catch.hpp"
+#include "third_party/catch/single_include/catch2/catch.hpp"
namespace xe {
namespace test_suite {
@@ -43,4 +43,5 @@ int test_suite_main(const std::vector<std::string>& args) {
#error XE_TEST_SUITE_NAME is undefined!
#endif
-DEFINE_ENTRY_POINT(XE_TEST_SUITE_NAME, xe::test_suite::test_suite_main, "");
+DEFINE_ENTRY_POINT_TRANSPARENT(XE_TEST_SUITE_NAME,
+ xe::test_suite::test_suite_main);