From 7467ce6405167b16d9e6d6505a409cc67e88d309 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 11 Apr 2024 00:07:42 +0200 Subject: [PATCH] Exit with an error if using `--test` on binary without unit tests compiled This makes it clearer that `tests=yes` should be used at compile-time. Previously, the engine would run as if the argument wasn't passed, which can be confusing. --- main/main.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 357033b6d8b..a89dcc296ef 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -838,21 +838,26 @@ void Main::test_cleanup() { #endif int Main::test_entrypoint(int argc, char *argv[], bool &tests_need_run) { -#ifdef TESTS_ENABLED for (int x = 0; x < argc; x++) { if ((strncmp(argv[x], "--test", 6) == 0) && (strlen(argv[x]) == 6)) { tests_need_run = true; +#ifdef TESTS_ENABLED // TODO: need to come up with different test contexts. // Not every test requires high-level functionality like `ClassDB`. test_setup(); int status = test_main(argc, argv); test_cleanup(); return status; +#else + ERR_PRINT( + "`--test` was specified on the command line, but this Godot binary was compiled without support for unit tests. Aborting.\n" + "To be able to run unit tests, use the `tests=yes` SCons option when compiling Godot.\n"); + return EXIT_FAILURE; +#endif } } -#endif tests_need_run = false; - return 0; + return EXIT_SUCCESS; } /* Engine initialization