chore: add GUT test framework
This commit is contained in:
106
addons/gut/scratch/find_bad_methods.gd
Normal file
106
addons/gut/scratch/find_bad_methods.gd
Normal file
@@ -0,0 +1,106 @@
|
||||
extends SceneTree
|
||||
# ##############################################################################
|
||||
# I used to this to try and find all the built-in methods that I shouldn't
|
||||
# double. it has some useful examples in it so I'll keep it around for a bit.
|
||||
# ##############################################################################
|
||||
|
||||
var Doubler = load('res://addons/gut/doubler.gd')
|
||||
|
||||
var DOUBLE_ME_PATH = 'res://test/resources/doubler_test_objects/double_me.gd'
|
||||
var DoubleMe = load(DOUBLE_ME_PATH)
|
||||
|
||||
var DOUBLE_EXTENDS_NODE2D = 'res://test/resources/doubler_test_objects/double_extends_node2d.gd'
|
||||
var DoubleExtendsNode2d = load(DOUBLE_EXTENDS_NODE2D)
|
||||
|
||||
var ARGS = 'args'
|
||||
var FLAGS = 'flags'
|
||||
var NAME = 'name'
|
||||
|
||||
var _local_black_list = ['draw_char']
|
||||
|
||||
func it_worked(path):
|
||||
print('it worked: ', path)
|
||||
|
||||
func it_didnt(path):
|
||||
print("it didn't work: ", path)
|
||||
|
||||
# gets a list of all the unique methods that aren't of flag==65.
|
||||
func get_full_blacklist(obj):
|
||||
var list = []
|
||||
var methods = obj.get_method_list()
|
||||
|
||||
for i in range(methods.size()):
|
||||
var flag = methods[i][FLAGS]
|
||||
var name = methods[i][NAME]
|
||||
|
||||
if(flag != 65):
|
||||
if(!list.has(name)):
|
||||
list.append(name)
|
||||
|
||||
return list
|
||||
|
||||
# make a new doubler with common props.
|
||||
func new_doubler():
|
||||
var doubler = Doubler.new()
|
||||
doubler.set_output_dir('user://doubler_temp_files/')
|
||||
return doubler
|
||||
|
||||
# Use the output from this method to determine which methods should be added
|
||||
# to the doubler's blacklist. Each iteration of the loop a method is removed
|
||||
# from the blacklist and a double is made. Check for errors in the output to
|
||||
# find methods that should not be doubled.
|
||||
#
|
||||
# Creates a blacklist and puts it on the doubler. It then loops through all of
|
||||
# them removing the first element from the array and trying to double the object.
|
||||
# It then adds the removed one at the end so that we don't keep getting errors
|
||||
# for each bad method.
|
||||
#
|
||||
# This also uses a local blacklist with methods that cause everytning to blow
|
||||
# up. These methods should also be in doubler's blacklist.
|
||||
func remove_methods_from_blacklist_one_by_one(obj, path):
|
||||
var doubler = new_doubler()
|
||||
doubler._blacklist = get_full_blacklist(obj)
|
||||
|
||||
for _i in range(doubler._blacklist.size()):
|
||||
|
||||
var removed = doubler._blacklist[0]
|
||||
doubler._blacklist.remove_at(0)
|
||||
if(!_local_black_list.has(removed)):
|
||||
print(removed)
|
||||
var inst = doubler.double(path)
|
||||
if(inst == null):
|
||||
print("didn't work")
|
||||
else:
|
||||
print('skipped ', removed)
|
||||
|
||||
doubler._blacklist.append(removed)
|
||||
|
||||
|
||||
# given a path it will create a double of it and then create an instance of the
|
||||
# doubled object checking for nulls along the way. Thi is what I used to test
|
||||
# the black lists for various objects.
|
||||
func double_and_instance_it(path):
|
||||
var doubler = new_doubler()
|
||||
|
||||
var doubled = doubler.double(path)
|
||||
var inst = null
|
||||
if(doubled == null):
|
||||
it_didnt(path)
|
||||
else:
|
||||
inst = doubled.new()
|
||||
if(inst != null):
|
||||
it_worked(path)
|
||||
else:
|
||||
it_didnt(path)
|
||||
return inst
|
||||
|
||||
# main
|
||||
func _init():
|
||||
var n = Node2D.new()
|
||||
remove_methods_from_blacklist_one_by_one(DoubleMe.new(), DOUBLE_ME_PATH)
|
||||
var inst = double_and_instance_it(DOUBLE_ME_PATH)
|
||||
|
||||
remove_methods_from_blacklist_one_by_one(DoubleExtendsNode2d.new(), DOUBLE_EXTENDS_NODE2D)
|
||||
inst = double_and_instance_it(DOUBLE_EXTENDS_NODE2D)
|
||||
n.print_orphan_nodes()
|
||||
quit()
|
||||
Reference in New Issue
Block a user