Port ClassDB tests to use doctest

Extracted the most minimal core initialization functionality from
`setup()` and `setup2()` so that `ClassDB` could be tested properly
(input, audio, rendering, physics etc, are excluded).

Display and rendering servers/singletons are not initialized at all.

Due to the fact that most subsystems are disabled, fixed various crashes in the
process (in order):
- `AcceptDialog` OK/cancel swap behavior (used `DisplayServer` while
  `register_scene_types()`);
- `make_default_theme` which depends on `RenderingServer`;
- `XRServer` singleton access while calling `register_modules_types()`;
- hidden bug in a way joypads are cleaned up (MacOS and Linux only).

Removed manual `ClassDB` init/cleanup calls from `test_validate_testing.h`.

ClassDB tests:

Co-authored-by: Ignacio Etcheverry <ignalfonsore@gmail.com>
This commit is contained in:
Andrii Doroshenko (Xrayez)
2020-08-02 21:30:56 +03:00
parent 87ae509905
commit 6f426c3360
11 changed files with 905 additions and 903 deletions

View File

@@ -35,9 +35,11 @@
void register_mobile_vr_types() {
ClassDB::register_class<MobileVRInterface>();
Ref<MobileVRInterface> mobile_vr;
mobile_vr.instance();
XRServer::get_singleton()->add_interface(mobile_vr);
if (XRServer::get_singleton()) {
Ref<MobileVRInterface> mobile_vr;
mobile_vr.instance();
XRServer::get_singleton()->add_interface(mobile_vr);
}
}
void unregister_mobile_vr_types() {