first enemy test
This commit is contained in:
105
addons/gut/gut_loader.gd
Normal file
105
addons/gut/gut_loader.gd
Normal file
@ -0,0 +1,105 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# This script should be loaded as soon as possible when running tests. This
|
||||
# will disable warnings and then load all scripts that are registered with the
|
||||
# LazyLoader.
|
||||
#
|
||||
# Once you are ready to run tests, restore_ignore_addons should be called so
|
||||
# that it has the expected value. This should be done after whatever loaded
|
||||
# this is done loading and doing setup stuff.
|
||||
#
|
||||
# This was created after a first attempt to suppress all GUT warnings did not
|
||||
# work for the strictest warning settings. This has turned the LazyLoader into
|
||||
# just a Loader...so maybe all that should be reworked or renamed. A problem
|
||||
# for a time when we are absolutely sure that all warnings are being correctly
|
||||
# suppressed I suppose.
|
||||
#
|
||||
# You can use the cli script test/resources/change_project_warnings.gd to
|
||||
# quickly alter project warning levels for testing purposes.
|
||||
# gdscript test/resources/change_project_warnings.gd --headless ++ -h
|
||||
#
|
||||
# You can set project warning settings from the command line with:
|
||||
# godot -s addons/gut/cli/change_project_warnings.gd ++ -h
|
||||
#
|
||||
# This script should conform to, or ignore, the strictest warning settings.
|
||||
# ------------------------------------------------------------------------------
|
||||
const WARNING_PATH : String = 'debug/gdscript/warnings/'
|
||||
|
||||
|
||||
static var were_addons_disabled : bool = true
|
||||
|
||||
|
||||
@warning_ignore("unsafe_method_access")
|
||||
@warning_ignore("unsafe_property_access")
|
||||
@warning_ignore("untyped_declaration")
|
||||
static func _static_init() -> void:
|
||||
were_addons_disabled = ProjectSettings.get(str(WARNING_PATH, 'exclude_addons'))
|
||||
ProjectSettings.set(str(WARNING_PATH, 'exclude_addons'), true)
|
||||
|
||||
var WarningsManager = load('res://addons/gut/warnings_manager.gd')
|
||||
|
||||
# Turn everything back on (if it originally was on) if the warnings manager
|
||||
# is disabled. This makes sure we see all the warnings for all the scripts
|
||||
# in the LazyLoader (except WarningsManager, but that's not a big deal).
|
||||
#
|
||||
# With the warnings manager disabled and all_warn warnings:
|
||||
# test_warnings_manager.gd -> 5471 errors
|
||||
# full run -> 131,742 errors
|
||||
#
|
||||
# With the warnings manager disabled and gut_default warnings:
|
||||
# test_warnings_manager.gd -> 46 errors
|
||||
# full run -> 165 errors.
|
||||
if(WarningsManager.disabled):
|
||||
ProjectSettings.set(str(WARNING_PATH, 'exclude_addons'), were_addons_disabled)
|
||||
|
||||
# Force a reference to utils.gd by path. Using the class_name would cause
|
||||
# utils.gd to load when this script loads, before we could turn off the
|
||||
# warnings.
|
||||
var _utils : Object = load('res://addons/gut/utils.gd')
|
||||
|
||||
# Since load_all exists on the LazyLoader, it should be done now so nothing
|
||||
# sneaks in later...This essentially defeats the "lazy" part of the
|
||||
# LazyLoader, but not the "loader" part of LazyLoader.
|
||||
_utils.LazyLoader.load_all()
|
||||
|
||||
# Make sure that the values set in WarningsManager's static_init actually
|
||||
# reflect the project settings and not whatever we do here to make things
|
||||
# not warn.
|
||||
WarningsManager._project_warnings.exclude_addons = were_addons_disabled
|
||||
|
||||
|
||||
# this can be called before tests are run to reinstate whatever exclude_addons
|
||||
# was set to before this script disabled it.
|
||||
static func restore_ignore_addons() -> void:
|
||||
ProjectSettings.set(str(WARNING_PATH, 'exclude_addons'), were_addons_disabled)
|
||||
|
||||
|
||||
|
||||
|
||||
# ##############################################################################
|
||||
# (G)odot (U)nit (T)est class
|
||||
#
|
||||
# ##############################################################################
|
||||
# The MIT License (MIT)
|
||||
# =====================
|
||||
#
|
||||
# Copyright (c) 2025 Tom "Butch" Wesley
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
# ##############################################################################
|
Reference in New Issue
Block a user