mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tests: unify all temporary files/folders under $VTMP/v
, that can be cleaned by v wipe-cache
(#15774)
This commit is contained in:
parent
7e69619add
commit
f922ed0941
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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)?
|
||||
|
@ -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 {
|
||||
|
@ -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 {}
|
||||
}
|
||||
|
@ -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:')
|
||||
|
@ -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.')
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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) }
|
||||
|
@ -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)?
|
||||
|
@ -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)
|
||||
|
@ -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')
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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___
|
||||
}
|
||||
|
@ -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 {}
|
||||
|
@ -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 {}
|
||||
|
@ -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 {
|
||||
|
@ -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 = ''
|
||||
)
|
||||
|
@ -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 {
|
||||
|
@ -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++ {
|
||||
|
@ -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
|
||||
|
@ -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)?
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 {}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user