mirror of
https://github.com/lihop/godot-xterm.git
synced 2025-05-03 20:14:22 +02:00
Add GUT (CLI only) and remove gd-plug
Commit GUT directly to the git repo and remove gd-plug as it is no longer required to install GUT. Modify GUT to be used by command-line only. For example: ``` cp test/.gutconfig.ci.json .gutconfig.json godot --no-window -s addons/gut/gut_cmdln.gd ```
This commit is contained in:
parent
b14ea64492
commit
d784b53e25
52 changed files with 11394 additions and 1174 deletions
179
addons/gut/diff_tool.gd
Normal file
179
addons/gut/diff_tool.gd
Normal file
|
@ -0,0 +1,179 @@
|
|||
extends "res://addons/gut/compare_result.gd"
|
||||
const INDENT = " "
|
||||
enum { DEEP, SHALLOW, SIMPLE }
|
||||
|
||||
var _utils = load("res://addons/gut/utils.gd").get_instance()
|
||||
var _strutils = _utils.Strutils.new()
|
||||
var _compare = _utils.Comparator.new()
|
||||
var DiffTool = load("res://addons/gut/diff_tool.gd")
|
||||
|
||||
var _value_1 = null
|
||||
var _value_2 = null
|
||||
var _total_count = 0
|
||||
var _diff_type = null
|
||||
var _brackets = null
|
||||
var _valid = true
|
||||
var _desc_things = "somethings"
|
||||
|
||||
|
||||
# -------- comapre_result.gd "interface" ---------------------
|
||||
func set_are_equal(val):
|
||||
_block_set("are_equal", val)
|
||||
|
||||
|
||||
func get_are_equal():
|
||||
return are_equal()
|
||||
|
||||
|
||||
func set_summary(val):
|
||||
_block_set("summary", val)
|
||||
|
||||
|
||||
func get_summary():
|
||||
return summarize()
|
||||
|
||||
|
||||
func get_different_count():
|
||||
return differences.size()
|
||||
|
||||
|
||||
func get_total_count():
|
||||
return _total_count
|
||||
|
||||
|
||||
func get_short_summary():
|
||||
var text = str(
|
||||
_strutils.truncate_string(str(_value_1), 50),
|
||||
" ",
|
||||
_compare.get_compare_symbol(are_equal()),
|
||||
" ",
|
||||
_strutils.truncate_string(str(_value_2), 50)
|
||||
)
|
||||
if !are_equal():
|
||||
text += str(
|
||||
" ",
|
||||
get_different_count(),
|
||||
" of ",
|
||||
get_total_count(),
|
||||
" ",
|
||||
_desc_things,
|
||||
" do not match."
|
||||
)
|
||||
return text
|
||||
|
||||
|
||||
func get_brackets():
|
||||
return _brackets
|
||||
|
||||
|
||||
# -------- comapre_result.gd "interface" ---------------------
|
||||
|
||||
|
||||
func _invalidate():
|
||||
_valid = false
|
||||
differences = null
|
||||
|
||||
|
||||
func _init(v1, v2, diff_type = DEEP):
|
||||
_value_1 = v1
|
||||
_value_2 = v2
|
||||
_diff_type = diff_type
|
||||
_compare.set_should_compare_int_to_float(false)
|
||||
_find_differences(_value_1, _value_2)
|
||||
|
||||
|
||||
func _find_differences(v1, v2):
|
||||
if _utils.are_datatypes_same(v1, v2):
|
||||
if typeof(v1) == TYPE_ARRAY:
|
||||
_brackets = {"open": "[", "close": "]"}
|
||||
_desc_things = "indexes"
|
||||
_diff_array(v1, v2)
|
||||
elif typeof(v2) == TYPE_DICTIONARY:
|
||||
_brackets = {"open": "{", "close": "}"}
|
||||
_desc_things = "keys"
|
||||
_diff_dictionary(v1, v2)
|
||||
else:
|
||||
_invalidate()
|
||||
_utils.get_logger().error("Only Arrays and Dictionaries are supported.")
|
||||
else:
|
||||
_invalidate()
|
||||
_utils.get_logger().error("Only Arrays and Dictionaries are supported.")
|
||||
|
||||
|
||||
func _diff_array(a1, a2):
|
||||
_total_count = max(a1.size(), a2.size())
|
||||
for i in range(a1.size()):
|
||||
var result = null
|
||||
if i < a2.size():
|
||||
if _diff_type == DEEP:
|
||||
result = _compare.deep(a1[i], a2[i])
|
||||
else:
|
||||
result = _compare.simple(a1[i], a2[i])
|
||||
else:
|
||||
result = _compare.simple(a1[i], _compare.MISSING, "index")
|
||||
|
||||
if !result.are_equal:
|
||||
differences[i] = result
|
||||
|
||||
if a1.size() < a2.size():
|
||||
for i in range(a1.size(), a2.size()):
|
||||
differences[i] = _compare.simple(_compare.MISSING, a2[i], "index")
|
||||
|
||||
|
||||
func _diff_dictionary(d1, d2):
|
||||
var d1_keys = d1.keys()
|
||||
var d2_keys = d2.keys()
|
||||
|
||||
# Process all the keys in d1
|
||||
_total_count += d1_keys.size()
|
||||
for key in d1_keys:
|
||||
if !d2.has(key):
|
||||
differences[key] = _compare.simple(d1[key], _compare.MISSING, "key")
|
||||
else:
|
||||
d2_keys.remove(d2_keys.find(key))
|
||||
|
||||
var result = null
|
||||
if _diff_type == DEEP:
|
||||
result = _compare.deep(d1[key], d2[key])
|
||||
else:
|
||||
result = _compare.simple(d1[key], d2[key])
|
||||
|
||||
if !result.are_equal:
|
||||
differences[key] = result
|
||||
|
||||
# Process all the keys in d2 that didn't exist in d1
|
||||
_total_count += d2_keys.size()
|
||||
for i in range(d2_keys.size()):
|
||||
differences[d2_keys[i]] = _compare.simple(_compare.MISSING, d2[d2_keys[i]], "key")
|
||||
|
||||
|
||||
func summarize():
|
||||
var summary = ""
|
||||
|
||||
if are_equal():
|
||||
summary = get_short_summary()
|
||||
else:
|
||||
var formatter = load("res://addons/gut/diff_formatter.gd").new()
|
||||
formatter.set_max_to_display(max_differences)
|
||||
summary = formatter.make_it(self)
|
||||
|
||||
return summary
|
||||
|
||||
|
||||
func are_equal():
|
||||
if !_valid:
|
||||
return null
|
||||
else:
|
||||
return differences.size() == 0
|
||||
|
||||
|
||||
func get_diff_type():
|
||||
return _diff_type
|
||||
|
||||
|
||||
func get_value_1():
|
||||
return _value_1
|
||||
|
||||
|
||||
func get_value_2():
|
||||
return _value_2
|
Loading…
Add table
Add a link
Reference in a new issue