SCons: Add `tests` option to enable or disable unit tests
This commit is contained in:
parent
5f75cec59e
commit
f6465f46b4
|
@ -60,7 +60,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
|
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
|
||||||
run: |
|
run: |
|
||||||
scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes target=release_debug module_mono_enabled=yes mono_glue=no
|
scons -j2 verbose=yes warnings=all werror=yes platform=linuxbsd tools=yes tests=yes target=release_debug module_mono_enabled=yes mono_glue=no
|
||||||
|
|
||||||
# Execute unit tests for the editor
|
# Execute unit tests for the editor
|
||||||
- name: Unit Tests
|
- name: Unit Tests
|
||||||
|
|
|
@ -49,7 +49,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
|
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
|
||||||
run: |
|
run: |
|
||||||
scons -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes target=release_debug
|
scons -j2 verbose=yes warnings=all werror=yes platform=osx tools=yes tests=yes target=release_debug
|
||||||
|
|
||||||
# Execute unit tests for the editor
|
# Execute unit tests for the editor
|
||||||
- name: Unit Tests
|
- name: Unit Tests
|
||||||
|
|
|
@ -54,7 +54,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
SCONS_CACHE: /.scons_cache/
|
SCONS_CACHE: /.scons_cache/
|
||||||
run: |
|
run: |
|
||||||
scons -j2 verbose=yes warnings=all werror=yes platform=windows tools=yes target=release_debug
|
scons -j2 verbose=yes warnings=all werror=yes platform=windows tools=yes tests=yes target=release_debug
|
||||||
|
|
||||||
# Execute unit tests for the editor
|
# Execute unit tests for the editor
|
||||||
- name: Unit Tests
|
- name: Unit Tests
|
||||||
|
|
12
SConstruct
12
SConstruct
|
@ -115,6 +115,7 @@ opts.Add(EnumVariable("target", "Compilation target", "debug", ("debug", "releas
|
||||||
opts.Add(EnumVariable("optimize", "Optimization type", "speed", ("speed", "size")))
|
opts.Add(EnumVariable("optimize", "Optimization type", "speed", ("speed", "size")))
|
||||||
|
|
||||||
opts.Add(BoolVariable("tools", "Build the tools (a.k.a. the Godot editor)", True))
|
opts.Add(BoolVariable("tools", "Build the tools (a.k.a. the Godot editor)", True))
|
||||||
|
opts.Add(BoolVariable("tests", "Build the unit tests", False))
|
||||||
opts.Add(BoolVariable("use_lto", "Use link-time optimization", False))
|
opts.Add(BoolVariable("use_lto", "Use link-time optimization", False))
|
||||||
opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise epsilon (debug option)", False))
|
opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise epsilon (debug option)", False))
|
||||||
|
|
||||||
|
@ -249,6 +250,10 @@ if env_base["target"] == "debug":
|
||||||
# http://scons.org/doc/production/HTML/scons-user/ch06s04.html
|
# http://scons.org/doc/production/HTML/scons-user/ch06s04.html
|
||||||
env_base.SetOption("implicit_cache", 1)
|
env_base.SetOption("implicit_cache", 1)
|
||||||
|
|
||||||
|
if not env_base["tools"]:
|
||||||
|
# Export templates can't run unit test tool.
|
||||||
|
env_base["tests"] = False
|
||||||
|
|
||||||
if env_base["no_editor_splash"]:
|
if env_base["no_editor_splash"]:
|
||||||
env_base.Append(CPPDEFINES=["NO_EDITOR_SPLASH"])
|
env_base.Append(CPPDEFINES=["NO_EDITOR_SPLASH"])
|
||||||
|
|
||||||
|
@ -312,6 +317,8 @@ if selected_platform in platform_list:
|
||||||
env["verbose"] = True
|
env["verbose"] = True
|
||||||
env["warnings"] = "extra"
|
env["warnings"] = "extra"
|
||||||
env["werror"] = True
|
env["werror"] = True
|
||||||
|
if env["tools"]:
|
||||||
|
env["tests"] = True
|
||||||
|
|
||||||
if env["vsproj"]:
|
if env["vsproj"]:
|
||||||
env.vs_incs = []
|
env.vs_incs = []
|
||||||
|
@ -586,6 +593,8 @@ if selected_platform in platform_list:
|
||||||
env.Append(CPPDEFINES=["PTRCALL_ENABLED"])
|
env.Append(CPPDEFINES=["PTRCALL_ENABLED"])
|
||||||
if env["tools"]:
|
if env["tools"]:
|
||||||
env.Append(CPPDEFINES=["TOOLS_ENABLED"])
|
env.Append(CPPDEFINES=["TOOLS_ENABLED"])
|
||||||
|
if env["tests"]:
|
||||||
|
env.Append(CPPDEFINES=["TESTS_ENABLED"])
|
||||||
if env["disable_3d"]:
|
if env["disable_3d"]:
|
||||||
if env["tools"]:
|
if env["tools"]:
|
||||||
print(
|
print(
|
||||||
|
@ -641,7 +650,8 @@ if selected_platform in platform_list:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# enable test framework globally and inform it of configuration method
|
# Enable test framework globally and inform it of configuration method.
|
||||||
|
if env["tests"]:
|
||||||
env.Append(CPPDEFINES=["DOCTEST_CONFIG_IMPLEMENT"])
|
env.Append(CPPDEFINES=["DOCTEST_CONFIG_IMPLEMENT"])
|
||||||
|
|
||||||
scons_cache_path = os.environ.get("SCONS_CACHE")
|
scons_cache_path = os.environ.get("SCONS_CACHE")
|
||||||
|
|
|
@ -20,7 +20,7 @@ env.CommandNoCache(
|
||||||
env.Depends("#main/app_icon.gen.h", "#main/app_icon.png")
|
env.Depends("#main/app_icon.gen.h", "#main/app_icon.png")
|
||||||
env.CommandNoCache("#main/app_icon.gen.h", "#main/app_icon.png", run_in_subprocess(main_builders.make_app_icon))
|
env.CommandNoCache("#main/app_icon.gen.h", "#main/app_icon.png", run_in_subprocess(main_builders.make_app_icon))
|
||||||
|
|
||||||
if env["tools"]:
|
if env["tests"]:
|
||||||
SConscript("tests/SCsub")
|
SConscript("tests/SCsub")
|
||||||
|
|
||||||
lib = env.add_library("main", env.main_sources)
|
lib = env.add_library("main", env.main_sources)
|
||||||
|
|
|
@ -55,7 +55,6 @@
|
||||||
#include "main/performance.h"
|
#include "main/performance.h"
|
||||||
#include "main/splash.gen.h"
|
#include "main/splash.gen.h"
|
||||||
#include "main/splash_editor.gen.h"
|
#include "main/splash_editor.gen.h"
|
||||||
#include "main/tests/test_main.h"
|
|
||||||
#include "modules/modules_enabled.gen.h"
|
#include "modules/modules_enabled.gen.h"
|
||||||
#include "modules/register_module_types.h"
|
#include "modules/register_module_types.h"
|
||||||
#include "platform/register_platform_apis.h"
|
#include "platform/register_platform_apis.h"
|
||||||
|
@ -75,6 +74,10 @@
|
||||||
#include "servers/rendering/rendering_server_wrap_mt.h"
|
#include "servers/rendering/rendering_server_wrap_mt.h"
|
||||||
#include "servers/xr_server.h"
|
#include "servers/xr_server.h"
|
||||||
|
|
||||||
|
#ifdef TESTS_ENABLED
|
||||||
|
#include "main/tests/test_main.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
|
|
||||||
#include "editor/doc_data.h"
|
#include "editor/doc_data.h"
|
||||||
|
@ -383,6 +386,7 @@ void Main::print_help(const char *p_binary) {
|
||||||
OS::get_singleton()->print(
|
OS::get_singleton()->print(
|
||||||
" --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n");
|
" --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n");
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef TESTS_ENABLED
|
||||||
OS::get_singleton()->print(" --test <test> Run a unit test [");
|
OS::get_singleton()->print(" --test <test> Run a unit test [");
|
||||||
const char **test_names = tests_get_names();
|
const char **test_names = tests_get_names();
|
||||||
const char *comma = "";
|
const char *comma = "";
|
||||||
|
@ -392,11 +396,13 @@ void Main::print_help(const char *p_binary) {
|
||||||
comma = ", ";
|
comma = ", ";
|
||||||
}
|
}
|
||||||
OS::get_singleton()->print("].\n");
|
OS::get_singleton()->print("].\n");
|
||||||
|
#endif
|
||||||
|
OS::get_singleton()->print("\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int Main::test_entrypoint(int argc, char *argv[], bool &tests_need_run) {
|
int Main::test_entrypoint(int argc, char *argv[], bool &tests_need_run) {
|
||||||
#ifdef TOOLS_ENABLED // templates can't run unit test tool
|
#ifdef TESTS_ENABLED
|
||||||
for (int x = 0; x < argc; x++) {
|
for (int x = 0; x < argc; x++) {
|
||||||
if (strncmp(argv[x], "--test", 6) == 0) {
|
if (strncmp(argv[x], "--test", 6) == 0) {
|
||||||
tests_need_run = true;
|
tests_need_run = true;
|
||||||
|
|
Loading…
Reference in New Issue