summaryrefslogtreecommitdiff
path: root/addons/gut/gut.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gut/gut.gd')
-rw-r--r--addons/gut/gut.gd58
1 files changed, 35 insertions, 23 deletions
diff --git a/addons/gut/gut.gd b/addons/gut/gut.gd
index bc00f76..6e5dc02 100644
--- a/addons/gut/gut.gd
+++ b/addons/gut/gut.gd
@@ -38,9 +38,6 @@ var _inner_class_name = ''
var _should_maximize = false setget set_should_maximize, get_should_maximize
var _log_level = 1 setget set_log_level, get_log_level
var _disable_strict_datatype_checks = false setget disable_strict_datatype_checks, is_strict_datatype_checks_disabled
-var _test_prefix = 'test_'
-var _file_prefix = 'test_'
-var _file_extension = '.gd'
var _inner_class_prefix = 'Test'
var _temp_directory = 'user://gut_temp_directory'
var _export_path = '' setget set_export_path, get_export_path
@@ -138,6 +135,8 @@ var _before_all_test_obj = load('res://addons/gut/test_collector.gd').Test.new()
# Used for proper assert tracking and printing during after_all
var _after_all_test_obj = load('res://addons/gut/test_collector.gd').Test.new()
+
+var _file_prefix = 'test_'
const SIGNAL_TESTS_FINISHED = 'tests_finished'
const SIGNAL_STOP_YIELD_BEFORE_TEARDOWN = 'stop_yield_before_teardown'
@@ -602,33 +601,36 @@ func _do_yield_between(frames=2):
_yield_frames = frames
return self
+
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
func _wait_for_done(result):
- var iter_counter = 0
- var print_after = 3
-
# callback method sets waiting to false.
result.connect(COMPLETED, self, '_on_test_script_yield_completed')
if(!_was_yield_method_called):
- _lgr.log('-- Yield detected, waiting --', _lgr.fmts.yellow)
+ _lgr.yield_msg('-- Yield detected, waiting --')
_was_yield_method_called = false
_waiting = true
- _wait_timer.set_wait_time(0.4)
+ var cycles_per_dot = 500
+ var cycles = 0
var dots = ''
+
while(_waiting):
- iter_counter += 1
- _lgr.yield_text('waiting' + dots)
- _wait_timer.start()
- yield(_wait_timer, 'timeout')
- dots += '.'
- if(dots.length() > 5):
- dots = ''
+ yield(get_tree(), 'idle_frame')
+ cycles += 1
+
+ if(cycles >= cycles_per_dot):
+ cycles = 0
+ dots += '.'
+ if(dots.length() > 5):
+ dots = ''
+ _lgr.yield_text('waiting' + dots)
_lgr.end_yield()
+
# ------------------------------------------------------------------------------
# returns self so it can be integrated into the yield call.
# ------------------------------------------------------------------------------
@@ -637,6 +639,7 @@ func _wait_for_continue_button():
_waiting = true
return self
+
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
func _call_deprecated_script_method(script, method, alt):
@@ -895,8 +898,11 @@ func _test_the_scripts(indexes=[]):
# _run_test calls _wait for done, just wait for that to finish
yield(script_result, COMPLETED)
- if(_current_test.assert_count == 0 and !_current_test.pending):
+ if(!_current_test.did_assert()):
_lgr.warn('Test did not assert')
+
+ _gui.add_test(_current_test.did_pass())
+
_current_test.has_printed_name = false
_gui.set_progress_test_value(i + 1)
emit_signal('test_finished')
@@ -949,7 +955,8 @@ func _pass(text=''):
func _fail(text=''):
_gui.add_failing() # increments counters
if(_current_test != null):
- var line_text = ' at line ' + str(_extract_line_number(_current_test))
+ var line_number = _extract_line_number(_current_test)
+ var line_text = ' at line ' + str(line_number)
p(line_text, LOG_LEVEL_FAIL_ONLY)
# format for summary
line_text = "\n " + line_text
@@ -959,6 +966,7 @@ func _fail(text=''):
_new_summary.add_fail(_current_test.name, call_count_text + text + line_text)
_current_test.passed = false
_current_test.assert_count += 1
+ _current_test.line_number = line_number
else:
if(_new_summary != null): # b/c of tests.
_new_summary.add_fail('script level', text)
@@ -1074,7 +1082,9 @@ func test_scripts(run_rest=false):
if(_script_name != null and _script_name != ''):
var indexes = _get_indexes_matching_script_name(_script_name)
if(indexes == []):
- _lgr.error('Could not find script matching ' + _script_name)
+ _lgr.error(str(
+ "Could not find script matching '", _script_name, "'.\n",
+ "Check your directory settings and Script Prefix/Suffix settings."))
else:
_test_the_scripts(indexes)
else:
@@ -1110,7 +1120,7 @@ func add_script(script):
# with the suffix. Does not look in sub directories. Can be called multiple
# times.
# ------------------------------------------------------------------------------
-func add_directory(path, prefix=_file_prefix, suffix=_file_extension):
+func add_directory(path, prefix=_file_prefix, suffix=".gd"):
# check for '' b/c the calls to addin the exported directories 1-6 will pass
# '' if the field has not been populated. This will cause res:// to be
# processed which will include all files if include_subdirectories is true.
@@ -1124,7 +1134,9 @@ func add_directory(path, prefix=_file_prefix, suffix=_file_extension):
else:
var files = _get_files(path, prefix, suffix)
for i in range(files.size()):
- add_script(files[i])
+ if(_script_name == null or _script_name == '' or \
+ (_script_name != null and files[i].findn(_script_name) != -1)):
+ add_script(files[i])
# ------------------------------------------------------------------------------
@@ -1358,7 +1370,7 @@ func set_yield_time(time, text=''):
msg += ' --'
else:
msg += ': ' + text + ' --'
- _lgr.log(msg, _lgr.fmts.yellow)
+ _lgr.yield_msg(msg)
_was_yield_method_called = true
return self
@@ -1375,7 +1387,7 @@ func set_yield_frames(frames, text=''):
msg += ' --'
else:
msg += ': ' + text + ' --'
- _lgr.log(msg, _lgr.fmts.yellow)
+ _lgr.yield_msg(msg)
_was_yield_method_called = true
_yield_frames = max(frames + 1, 1)
@@ -1393,7 +1405,7 @@ func set_yield_signal_or_time(obj, signal_name, max_wait, text=''):
_yield_timer.set_wait_time(max_wait)
_yield_timer.start()
_was_yield_method_called = true
- _lgr.log(str('-- Yielding to signal "', signal_name, '" or for ', max_wait, ' seconds -- ', text), _lgr.fmts.yellow)
+ _lgr.yield_msg(str('-- Yielding to signal "', signal_name, '" or for ', max_wait, ' seconds -- ', text))
return self
# ------------------------------------------------------------------------------