From 8adaf4efd42907af12e085844c8a51de10ebd38c Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Fri, 3 Jul 2020 17:53:48 +0300 Subject: [PATCH] cgen: allow `-printfn main` for _test.v files too --- vlib/v/gen/cgen.v | 40 +--------------------------------------- vlib/v/gen/cmain.v | 44 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 5103040609..d15390835a 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -144,7 +144,7 @@ pub fn cgen(files []ast.File, table &table.Table, pref &pref.Preferences) string if g.file.path.ends_with('_test.v') { g.is_test = is_test } - if g.file.path == '' || is_test || !g.pref.autofree { + if g.file.path == '' || !g.pref.autofree { // cgen test or building V // println('autofree=false') g.autofree = false @@ -3650,44 +3650,6 @@ fn (g Gen) type_default(typ table.Type) string { */ } -pub fn (mut g Gen) write_tests_main() { - g.includes.writeln('#include // write_tests_main') - g.definitions.writeln('int g_test_oks = 0;') - g.definitions.writeln('int g_test_fails = 0;') - g.definitions.writeln('jmp_buf g_jump_buffer;') - $if windows { - g.writeln('int wmain() {') - } $else { - g.writeln('int main() {') - } - g.writeln('\t_vinit();') - g.writeln('') - all_tfuncs := g.get_all_test_function_names() - if g.pref.is_stats { - g.writeln('\tmain__BenchedTests bt = main__start_testing($all_tfuncs.len, tos_lit("$g.pref.path"));') - } - for t in all_tfuncs { - g.writeln('') - if g.pref.is_stats { - g.writeln('\tmain__BenchedTests_testing_step_start(&bt, tos_lit("$t"));') - } - g.writeln('\tif (!setjmp(g_jump_buffer)) ${t}();') - if g.pref.is_stats { - g.writeln('\tmain__BenchedTests_testing_step_end(&bt);') - } - } - g.writeln('') - if g.pref.is_stats { - g.writeln('\tmain__BenchedTests_end_testing(&bt);') - } - g.writeln('') - if g.autofree { - g.writeln('\t_vcleanup();') - } - g.writeln('\treturn g_test_fails > 0;') - g.writeln('}') -} - fn (g Gen) get_all_test_function_names() []string { mut tfuncs := []string{} mut tsuite_begin := '' diff --git a/vlib/v/gen/cmain.v b/vlib/v/gen/cmain.v index 706d034d90..518242a3c1 100644 --- a/vlib/v/gen/cmain.v +++ b/vlib/v/gen/cmain.v @@ -14,7 +14,7 @@ pub fn (mut g Gen) gen_c_main() { g.gen_c_main_footer() if g.pref.printfn_list.len > 0 && 'main' in g.pref.printfn_list { println(g.out.after(main_fn_start_pos)) - } + } } fn (mut g Gen) gen_c_main_header() { @@ -67,3 +67,45 @@ pub fn (mut g Gen) gen_c_main_footer() { g.writeln('\treturn 0;') g.writeln('}') } + +pub fn (mut g Gen) write_tests_main() { + g.includes.writeln('#include // write_tests_main') + g.definitions.writeln('int g_test_oks = 0;') + g.definitions.writeln('int g_test_fails = 0;') + g.definitions.writeln('jmp_buf g_jump_buffer;') + main_fn_start_pos := g.out.len + $if windows { + g.writeln('int wmain() {') + } $else { + g.writeln('int main() {') + } + g.writeln('\t_vinit();') + g.writeln('') + all_tfuncs := g.get_all_test_function_names() + if g.pref.is_stats { + g.writeln('\tmain__BenchedTests bt = main__start_testing($all_tfuncs.len, tos_lit("$g.pref.path"));') + } + for t in all_tfuncs { + g.writeln('') + if g.pref.is_stats { + g.writeln('\tmain__BenchedTests_testing_step_start(&bt, tos_lit("$t"));') + } + g.writeln('\tif (!setjmp(g_jump_buffer)) ${t}();') + if g.pref.is_stats { + g.writeln('\tmain__BenchedTests_testing_step_end(&bt);') + } + } + g.writeln('') + if g.pref.is_stats { + g.writeln('\tmain__BenchedTests_end_testing(&bt);') + } + g.writeln('') + if g.autofree { + g.writeln('\t_vcleanup();') + } + g.writeln('\treturn g_test_fails > 0;') + g.writeln('}') + if g.pref.printfn_list.len > 0 && 'main' in g.pref.printfn_list { + println(g.out.after(main_fn_start_pos)) + } +}