diff --git a/cmd/tools/modules/testing/common.v b/cmd/tools/modules/testing/common.v index b89e0793e8..fe8f921053 100644 --- a/cmd/tools/modules/testing/common.v +++ b/cmd/tools/modules/testing/common.v @@ -4,6 +4,7 @@ import os import time import term import benchmark +import sync import sync.pool import v.pref import v.util.vtest @@ -281,13 +282,17 @@ pub fn (mut ts TestSession) test() { ts.append_message(.sentinel, '') // send the sentinel _ := <-ts.nprint_ended // wait for the stop of the printing thread eprintln(term.h_divider('-')) + ts.show_list_of_failed_tests() // cleanup generated .tmp.c files after successful tests: if ts.benchmark.nfail == 0 { if ts.rm_binaries { os.rmdir_all(ts.vtmp_dir) or {} } } - ts.show_list_of_failed_tests() + // remove empty session folders: + if os.ls(ts.vtmp_dir) or { [] }.len == 0 { + os.rmdir_all(ts.vtmp_dir) or {} + } } fn worker_trunner(mut p pool.PoolProcessor, idx int, thread_id int) voidptr { @@ -343,10 +348,8 @@ fn worker_trunner(mut p pool.PoolProcessor, idx int, thread_id int) voidptr { } generated_binary_fpath := os.join_path_single(tmpd, generated_binary_fname) if produces_file_output { - if os.exists(generated_binary_fpath) { - if ts.rm_binaries { - os.rm(generated_binary_fpath) or {} - } + if ts.rm_binaries { + os.rm(generated_binary_fpath) or {} } cmd_options << ' -o ${os.quoted_path(generated_binary_fpath)}' @@ -439,7 +442,7 @@ fn worker_trunner(mut p pool.PoolProcessor, idx int, thread_id int) voidptr { } } } - if produces_file_output && os.exists(generated_binary_fpath) && ts.rm_binaries { + if produces_file_output && ts.rm_binaries { os.rm(generated_binary_fpath) or {} } return pool.no_result @@ -571,7 +574,7 @@ pub fn header(msg string) { pub fn setup_new_vtmp_folder() string { now := time.sys_mono_now() - new_vtmp_dir := os.join_path(os.temp_dir(), 'v', 'test_session_$now') + new_vtmp_dir := os.join_path(os.temp_dir(), 'v', 'tsession_${sync.thread_id().hex()}_$now') os.mkdir_all(new_vtmp_dir) or { panic(err) } os.setenv('VTMP', new_vtmp_dir, true) return new_vtmp_dir diff --git a/cmd/tools/test_if_v_test_system_works.v b/cmd/tools/test_if_v_test_system_works.v index 39d057230e..909838aab2 100644 --- a/cmd/tools/test_if_v_test_system_works.v +++ b/cmd/tools/test_if_v_test_system_works.v @@ -26,13 +26,11 @@ fn get_vexe_path() string { } fn new_tdir() string { - tdir_ := os.join_path(os.temp_dir(), rand.ulid()) - if os.exists(tdir_) { - os.rmdir(tdir_) or { panic(err) } - } - os.mkdir(tdir_) or { panic(err) } + dir := os.join_path(os.temp_dir(), 'v', rand.ulid()) + os.rmdir_all(dir) or {} + os.mkdir_all(dir) or { panic(err) } C.atexit(cleanup_tdir) - return tdir_ + return dir } fn cleanup_tdir() { diff --git a/cmd/tools/vbump_test.v b/cmd/tools/vbump_test.v index 6f8dbe0b71..7089f7a39d 100644 --- a/cmd/tools/vbump_test.v +++ b/cmd/tools/vbump_test.v @@ -1,5 +1,17 @@ import os +const vexe = @VEXE + +const tfolder = os.join_path(os.temp_dir(), 'v', 'vbump') + +fn testsuite_begin() { + os.mkdir_all(tfolder) or {} +} + +fn testsuite_end() { + os.rmdir_all(tfolder) or {} +} + struct BumpTestCase { file_name string contents string @@ -62,10 +74,7 @@ fn main() { ] fn run_individual_test(case BumpTestCase) ? { - vexe := @VEXE - - temp_dir := os.temp_dir() - test_file := os.join_path_single(temp_dir, case.file_name) + test_file := os.join_path_single(tfolder, case.file_name) os.rm(test_file) or {} os.write_file(test_file, case.contents)? diff --git a/cmd/tools/vcheck-md.v b/cmd/tools/vcheck-md.v index 9e51c3ee88..bb362609bd 100644 --- a/cmd/tools/vcheck-md.v +++ b/cmd/tools/vcheck-md.v @@ -22,7 +22,7 @@ const ( show_progress = os.getenv('GITHUB_JOB') == '' && '-silent' !in os.args non_option_args = cmdline.only_non_options(os.args[2..]) is_verbose = os.getenv('VERBOSE') != '' - vcheckfolder = os.join_path_single(os.temp_dir(), 'vcheck_$os.getuid()') + vcheckfolder = os.join_path(os.temp_dir(), 'v', 'vcheck_$os.getuid()') ) struct CheckResult { diff --git a/cmd/tools/vcreate_test.v b/cmd/tools/vcreate_test.v index ecf9e0e665..58b36405db 100644 --- a/cmd/tools/vcreate_test.v +++ b/cmd/tools/vcreate_test.v @@ -1,6 +1,6 @@ import os -const test_path = 'vcreate_test' +const test_path = os.join_path(os.temp_dir(), 'v', 'vcreate_test') fn init_and_check() ? { os.execute_or_exit('${os.quoted_path(@VEXE)} init') @@ -59,42 +59,27 @@ fn init_and_check() ? { ].join_lines() } -fn test_v_init() ? { - dir := os.join_path(os.temp_dir(), test_path) - os.rmdir_all(dir) or {} - os.mkdir(dir) or {} - defer { - os.rmdir_all(dir) or {} - } - os.chdir(dir)? +fn prepare_test_path() ? { + os.rmdir_all(test_path) or {} + os.mkdir_all(test_path) or {} + os.chdir(test_path)? +} +fn test_v_init() ? { + prepare_test_path()? init_and_check()? } fn test_v_init_in_git_dir() ? { - dir := os.join_path(os.temp_dir(), test_path) - os.rmdir_all(dir) or {} - os.mkdir(dir) or {} - defer { - os.rmdir_all(dir) or {} - } - os.chdir(dir)? + prepare_test_path()? os.execute_or_exit('git init .') init_and_check()? } fn test_v_init_no_overwrite_gitignore() ? { - dir := os.join_path(os.temp_dir(), test_path) - os.rmdir_all(dir) or {} - os.mkdir(dir) or {} - os.write_file('$dir/.gitignore', 'blah')? - defer { - os.rmdir_all(dir) or {} - } - os.chdir(dir)? - + prepare_test_path()? + os.write_file('.gitignore', 'blah')? os.execute_or_exit('${os.quoted_path(@VEXE)} init') - assert os.read_file('.gitignore')? == 'blah' } @@ -110,19 +95,15 @@ trim_trailing_whitespace = true indent_style = tab indent_size = 4 ' - - dir := os.join_path(os.temp_dir(), test_path) - os.rmdir_all(dir) or {} - os.mkdir(dir) or {} - os.write_file('$dir/.gitattributes', git_attributes_content)? - os.write_file('$dir/.editorconfig', editor_config_content)? - defer { - os.rmdir_all(dir) or {} - } - os.chdir(dir)? - + prepare_test_path()? + os.write_file('.gitattributes', git_attributes_content)? + os.write_file('.editorconfig', editor_config_content)? os.execute_or_exit('${os.quoted_path(@VEXE)} init') assert os.read_file('.gitattributes')? == git_attributes_content assert os.read_file('.editorconfig')? == editor_config_content } + +fn testsuite_end() { + os.rmdir_all(test_path) or {} +} diff --git a/cmd/tools/vrepl.v b/cmd/tools/vrepl.v index e4f5a195c4..8cda7ec4f4 100644 --- a/cmd/tools/vrepl.v +++ b/cmd/tools/vrepl.v @@ -17,6 +17,7 @@ mut: in_func bool // are we inside a new custom user function line string // the current line entered by the user is_pin bool // does the repl 'pin' entered source code + folder string // the folder in which the repl will write its temporary source files // modules []string // all the import modules alias map[string]string // all the alias used in the import @@ -35,22 +36,26 @@ const vexe = os.getenv('VEXE') const vstartup = os.getenv('VSTARTUP') +const repl_folder = os.join_path(os.temp_dir(), 'v', 'repl') + enum FnType { @none void fn_type } -fn new_repl() Repl { +fn new_repl(folder string) Repl { + vstartup_source := os.read_file(vstartup) or { '' }.trim_right('\n\r').split_into_lines() + os.mkdir_all(folder) or {} return Repl{ readline: readline.Readline{ skip_empty: true } + folder: folder modules: ['os', 'time', 'math'] - vstartup_lines: os.read_file(vstartup) or { '' }.trim_right('\n\r').split_into_lines() - // Test file used to check if a function as a void return or a - // value return. - eval_func_lines: os.read_file(vstartup) or { '' }.trim_right('\n\r').split_into_lines() + vstartup_lines: vstartup_source + // Test file used to check if a function as a void return or a value return. + eval_func_lines: vstartup_source } } @@ -173,7 +178,7 @@ fn (r &Repl) current_source_code(should_add_temp_lines bool, not_add_print bool) // This function checks which one we have: fn (r &Repl) check_fn_type_kind(new_line string) FnType { source_code := r.current_source_code(true, false) + '\nprintln($new_line)' - check_file := os.join_path(os.temp_dir(), '${rand.ulid()}.vrepl.check.v') + check_file := os.join_path(r.folder, '${rand.ulid()}.vrepl.check.v') os.write_file(check_file, source_code) or { panic(err) } defer { os.rm(check_file) or {} @@ -296,7 +301,7 @@ fn run_repl(workdir string, vrepl_prefix string) int { } cleanup_files([file, temp_file]) } - mut r := new_repl() + mut r := new_repl(workdir) for { if r.indent == 0 { prompt = '>>> ' @@ -359,7 +364,7 @@ fn run_repl(workdir string, vrepl_prefix string) int { continue } if r.line == 'reset' { - r = new_repl() + r = new_repl(workdir) continue } if r.line == 'list' { @@ -517,7 +522,7 @@ fn main() { // so that the repl can be launched in parallel by several different // threads by the REPL test runner. args := cmdline.options_after(os.args, ['repl']) - replfolder := os.real_path(cmdline.option(args, '-replfolder', os.temp_dir())) + replfolder := os.real_path(cmdline.option(args, '-replfolder', repl_folder)) replprefix := cmdline.option(args, '-replprefix', 'noprefix.${rand.ulid()}.') if !os.exists(os.getenv('VEXE')) { println('Usage:') diff --git a/cmd/tools/vwipe-cache.v b/cmd/tools/vwipe-cache.v index 988b7c262a..cc4660ac31 100644 --- a/cmd/tools/vwipe-cache.v +++ b/cmd/tools/vwipe-cache.v @@ -2,12 +2,18 @@ module main import os import v.vcache +import v.util fn main() { - mut cm := vcache.new_cache_manager([]) - cpath := cm.basepath + wipe_path(vcache.new_cache_manager([]).basepath, 'V cache') + wipe_path(util.get_vtmp_folder(), 'V tmp.c') + wipe_path(os.join_path(os.temp_dir(), 'v'), 'V tests') +} + +fn wipe_path(cpath string, label string) { if os.exists(cpath) && os.is_dir(cpath) { os.rmdir_all(cpath) or {} } - println('V cache folder $cpath was wiped.') + os.mkdir_all(cpath) or {} + println('$label folder $cpath was wiped.') } diff --git a/vlib/net/unix/unix_test.v b/vlib/net/unix/unix_test.v index fd4a6db1be..d3cea9e6a1 100644 --- a/vlib/net/unix/unix_test.v +++ b/vlib/net/unix/unix_test.v @@ -1,7 +1,17 @@ import os import net.unix -const test_port = os.join_path(os.temp_dir(), 'unix_domain_socket') +const tfolder = os.join_path(os.temp_dir(), 'v', 'unix_test') + +const test_port = os.join_path(tfolder, 'unix_domain_socket') + +fn testsuite_begin() { + os.mkdir_all(tfolder) or {} +} + +fn testsuite_end() { + os.rmdir_all(tfolder) or {} +} fn handle_conn(mut c unix.StreamConn) { for { diff --git a/vlib/net/unix/use_net_and_net_unix_together_test.v b/vlib/net/unix/use_net_and_net_unix_together_test.v index d544a12f45..96774d8a18 100644 --- a/vlib/net/unix/use_net_and_net_unix_together_test.v +++ b/vlib/net/unix/use_net_and_net_unix_together_test.v @@ -5,7 +5,17 @@ import net // ensure that `net` is used, i.e. no warnings const use_net = net.no_timeout -const test_port = os.join_path(os.temp_dir(), 'unix_domain_socket') +const tfolder = os.join_path(os.temp_dir(), 'v', 'net_and_unix_together') + +const test_port = os.join_path(tfolder, 'unix_domain_socket') + +fn testsuite_begin() { + os.mkdir_all(tfolder) or {} +} + +fn testsuite_end() { + os.rmdir_all(tfolder) or {} +} fn test_that_net_and_net_unix_can_be_imported_together_without_conflicts() ? { mut l := unix.listen_stream(test_port) or { panic(err) } diff --git a/vlib/orm/orm_sql_or_blocks_test.v b/vlib/orm/orm_sql_or_blocks_test.v index 6609840025..18f4ff00a1 100644 --- a/vlib/orm/orm_sql_or_blocks_test.v +++ b/vlib/orm/orm_sql_or_blocks_test.v @@ -6,7 +6,17 @@ struct User { name string [unique] } -const db_path = os.join_path(os.temp_dir(), 'sql_statement_or_blocks.db') +const db_folder = os.join_path(os.temp_dir(), 'v', 'orm_sql') + +const db_path = os.join_path(db_folder, 'sql_statement_or_blocks.db') + +fn testsuite_begin() { + os.mkdir_all(db_folder) or {} +} + +fn testsuite_end() { + os.rmdir_all(db_folder) or {} +} fn test_ensure_db_exists_and_user_table_is_ok() ? { mut db := sqlite.connect(db_path)? diff --git a/vlib/os/os_test.v b/vlib/os/os_test.v index f2d8a3d9c4..609357ae2d 100644 --- a/vlib/os/os_test.v +++ b/vlib/os/os_test.v @@ -106,7 +106,7 @@ fn test_create_file() ? { fn test_is_file() { // Setup - work_dir := os.join_path_single(os.getwd(), 'is_file_test') + work_dir := os.join_path_single(tfolder, 'is_file_test') os.mkdir_all(work_dir) or { panic(err) } tfile := os.join_path_single(work_dir, 'tmp_file') // Test things that shouldn't be a file @@ -309,7 +309,7 @@ fn test_cp() { } fn test_mv() { - work_dir := os.join_path_single(os.getwd(), 'mv_test') + work_dir := os.join_path_single(tfolder, 'mv_test') os.mkdir_all(work_dir) or { panic(err) } // Setup test files tfile1 := os.join_path_single(work_dir, 'file') @@ -404,7 +404,7 @@ fn test_realpath_non_existing() { fn test_realpath_existing() { existing_file_name := 'existing_file.txt' - existing_file := os.join_path_single(os.temp_dir(), existing_file_name) + existing_file := os.join_path_single(tfolder, existing_file_name) os.rm(existing_file) or {} os.write_file(existing_file, 'abc') or {} assert os.exists(existing_file) diff --git a/vlib/os/process_test.v b/vlib/os/process_test.v index 1a1d1c4885..a50c50973e 100644 --- a/vlib/os/process_test.v +++ b/vlib/os/process_test.v @@ -6,12 +6,14 @@ import time const ( vexe = os.getenv('VEXE') vroot = os.dir(vexe) - test_os_process = os.join_path(os.temp_dir(), 'v', 'test_os_process.exe') + tfolder = os.join_path(os.temp_dir(), 'v', 'tests', 'os_process') + test_os_process = os.join_path(tfolder, 'test_os_process.exe') test_os_process_source = os.join_path(vroot, 'cmd/tools/test_os_process.v') ) fn testsuite_begin() ? { - os.rm(test_os_process) or {} + os.rmdir_all(tfolder) or {} + os.mkdir_all(tfolder)? if os.getenv('WINE_TEST_OS_PROCESS_EXE') != '' { // Make it easier to run the test under wine emulation, by just // prebuilding the executable with: @@ -24,6 +26,10 @@ fn testsuite_begin() ? { assert os.exists(test_os_process) } +fn testsuite_end() ? { + os.rmdir_all(tfolder) or {} +} + fn test_getpid() { pid := os.getpid() eprintln('current pid: $pid') diff --git a/vlib/stbi/stbi_test.v b/vlib/stbi/stbi_test.v index 71219f91d7..e9fe1ef2c5 100644 --- a/vlib/stbi/stbi_test.v +++ b/vlib/stbi/stbi_test.v @@ -1,6 +1,16 @@ import os import stbi +const tfolder = os.join_path(os.temp_dir(), 'v', 'stbi') + +fn testsuite_begin() { + os.mkdir_all(tfolder) or {} +} + +fn testsuite_end() { + os.rmdir_all(tfolder) or {} +} + fn test_stbi_read_write() { vroot := @VEXEROOT path := os.join_path(vroot, 'examples', 'assets', 'logo.png') @@ -8,7 +18,7 @@ fn test_stbi_read_write() { d_s := stbi.load(path) or { panic(err) } println('Image source data:\n $d_s') - out_path := os.join_path(os.temp_dir(), 'test.png') + out_path := os.join_path(tfolder, 'test.png') println('Out path: $out_path') stbi.stbi_write_png(out_path, d_s.width, d_s.height, 4, d_s.data, d_s.width * 4) or { panic(err) diff --git a/vlib/toml/tests/toml_test.v b/vlib/toml/tests/toml_test.v index ceb08f475d..d31e923840 100644 --- a/vlib/toml/tests/toml_test.v +++ b/vlib/toml/tests/toml_test.v @@ -68,7 +68,7 @@ fn test_toml() { } fn test_toml_file() { - out_path := os.join_path(os.temp_dir(), 'v_toml_tests') + out_path := os.join_path(os.temp_dir(), 'v', 'toml_tests') test_file := os.join_path(out_path, 'toml_example.toml') os.mkdir_all(out_path) or { assert false } defer { diff --git a/vlib/v/builder/builder_test.v b/vlib/v/builder/builder_test.v index db97789caf..632a8f85a7 100644 --- a/vlib/v/builder/builder_test.v +++ b/vlib/v/builder/builder_test.v @@ -2,44 +2,44 @@ module main import os -const test_path = 'v_run_check' +const test_path = os.join_path(os.temp_dir(), 'v', 'run_check') + +const vexe = @VEXE + +fn testsuite_begin() { + os.mkdir_all(test_path) or {} +} + +fn testsuite_end() { + os.rmdir_all(test_path) or {} +} fn test_conditional_executable_removal() ? { - // Setup the sample project - dir := os.join_path(os.temp_dir(), test_path) + os.chdir(test_path)? + os.execute_or_exit('${os.quoted_path(vexe)} init') - os.rmdir_all(dir) or {} - os.mkdir(dir) or {} - - defer { - os.rmdir_all(dir) or {} - } - - os.chdir(dir)? - os.execute_or_exit('${os.quoted_path(@VEXE)} init') - - mut executable := test_path + mut executable := 'run_check' $if windows { executable += '.exe' } - original_file_list_ := os.ls(dir)? + original_file_list_ := os.ls(test_path)? dump(original_file_list_) assert executable !in original_file_list_ - assert os.execute('${os.quoted_path(@VEXE)} run .').output.trim_space() == 'Hello World!' - after_run_file_list := os.ls(dir)? + assert os.execute('${os.quoted_path(vexe)} run .').output.trim_space() == 'Hello World!' + after_run_file_list := os.ls(test_path)? dump(after_run_file_list) assert executable !in after_run_file_list - assert os.execute('${os.quoted_path(@VEXE)} .').exit_code == 0 + assert os.execute('${os.quoted_path(vexe)} .').exit_code == 0 assert os.execute('./$executable').output.trim_space() == 'Hello World!' - after_compilation__ := os.ls(dir)? + after_compilation__ := os.ls(test_path)? dump(after_compilation__) assert executable in after_compilation__ - assert os.execute('${os.quoted_path(@VEXE)} run .').output.trim_space() == 'Hello World!' - after_second_run___ := os.ls(dir)? + assert os.execute('${os.quoted_path(vexe)} run .').output.trim_space() == 'Hello World!' + after_second_run___ := os.ls(test_path)? dump(after_second_run___) assert executable in after_second_run___ } diff --git a/vlib/v/builder/interpreterbuilder/v_interpret_test.v b/vlib/v/builder/interpreterbuilder/v_interpret_test.v index 97b75b1cf7..fb34de397e 100644 --- a/vlib/v/builder/interpreterbuilder/v_interpret_test.v +++ b/vlib/v/builder/interpreterbuilder/v_interpret_test.v @@ -9,7 +9,7 @@ fn interpreter_wrap(a string) string { } fn interp_test(expression string, expected string) ? { - tmpdir := os.join_path(os.temp_dir(), 'v_interpret_test_$rand.ulid()') + tmpdir := os.join_path(os.temp_dir(), 'v', 'interpret_test_$rand.ulid()') os.mkdir_all(tmpdir) or {} defer { os.rmdir_all(tmpdir) or {} diff --git a/vlib/v/gen/c/coutput_test.v b/vlib/v/gen/c/coutput_test.v index 4018cc83f4..3133a74f24 100644 --- a/vlib/v/gen/c/coutput_test.v +++ b/vlib/v/gen/c/coutput_test.v @@ -21,7 +21,7 @@ fn mm(s string) string { fn test_out_files() ? { println(term.colorize(term.green, '> testing whether .out files match:')) os.chdir(vroot) or {} - output_path := os.join_path(os.temp_dir(), 'coutput', 'out') + output_path := os.join_path(os.temp_dir(), 'v', 'coutput', 'out') os.mkdir_all(output_path)? defer { os.rmdir_all(output_path) or {} @@ -92,7 +92,7 @@ fn test_out_files() ? { fn test_c_must_have_files() ? { println(term.colorize(term.green, '> testing whether `.c.must_have` files match:')) os.chdir(vroot) or {} - output_path := os.join_path(os.temp_dir(), 'coutput', 'c_must_have') + output_path := os.join_path(os.temp_dir(), 'v', 'coutput', 'c_must_have') os.mkdir_all(output_path)? defer { os.rmdir_all(output_path) or {} diff --git a/vlib/v/gen/golang/tests/golang_test.v b/vlib/v/gen/golang/tests/golang_test.v index 6482a5b288..db577021b1 100644 --- a/vlib/v/gen/golang/tests/golang_test.v +++ b/vlib/v/gen/golang/tests/golang_test.v @@ -19,8 +19,11 @@ fn test_golang() { dir := os.join_path(vroot, 'vlib/v/gen/golang/tests') files := os.ls(dir) or { panic(err) } // - wrkdir := os.join_path(os.temp_dir(), 'vtests', 'golang') + wrkdir := os.join_path(os.temp_dir(), 'v', 'tests', 'golang') os.mkdir_all(wrkdir) or { panic(err) } + defer { + os.rmdir_all(wrkdir) or {} + } os.chdir(wrkdir) or {} tests := files.filter(it.ends_with('.vv')) if tests.len == 0 { diff --git a/vlib/v/gen/js/jsgen_test.v b/vlib/v/gen/js/jsgen_test.v index c2b74b5a34..70ef00dab8 100644 --- a/vlib/v/gen/js/jsgen_test.v +++ b/vlib/v/gen/js/jsgen_test.v @@ -2,7 +2,7 @@ import os const ( test_dir = os.join_path('vlib', 'v', 'gen', 'js', 'tests') - output_dir = os.join_path(os.temp_dir(), '_js_tests/') + output_dir = os.join_path(os.temp_dir(), 'v', '_js_tests/') v_options = '-b js -w' node_options = '' ) diff --git a/vlib/v/gen/native/tests/native_test.v b/vlib/v/gen/native/tests/native_test.v index 923250102b..a12fe6ac14 100644 --- a/vlib/v/gen/native/tests/native_test.v +++ b/vlib/v/gen/native/tests/native_test.v @@ -20,8 +20,11 @@ fn test_native() { dir := os.join_path(vroot, 'vlib/v/gen/native/tests') files := os.ls(dir) or { panic(err) } // - wrkdir := os.join_path(os.temp_dir(), 'vtests', 'native') + wrkdir := os.join_path(os.temp_dir(), 'v', 'tests', 'native') os.mkdir_all(wrkdir) or { panic(err) } + defer { + os.rmdir_all(wrkdir) or {} + } os.chdir(wrkdir) or {} tests := files.filter(it.ends_with('.vv')) if tests.len == 0 { diff --git a/vlib/v/live/live_test.v b/vlib/v/live/live_test.v index 4804d37046..fd878a25a7 100644 --- a/vlib/v/live/live_test.v +++ b/vlib/v/live/live_test.v @@ -33,16 +33,15 @@ TODO: Cleanup this when/if v has better process control/communication primitives */ const ( vexe = os.getenv('VEXE') - tmp_file = os.join_path(os.temp_dir(), 'generated_live_program.tmp.v') - source_file = os.join_path(os.temp_dir(), 'generated_live_program.v') - genexe_file = os.join_path(os.temp_dir(), 'generated_live_program') - output_file = os.join_path(os.temp_dir(), 'generated_live_program.output.txt') - res_original_file = os.join_path(os.temp_dir(), 'ORIGINAL.txt') - res_changed_file = os.join_path(os.temp_dir(), 'CHANGED.txt') - res_another_file = os.join_path(os.temp_dir(), 'ANOTHER.txt') - res_stop_file = os.join_path(os.temp_dir(), 'STOP.txt') - cleanup_files = [tmp_file, source_file, genexe_file, output_file, res_original_file, - res_changed_file, res_another_file, res_stop_file] + vtmp_folder = os.join_path(os.temp_dir(), 'v', 'tests', 'live') + tmp_file = os.join_path(vtmp_folder, 'generated_live_program.tmp.v') + source_file = os.join_path(vtmp_folder, 'generated_live_program.v') + genexe_file = os.join_path(vtmp_folder, 'generated_live_program') + output_file = os.join_path(vtmp_folder, 'generated_live_program.output.txt') + res_original_file = os.join_path(vtmp_folder, 'ORIGINAL.txt') + res_changed_file = os.join_path(vtmp_folder, 'CHANGED.txt') + res_another_file = os.join_path(vtmp_folder, 'ANOTHER.txt') + res_stop_file = os.join_path(vtmp_folder, 'STOP.txt') live_program_source = get_source_template() ) @@ -69,16 +68,14 @@ fn atomic_write_source(source string) { // fn testsuite_begin() { + os.rmdir_all(vtmp_folder) or {} + os.mkdir_all(vtmp_folder) or {} if os.user_os() !in ['linux', 'solaris'] && os.getenv('FORCE_LIVE_TEST').len == 0 { eprintln('Testing the runtime behaviour of -live mode,') eprintln('is reliable only on Linux/macOS for now.') eprintln('You can still do it by setting FORCE_LIVE_TEST=1 .') exit(0) } - for f in [tmp_file, source_file, output_file, res_original_file, res_changed_file, - res_another_file, res_stop_file] { - os.rm(f) or {} - } atomic_write_source(live_program_source) } @@ -106,9 +103,7 @@ fn testsuite_end() { assert histogram['ORIGINAL'] > 0 assert histogram['CHANGED'] + histogram['ANOTHER'] > 0 // assert histogram['END'] > 0 - for tfile in cleanup_files { - os.rm(tfile) or {} - } + os.rmdir_all(vtmp_folder) or {} } fn change_source(new string) { @@ -120,7 +115,7 @@ fn change_source(new string) { fn wait_for_file(new string) { time.sleep(100 * time.millisecond) - expected_file := os.join_path(os.temp_dir(), new + '.txt') + expected_file := os.join_path(vtmp_folder, new + '.txt') eprintln('waiting for $expected_file ...') max_wait_cycles := edefault('WAIT_CYCLES', '1').int() for i := 0; i <= max_wait_cycles; i++ { diff --git a/vlib/v/pref/options_test.v b/vlib/v/pref/options_test.v index 1752dffe77..d709d8aab8 100644 --- a/vlib/v/pref/options_test.v +++ b/vlib/v/pref/options_test.v @@ -5,6 +5,16 @@ import time const vexe = @VEXE +const tfolder = os.join_path(os.temp_dir(), 'v', 'custom_compile') + +fn testsuite_begin() { + os.mkdir_all(tfolder) or {} +} + +fn testsuite_end() { + os.rmdir_all(tfolder) or {} +} + fn test_cflags() ? { os.chdir(os.real_path(@VMODROOT)) or {} mut debug_arg := '-g3 -O0' @@ -39,10 +49,10 @@ fn test_cflags() ? { fn custom_compile(fname string, cflags_options string) Results { mut res := Results{} - res.exe = os.join_path(os.temp_dir(), fname) + res.exe = os.join_path(tfolder, fname) res.sw = time.new_stopwatch() res.compilation = os.execute('${os.quoted_path(vexe)} -cflags "$cflags_options" -o ${os.quoted_path(res.exe)} examples/hello_world.v') - res.delta = res.sw.elapsed().microseconds() + res.delta = res.sw.elapsed().milliseconds() res.file_size = os.file_size(res.exe) println('> $fname build took: $res.delta ms with "$cflags_options", file size: $res.file_size') return res diff --git a/vlib/v/tests/closure_generator_test.v b/vlib/v/tests/closure_generator_test.v index 565ed0d66a..726eba74c4 100644 --- a/vlib/v/tests/closure_generator_test.v +++ b/vlib/v/tests/closure_generator_test.v @@ -162,7 +162,7 @@ fn test_closure_return_${styp}_${i}() ? { code := v_code.str() println('Compiling V code (${code.count('\n')} lines) ...') - wrkdir := os.join_path(os.temp_dir(), 'vtests', 'closures') + wrkdir := os.join_path(os.temp_dir(), 'v', 'tests', 'closures') os.mkdir_all(wrkdir)? os.chdir(wrkdir)? os.write_file('closure_return_test.v', code)? diff --git a/vlib/v/tests/crun_mode/crun_test.v b/vlib/v/tests/crun_mode/crun_test.v index c3de67d811..a4fc465024 100644 --- a/vlib/v/tests/crun_mode/crun_test.v +++ b/vlib/v/tests/crun_mode/crun_test.v @@ -1,7 +1,7 @@ import os import time -const crun_folder = os.join_path(os.temp_dir(), 'crun_folder') +const crun_folder = os.join_path(os.temp_dir(), 'v', 'crun_folder') const vprogram_file = os.join_path(crun_folder, 'vprogram.vv') diff --git a/vlib/v/tests/run_v_code_from_stdin_test.v b/vlib/v/tests/run_v_code_from_stdin_test.v index f751ec54a2..7ec16d653a 100644 --- a/vlib/v/tests/run_v_code_from_stdin_test.v +++ b/vlib/v/tests/run_v_code_from_stdin_test.v @@ -4,13 +4,19 @@ const vexe = os.getenv('VEXE') const turn_off_vcolors = os.setenv('VCOLORS', 'never', true) +const vtmp_folder = os.join_path(os.temp_dir(), 'v', 'tests', 'run_v_code') + fn test_vexe_is_set() { assert vexe != '' } fn pipe_to_v_run() ? { + os.mkdir_all(vtmp_folder) or {} + defer { + os.rmdir_all(vtmp_folder) or {} + } cat_cmd := if os.user_os() == 'windows' { 'cmd /c type' } else { 'cat' } - tmp_v_file := os.join_path(os.real_path(os.temp_dir()), 'generated_piped_program.v') + tmp_v_file := os.join_path(os.real_path(vtmp_folder), 'generated_piped_program.v') // eprintln('>>> tmp_v_file: $tmp_v_file') os.write_file(tmp_v_file, 'println(1 + 3)\nprintln("hello")\n')? assert os.is_file(tmp_v_file) diff --git a/vlib/v/tests/valgrind/valgrind_test.v b/vlib/v/tests/valgrind/valgrind_test.v index c31300a43f..4b7ec0a4d9 100644 --- a/vlib/v/tests/valgrind/valgrind_test.v +++ b/vlib/v/tests/valgrind/valgrind_test.v @@ -66,7 +66,7 @@ fn test_all() { mut files := os.ls(dir) or { panic(err) } files.sort() // - wrkdir := os.join_path(os.temp_dir(), 'vtests', 'valgrind') + wrkdir := os.join_path(os.temp_dir(), 'v', 'tests', 'valgrind') os.mkdir_all(wrkdir) or { panic(err) } os.chdir(wrkdir) or {} // @@ -122,4 +122,5 @@ fn test_all() { if bench.nfail > 0 { exit(1) } + os.rmdir_all(wrkdir) or {} } diff --git a/vlib/v/vcache/vcache_test.v b/vlib/v/vcache/vcache_test.v index 31ecfbd798..f7e064eab0 100644 --- a/vlib/v/vcache/vcache_test.v +++ b/vlib/v/vcache/vcache_test.v @@ -2,7 +2,7 @@ import os import v.vcache const ( - vcache_folder = os.join_path(os.temp_dir(), 'vcache_folder') + vcache_folder = os.join_path(os.temp_dir(), 'v', 'cache_folder') ) fn check_cache_entry_fpath_invariants(x string, extension string) { diff --git a/vlib/vweb/assets/assets_test.v b/vlib/vweb/assets/assets_test.v index 6170f3ce47..b9b804c778 100644 --- a/vlib/vweb/assets/assets_test.v +++ b/vlib/vweb/assets/assets_test.v @@ -1,31 +1,31 @@ import vweb.assets import os +const base_cache_dir = os.join_path(os.temp_dir(), 'v', 'assets_test_cache') + +fn testsuite_begin() { + os.mkdir_all(base_cache_dir) or {} +} + +fn testsuite_end() { + os.rmdir_all(base_cache_dir) or {} +} + // clean_cache_dir used before and after tests that write to a cache directory. // Because of parallel compilation and therefore test running, // unique cache dirs are needed per test function. fn clean_cache_dir(dir string) { - if os.is_dir(dir) { - os.rmdir_all(dir) or { panic(err) } - } -} - -fn base_cache_dir() string { - return os.join_path(os.temp_dir(), 'assets_test_cache') + os.rmdir_all(dir) or {} } fn cache_dir(test_name string) string { - return os.join_path(base_cache_dir(), test_name) + return os.join_path(base_cache_dir, test_name) } fn get_test_file_path(file string) string { - path := os.join_path(base_cache_dir(), file) - if !os.is_dir(base_cache_dir()) { - os.mkdir_all(base_cache_dir()) or { panic(err) } - } - if !os.exists(path) { - os.write_file(path, get_test_file_contents(file)) or { panic(err) } - } + path := os.join_path(base_cache_dir, file) + os.rm(path) or {} + os.write_file(path, get_test_file_contents(file)) or { panic(err) } return path }