Move compile result stuff out of specific stages.
This commit is contained in:
63
Test.jai
63
Test.jai
@@ -174,7 +174,7 @@ run_codegen_test :: (file_path : string, result : *Compile_Result, output_type :
|
||||
|
||||
run_codegen_test :: (result : *Compile_Result, output_type : Output_Type = 0) -> Result {
|
||||
result_data : Result;
|
||||
result_data.path = result.files[0].file.path;
|
||||
result_data.path = result.file.path;
|
||||
result_text : string;
|
||||
|
||||
codegen(result);
|
||||
@@ -185,7 +185,7 @@ run_codegen_test :: (result : *Compile_Result, output_type : Output_Type = 0) ->
|
||||
return result_data;
|
||||
}
|
||||
|
||||
result_text = result.files[0].codegen_result_text;
|
||||
result_text = result.codegen_result_text;
|
||||
|
||||
if output_type & .StdOut {
|
||||
result_data.info_text = result_text;
|
||||
@@ -193,7 +193,7 @@ run_codegen_test :: (result : *Compile_Result, output_type : Output_Type = 0) ->
|
||||
return result_data;
|
||||
}
|
||||
|
||||
golden_path := get_golden_path(result.files[0].file.path, .Codegen);
|
||||
golden_path := get_golden_path(result.file.path, .Codegen);
|
||||
do_golden_comparison(golden_path, result_text, *result_data, output_type);
|
||||
return result_data;
|
||||
}
|
||||
@@ -225,7 +225,7 @@ run_lexer_test :: (file_path : string, result : *Compile_Result, output_type : O
|
||||
result_data.type = .Failed;
|
||||
result_text = report_messages(result.messages);
|
||||
} else {
|
||||
result_text = pretty_print_tokens(result.files[0].tokens.tokens, *temp);
|
||||
result_text = pretty_print_tokens(result.tokens.tokens, *temp);
|
||||
}
|
||||
|
||||
if output_type & .StdOut {
|
||||
@@ -259,14 +259,14 @@ run_parser_test :: (file_path : string, result : *Compile_Result, output_type :
|
||||
run_parser_test :: (result : *Compile_Result, output_type : Output_Type = 0) -> Result {
|
||||
parse(result);
|
||||
result_data : Result;
|
||||
result_data.path = result.files[0].file.path;
|
||||
result_data.path = result.file.path;
|
||||
result_text : string;
|
||||
|
||||
if result.had_error {
|
||||
result_data.type = .Failed;
|
||||
result_text = report_messages(result.messages,, temp);
|
||||
} else {
|
||||
result_text = pretty_print_ast(result.files[0].ast_root, *temp);
|
||||
result_text = pretty_print_ast(result.root, *temp);
|
||||
}
|
||||
|
||||
if output_type & .StdOut {
|
||||
@@ -275,14 +275,14 @@ run_parser_test :: (result : *Compile_Result, output_type : Output_Type = 0) ->
|
||||
return result_data;
|
||||
}
|
||||
|
||||
golden_path := get_golden_path(result.files[0].file.path, .Parser);
|
||||
golden_path := get_golden_path(result.file.path, .Parser);
|
||||
do_golden_comparison(golden_path, result_text, *result_data, output_type);
|
||||
return result_data;
|
||||
}
|
||||
|
||||
run_semantic_analysis_test :: (result : *Compile_Result, output_type : Output_Type = 0) -> Result {
|
||||
result_data : Result;
|
||||
result_data.path = result.files[0].file.path;
|
||||
result_data.path = result.file.path;
|
||||
result_text : string;
|
||||
|
||||
check(result);
|
||||
@@ -300,7 +300,7 @@ run_semantic_analysis_test :: (result : *Compile_Result, output_type : Output_Ty
|
||||
return result_data;
|
||||
}
|
||||
|
||||
golden_path := get_golden_path(result.files[0].file.path, .Semantic_Analysis);
|
||||
golden_path := get_golden_path(result.file.path, .Semantic_Analysis);
|
||||
do_golden_comparison(golden_path, result_text, *result_data, output_type);
|
||||
return result_data;
|
||||
}
|
||||
@@ -318,7 +318,7 @@ run_semantic_analysis_test :: (file_path : string, result : *Compile_Result, out
|
||||
return result_data;
|
||||
}
|
||||
|
||||
result_data = run_semantic_analysis_test(result, output_type);;
|
||||
result_data = run_semantic_analysis_test(result, output_type);
|
||||
|
||||
return result_data;
|
||||
}
|
||||
@@ -334,6 +334,7 @@ make_test_case :: (path : string, stage_flags : Stage_Flags, allocator := contex
|
||||
|
||||
run_test_new :: (file_path : string, stage_flags : Stage_Flags, results : *[..]Result, output_type : Output_Type = 0) {
|
||||
compile_result : Compile_Result;
|
||||
add_file(*compile_result, file_path);
|
||||
result : Result;
|
||||
if stage_flags & .Lexer {
|
||||
result = run_lexer_test(file_path, *compile_result, output_type);
|
||||
@@ -372,8 +373,8 @@ run_test_new :: (file_path : string, stage_flags : Stage_Flags, results : *[..]R
|
||||
}
|
||||
}
|
||||
|
||||
run_test :: (test_case : Test_Case, results : *[..]Result, output_type : Output_Type = 0, builder : *String_Builder) {
|
||||
print_to_builder(builder, "%Running test: %......", cyan(), test_case.path);
|
||||
run_test :: (test_case : Test_Case, results : *[..]Result, output_type : Output_Type = 0) {
|
||||
print("%Running test: %......", cyan(), test_case.path);
|
||||
|
||||
// path 30
|
||||
// len 35
|
||||
@@ -387,7 +388,7 @@ run_test :: (test_case : Test_Case, results : *[..]Result, output_type : Output_
|
||||
len := 50;
|
||||
rest := len - test_case.path.count;
|
||||
for i: 0..rest {
|
||||
append(builder, " ");
|
||||
print(" ");
|
||||
}
|
||||
|
||||
run_test_new(test_case.path, test_case.stage_flags, results, output_type);
|
||||
@@ -416,7 +417,7 @@ run_test_suite :: (using suite : *Test_Suite, output_type : Output_Type = 0) {
|
||||
init_string_builder(*builder,, temp);
|
||||
|
||||
for test_case : test_cases {
|
||||
run_test(test_case, *suite.results, output_type, *builder);
|
||||
run_test(test_case, *suite.results, output_type);
|
||||
|
||||
for < suite.results {
|
||||
result := suite.results[it_index];
|
||||
@@ -432,7 +433,7 @@ run_test_suite :: (using suite : *Test_Suite, output_type : Output_Type = 0) {
|
||||
array_add(*failed_test_paths, .{ result.path, tprint("golden file not found for %", stage_to_string(result.stage)) });
|
||||
}
|
||||
}
|
||||
evaluate_result(result, *builder);
|
||||
evaluate_result(result);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
@@ -530,42 +531,42 @@ stage_to_string :: (stage : Stage_Flags) -> string {
|
||||
}
|
||||
}
|
||||
|
||||
evaluate_result :: (result : Result, builder : *String_Builder) {
|
||||
evaluate_result :: (result : Result) {
|
||||
stage : string = stage_to_string(result.stage);
|
||||
|
||||
if #complete result.type == {
|
||||
case .File_Read_Failed; {
|
||||
print_to_builder(builder, " %", red());
|
||||
print_to_builder(builder, "failed with File_Read_Failed\n");
|
||||
print(" %", red());
|
||||
print("failed with File_Read_Failed\n");
|
||||
}
|
||||
case .Golden_File_Not_Found; {
|
||||
print_to_builder(builder, " %", red());
|
||||
print_to_builder(builder, "failed with Golden File Not Found for stage %\n", stage);
|
||||
print(" %", red());
|
||||
print("failed with Golden File Not Found for stage %\n", stage);
|
||||
}
|
||||
case .StdOut; {
|
||||
}
|
||||
case .Golden_Output; {
|
||||
print_to_builder(builder, " %", yellow());
|
||||
print_to_builder(builder, "output new golden file at %\n", result.golden_path);
|
||||
print(" %", yellow());
|
||||
print("output new golden file at %\n", result.golden_path);
|
||||
}
|
||||
case .Passed; {
|
||||
print_to_builder(builder, " %", green());
|
||||
print_to_builder(builder, "passed %\n", stage);
|
||||
print(" %", green());
|
||||
print("passed %\n", stage);
|
||||
}
|
||||
case .Failed; {
|
||||
print_to_builder(builder, " %", red());
|
||||
print_to_builder(builder, "failed %\n", stage);
|
||||
print(" %", red());
|
||||
print("failed %\n", stage);
|
||||
}
|
||||
}
|
||||
|
||||
if result.info_text.count > 0 {
|
||||
print_to_builder(builder, "%", cyan());
|
||||
print_to_builder(builder, "--- Info text ---\n");
|
||||
print_to_builder(builder, "%", yellow());
|
||||
print_to_builder(builder, "%\n", result.info_text);
|
||||
print("%", cyan());
|
||||
print("--- Info text ---\n");
|
||||
print("%", yellow());
|
||||
print("%\n", result.info_text);
|
||||
}
|
||||
|
||||
print_to_builder(builder, "%", reset_color());
|
||||
print("%", reset_color());
|
||||
}
|
||||
|
||||
main :: () {
|
||||
|
||||
Reference in New Issue
Block a user