Browse Source

GDScript: Only include script file path in test error output

Errors originating in C++ files cause unnecessary diffs whenever the engine is updated
(line number changes, etc.) and would cause CI failures due to different formatting
of the file path on Windows (backslashes, worked around here anyway) and when using
SCU builds (`../scu` insert).
Rémi Verschelde 2 years ago
parent
commit
c40adf027d

+ 10 - 4
modules/gdscript/tests/gdscript_test_runner.cpp

@@ -392,6 +392,9 @@ void GDScriptTest::error_handler(void *p_this, const char *p_function, const cha
 
 
 	StringBuilder builder;
 	StringBuilder builder;
 	builder.append(">> ");
 	builder.append(">> ");
+	// Only include the file path and line for script errors, otherwise the test
+	// outputs include arbitrary data which can change when we edit engine code.
+	bool include_path = false;
 	switch (p_type) {
 	switch (p_type) {
 		case ERR_HANDLER_ERROR:
 		case ERR_HANDLER_ERROR:
 			builder.append("ERROR");
 			builder.append("ERROR");
@@ -401,6 +404,7 @@ void GDScriptTest::error_handler(void *p_this, const char *p_function, const cha
 			break;
 			break;
 		case ERR_HANDLER_SCRIPT:
 		case ERR_HANDLER_SCRIPT:
 			builder.append("SCRIPT ERROR");
 			builder.append("SCRIPT ERROR");
+			include_path = true;
 			break;
 			break;
 		case ERR_HANDLER_SHADER:
 		case ERR_HANDLER_SHADER:
 			builder.append("SHADER ERROR");
 			builder.append("SHADER ERROR");
@@ -413,10 +417,12 @@ void GDScriptTest::error_handler(void *p_this, const char *p_function, const cha
 	builder.append("\n>> on function: ");
 	builder.append("\n>> on function: ");
 	builder.append(String::utf8(p_function));
 	builder.append(String::utf8(p_function));
 	builder.append("()\n>> ");
 	builder.append("()\n>> ");
-	builder.append(String::utf8(p_file).trim_prefix(self->base_dir));
-	builder.append("\n>> ");
-	builder.append(itos(p_line));
-	builder.append("\n>> ");
+	if (include_path) {
+		builder.append(String::utf8(p_file).trim_prefix(self->base_dir).replace("\\", "/"));
+		builder.append("\n>> ");
+		builder.append(itos(p_line));
+		builder.append("\n>> ");
+	}
 	builder.append(String::utf8(p_error));
 	builder.append(String::utf8(p_error));
 	if (strlen(p_explanation) > 0) {
 	if (strlen(p_explanation) > 0) {
 		builder.append("\n>> ");
 		builder.append("\n>> ");

+ 0 - 2
modules/gdscript/tests/scripts/runtime/errors/typed_array_assign_wrong_to_typed.out

@@ -1,7 +1,5 @@
 GDTEST_RUNTIME_ERROR
 GDTEST_RUNTIME_ERROR
 >> ERROR
 >> ERROR
 >> on function: assign()
 >> on function: assign()
->> core/variant/array.cpp
->> 222
 >> Method/function failed.
 >> Method/function failed.
 not ok
 not ok