diff options
Diffstat (limited to 'modules/gdscript/tests')
8 files changed, 102 insertions, 12 deletions
| diff --git a/modules/gdscript/tests/gdscript_test_runner.cpp b/modules/gdscript/tests/gdscript_test_runner.cpp index e8ddf90836..ea51990237 100644 --- a/modules/gdscript/tests/gdscript_test_runner.cpp +++ b/modules/gdscript/tests/gdscript_test_runner.cpp @@ -70,7 +70,7 @@ void init_autoloads() {  			continue;  		} -		RES res = ResourceLoader::load(info.path); +		Ref<Resource> res = ResourceLoader::load(info.path);  		ERR_CONTINUE_MSG(res.is_null(), "Can't autoload: " + info.path);  		Node *n = nullptr;  		Ref<PackedScene> scn = res; @@ -80,7 +80,7 @@ void init_autoloads() {  		} else if (script.is_valid()) {  			StringName ibt = script->get_instance_base_type();  			bool valid_type = ClassDB::is_parent_class(ibt, "Node"); -			ERR_CONTINUE_MSG(!valid_type, "Script does not inherit a Node: " + info.path); +			ERR_CONTINUE_MSG(!valid_type, "Script does not inherit from Node: " + info.path);  			Object *obj = ClassDB::instantiate(ibt); @@ -229,7 +229,7 @@ bool GDScriptTestRunner::generate_outputs() {  bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {  	Error err = OK; -	DirAccessRef dir(DirAccess::open(p_dir, &err)); +	Ref<DirAccess> dir(DirAccess::open(p_dir, &err));  	if (err != OK) {  		return false; @@ -254,7 +254,7 @@ bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {  #ifndef DEBUG_ENABLED  				// On release builds, skip tests marked as debug only.  				Error open_err = OK; -				FileAccessRef script_file(FileAccess::open(current_dir.plus_file(next), FileAccess::READ, &open_err)); +				Ref<FileAccess> script_file(FileAccess::open(current_dir.plus_file(next), FileAccess::READ, &open_err));  				if (open_err != OK) {  					ERR_PRINT(vformat(R"(Couldn't open test file "%s".)", next));  					next = dir->get_next(); @@ -286,7 +286,7 @@ bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {  bool GDScriptTestRunner::make_tests() {  	Error err = OK; -	DirAccessRef dir(DirAccess::open(source_dir, &err)); +	Ref<DirAccess> dir(DirAccess::open(source_dir, &err));  	ERR_FAIL_COND_V_MSG(err != OK, false, "Could not open specified test directory."); @@ -611,7 +611,7 @@ bool GDScriptTest::generate_output() {  	}  	Error err = OK; -	FileAccessRef out_file = FileAccess::open(output_file, FileAccess::WRITE, &err); +	Ref<FileAccess> out_file = FileAccess::open(output_file, FileAccess::WRITE, &err);  	if (err != OK) {  		return false;  	} @@ -620,7 +620,6 @@ bool GDScriptTest::generate_output() {  	output += "\n"; // Make sure to insert newline for CI static checks.  	out_file->store_string(output); -	out_file->close();  	return true;  } diff --git a/modules/gdscript/tests/gdscript_test_runner.h b/modules/gdscript/tests/gdscript_test_runner.h index 1a950c6898..d6c6419e21 100644 --- a/modules/gdscript/tests/gdscript_test_runner.h +++ b/modules/gdscript/tests/gdscript_test_runner.h @@ -63,8 +63,8 @@ public:  private:  	struct ErrorHandlerData { -		TestResult *result; -		GDScriptTest *self; +		TestResult *result = nullptr; +		GDScriptTest *self = nullptr;  		ErrorHandlerData(TestResult *p_result, GDScriptTest *p_this) {  			result = p_result;  			self = p_this; diff --git a/modules/gdscript/tests/scripts/analyzer/errors/invalid_array_index.out b/modules/gdscript/tests/scripts/analyzer/errors/invalid_array_index.out index 015ad756f8..6f7f0783f0 100644 --- a/modules/gdscript/tests/scripts/analyzer/errors/invalid_array_index.out +++ b/modules/gdscript/tests/scripts/analyzer/errors/invalid_array_index.out @@ -1,2 +1,2 @@  GDTEST_ANALYZER_ERROR -Invalid index type "bool" for a base of type "Array". +Cannot get index "true" from "[0, 1]". diff --git a/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.gd b/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.gd new file mode 100644 index 0000000000..cc78309ae4 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.gd @@ -0,0 +1,58 @@ +# https://github.com/godotengine/godot/issues/50285 + +@warning_ignore(unused_local_constant) +func test(): +	const CONST_INNER_DICTIONARY = { "key": true } +	const CONST_NESTED_DICTIONARY_OLD_WORKAROUND = { +		"key1": "value1", +		"key2": CONST_INNER_DICTIONARY +	} +	# All of these should be valid +	const CONST_NESTED_DICTIONARY = { +		"key1": "value1", +		"key2": { "key": true } +	} + + +	const CONST_DICTIONARY_WITH_ARRAY = { +		"key1": [1,2,3,4] +	} + +	const CONST_NESTED_ARRAY = [[],[2],[1,2,3]] +	const CONST_ARRAY_WITH_DICT = [{"key1": 3}, {"key2": 5}] + +	const THREE_DIMENSIONAL_ARRAY = [[[],[],[]],[[],[],[]],[[],[],[]]] +	const MANY_NESTED_DICT = { +		"key1": { +			"key11": { +				"key111": {}, +				"key112": {}, +			}, +			"key12": { +				"key121": {}, +				"key122": {}, +			}, +		}, +		"key2": { +			"key21": { +				"key211": {}, +				"key212": {}, +			}, +			"key22": { +				"key221": {}, +				"key222": {}, +			}, +		} +	} + + +	const CONST_ARRAY_ACCESS = [1,2,3][0] +	const CONST_DICT_ACCESS = {"key1": 5}["key1"] + +	const CONST_ARRAY_NESTED_ACCESS = [[1,2,3],[4,5,6],[8,9,10]][0][1] +	const CONST_DICT_NESTED_ACCESS = {"key1": {"key2": 1}}["key1"]["key2"] + +	print(CONST_ARRAY_ACCESS) +	print(CONST_DICT_ACCESS) +	print(CONST_ARRAY_NESTED_ACCESS) +	print(CONST_DICT_NESTED_ACCESS) diff --git a/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.out b/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.out new file mode 100644 index 0000000000..5883fc5c18 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/features/arrays_dictionaries_nested_const.out @@ -0,0 +1,5 @@ +GDTEST_OK +1 +5 +2 +1 diff --git a/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.gd b/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.gd new file mode 100644 index 0000000000..3d063869ab --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.gd @@ -0,0 +1,23 @@ +var member = "foo" + +func bar(): +	print("bar") + +func test(): +	var lambda1 = func(): +		print(member) +	lambda1.call() + +	var lambda2 = func(): +		var nested = func(): +			print(member) +		nested.call() +	lambda2.call() + +	var lambda3 = func(): +		bar() +	lambda3.call() + +	var lambda4 = func(): +		return self +	print(lambda4.call() == self) diff --git a/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.out b/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.out new file mode 100644 index 0000000000..53d602b234 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/lambda_use_self.out @@ -0,0 +1,5 @@ +GDTEST_OK +foo +foo +bar +true diff --git a/modules/gdscript/tests/test_gdscript.cpp b/modules/gdscript/tests/test_gdscript.cpp index 4255030b4e..d8f60d5e9b 100644 --- a/modules/gdscript/tests/test_gdscript.cpp +++ b/modules/gdscript/tests/test_gdscript.cpp @@ -204,8 +204,8 @@ void test(TestType p_type) {  		return;  	} -	FileAccessRef fa = FileAccess::open(test, FileAccess::READ); -	ERR_FAIL_COND_MSG(!fa, "Could not open file: " + test); +	Ref<FileAccess> fa = FileAccess::open(test, FileAccess::READ); +	ERR_FAIL_COND_MSG(fa.is_null(), "Could not open file: " + test);  	// Initialize the language for the test routine.  	init_language(fa->get_path_absolute().get_base_dir()); |