222 lines
7.2 KiB
GDScript
222 lines
7.2 KiB
GDScript
extends GutInternalTester
|
|
|
|
func should_skip_script():
|
|
return skip_if_debugger_active()
|
|
|
|
|
|
var _added_tracker
|
|
|
|
func before_all():
|
|
gut.error_tracker.disabled = true
|
|
|
|
|
|
func before_each():
|
|
_added_tracker = GutErrorTracker.new()
|
|
GutErrorTracker.register_logger(_added_tracker)
|
|
_added_tracker.errors.items.clear()
|
|
|
|
|
|
func after_each():
|
|
GutErrorTracker.deregister_logger(_added_tracker)
|
|
_added_tracker = null
|
|
|
|
|
|
func after_all():
|
|
gut.error_tracker.disabled = false
|
|
|
|
func _divide_these(a, b):
|
|
return a / b
|
|
|
|
|
|
func _assert_a_equals_b(a, b, extra_text):
|
|
assert(a == b, extra_text)
|
|
|
|
|
|
func test_can_make_one():
|
|
var inst = GutErrorTracker.new()
|
|
assert_not_null(inst)
|
|
|
|
|
|
func test_add_gut_error_adds_error_to_none():
|
|
var inst = GutErrorTracker.new()
|
|
var err = inst.add_gut_error('this is an error')
|
|
|
|
assert_eq(err.code, 'this is an error', 'code')
|
|
assert_eq(err.error_type, GutUtils.GUT_ERROR_TYPE, 'error_type')
|
|
assert_true(err.is_gut_error(), 'is_gut_error')
|
|
assert_eq(inst.errors.items[GutUtils.NO_TEST][0], err, 'tracked')
|
|
assert_false(err.is_engine_error(), 'is_engine_error')
|
|
|
|
|
|
func test_when_adding_gut_error_during_a_test_addtional_info_filled_in():
|
|
var inst = GutErrorTracker.new()
|
|
inst.start_test('test_when_adding_gut_error_during_a_test_addtional_info_filled_in')
|
|
var err = inst.add_gut_error('error in a test')
|
|
|
|
assert_eq(err.function, 'test_when_adding_gut_error_during_a_test_addtional_info_filled_in')
|
|
assert_eq(err.file, "res://test/unit/test_error_tracker.gd")
|
|
# use between because the line number keeps changing as I work and a range
|
|
# is a good enough check that we are getting an expected value back.
|
|
assert_between(err.line, 40, 60, 'this can break if this file changes')
|
|
assert_eq(err.backtrace[0].function, 'test_when_adding_gut_error_during_a_test_addtional_info_filled_in')
|
|
|
|
|
|
func test_when_engine_error_data():
|
|
_divide_these(22, 'foo')
|
|
var last_error = _added_tracker.errors.items[GutUtils.NO_TEST][0]
|
|
assert_not_null(last_error)
|
|
assert_true(last_error.is_engine_error())
|
|
|
|
|
|
func test_when_push_error_data():
|
|
push_error("manually pushed error")
|
|
var last_error = _added_tracker.errors.items[GutUtils.NO_TEST][0]
|
|
assert_not_null(last_error)
|
|
assert_true(last_error.is_push_error())
|
|
|
|
|
|
# func test_assert_fails_data():
|
|
# _assert_a_equals_b('foo', 'bar', '')
|
|
# var err = _added_tracker.errors.items[GutErrorTracker.NO_TEST][0]
|
|
# assert_not_null(err)
|
|
# assert_true(err.is_assert())
|
|
# assert_eq(err.error_type, Logger.ERROR_TYPE_SCRIPT)
|
|
|
|
|
|
# func test_assert_fails_data_with_assert_text():
|
|
# _assert_a_equals_b('foo', 'bar', '')
|
|
# var err = _added_tracker.errors.items[GutErrorTracker.NO_TEST][0]
|
|
# assert_true(err.is_assert())
|
|
|
|
|
|
func test_should_fail_true_for_gut_error():
|
|
_added_tracker.treat_gut_errors_as = GutUtils.TREAT_AS.NOTHING
|
|
_added_tracker.start_test('test')
|
|
_added_tracker.add_gut_error('this is a gut error')
|
|
assert_false(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_true_for_gut_error_when_flag_set():
|
|
# _added_tracker.treat_gut_errors_as = GutErrorTracker.TREAT_AS.FAILURE
|
|
_added_tracker.start_test('test')
|
|
_added_tracker.add_gut_error('this is a gut error')
|
|
assert_true(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_false_for_engine_error():
|
|
_added_tracker.treat_engine_errors_as = GutUtils.TREAT_AS.NOTHING
|
|
_added_tracker.start_test('test')
|
|
_divide_these('word', 'sentence')
|
|
assert_false(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_true_for_engine_error_when_flag_set():
|
|
# _added_tracker.treat_engine_errors_as = GutErrorTracker.TREAT_AS.FAILURE
|
|
_added_tracker.start_test('test')
|
|
_divide_these('word', 'sentence')
|
|
assert_true(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_false_for_push_error():
|
|
_added_tracker.treat_push_error_as = GutUtils.TREAT_AS.NOTHING
|
|
_added_tracker.start_test('test')
|
|
push_error("this is a push error")
|
|
assert_false(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_true_for_push_error_when_flag_set():
|
|
# _added_tracker.treat_push_error_as = GutErrorTracker.TREAT_AS.FAILURE
|
|
_added_tracker.start_test('test')
|
|
push_error("this is a push error")
|
|
assert_true(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_finds_second_error():
|
|
# _added_tracker.treat_gut_errors_as = GutErrorTracker.TREAT_AS.FAILURE
|
|
_added_tracker.start_test('test')
|
|
push_error('this is the first error')
|
|
_added_tracker.add_gut_error('this is a gut error')
|
|
assert_true(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
func test_should_fail_does_not_push_for_engine_error():
|
|
_added_tracker.treat_push_error_as = GutUtils.TREAT_AS.NOTHING
|
|
_added_tracker.treat_gut_errors_as = GutUtils.TREAT_AS.NOTHING
|
|
_added_tracker.start_test('test')
|
|
push_error('this is the first error')
|
|
_added_tracker.add_gut_error('this is a gut error')
|
|
assert_false(_added_tracker.should_test_fail_from_errors('test'))
|
|
|
|
|
|
# var fail_text_params = ParameterFactory.named_parameters(
|
|
# ['error_fail', 'gut_fail', 'push_fail', 'do_error', 'do_push', 'do_gut'],
|
|
# [GutErrorTracker.TREAT_AS.FAILURE, GutErrorTracker.TREAT_AS.NOTHING, GutErrorTracker.TREAT_AS.NOTHING,
|
|
# true, false, false]
|
|
# )
|
|
# func test_fail_text(params=use_parameters(fail_text_params)):
|
|
# _added_tracker.treat_engine_errors_as = params.error_fail
|
|
|
|
|
|
func test_fail_text_includes_all_by_default():
|
|
push_error('push nope')
|
|
_added_tracker.add_gut_error('gut error nope')
|
|
_divide_these('nope', 44)
|
|
|
|
var error_text = _added_tracker.get_fail_text_for_errors()
|
|
|
|
assert_string_contains(error_text, 'Invalid operands')
|
|
assert_string_contains(error_text, 'gut error nope')
|
|
assert_string_contains(error_text, 'push nope')
|
|
|
|
|
|
func test_fail_text_can_exclude_push():
|
|
_added_tracker.treat_push_error_as = GutUtils.TREAT_AS.NOTHING
|
|
|
|
push_error('push nope')
|
|
_added_tracker.add_gut_error('gut error nope')
|
|
_divide_these('nope', 44)
|
|
|
|
var error_text = _added_tracker.get_fail_text_for_errors()
|
|
|
|
assert_string_contains(error_text, 'Invalid operands')
|
|
assert_string_contains(error_text, 'gut error nope')
|
|
assert_eq(error_text.find("push nope"), -1)
|
|
|
|
|
|
func test_fail_text_can_exclude_engine_error():
|
|
_added_tracker.treat_engine_errors_as = GutUtils.TREAT_AS.NOTHING
|
|
|
|
push_error('push nope')
|
|
_added_tracker.add_gut_error('gut error nope')
|
|
_divide_these('nope', 44)
|
|
|
|
var error_text = _added_tracker.get_fail_text_for_errors()
|
|
|
|
assert_eq(error_text.find('Invalid operands'), -1)
|
|
assert_string_contains(error_text, 'gut error nope')
|
|
assert_string_contains(error_text, 'push nope')
|
|
|
|
|
|
func test_fail_text_can_exclude_gut_error():
|
|
_added_tracker.treat_gut_errors_as = GutUtils.TREAT_AS.NOTHING
|
|
|
|
push_error('push nope')
|
|
_added_tracker.add_gut_error('gut error nope')
|
|
_divide_these('nope', 44)
|
|
|
|
var error_text = _added_tracker.get_fail_text_for_errors()
|
|
|
|
assert_string_contains(error_text, 'Invalid operands')
|
|
assert_eq(error_text.find('gut error nope'), -1)
|
|
assert_string_contains(error_text, 'push nope')
|
|
|
|
|
|
func test_should_fail_false_for_push_warning():
|
|
push_warning("Warning, live without warning")
|
|
assert_false(_added_tracker.should_test_fail_from_errors(GutUtils.NO_TEST))
|
|
|
|
|
|
func test_get_errors_for_test_contains_warnings():
|
|
push_warning("emergency evacuation protest")
|
|
var errors = _added_tracker.errors.items[GutUtils.NO_TEST]
|
|
assert_eq(errors.size(), 1) |