compiler: support VTMP; tests: delete .tmp.c files on successfull tests
							parent
							
								
									d82e6c9cd9
								
							
						
					
					
						commit
						6b2777e681
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
module testing
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import time
 | 
			
		||||
import term
 | 
			
		||||
import benchmark
 | 
			
		||||
import sync
 | 
			
		||||
| 
						 | 
				
			
			@ -59,6 +60,13 @@ pub fn (mut ts TestSession) init() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
pub fn (mut ts TestSession) test() {
 | 
			
		||||
	// Ensure that .tmp.c files generated from compiling _test.v files,
 | 
			
		||||
	// are easy to delete at the end, *without* affecting the existing ones.
 | 
			
		||||
	now := time.sys_mono_now()
 | 
			
		||||
	new_vtmp_dir := os.join_path(os.temp_dir(), 'v', 'test_session_$now')
 | 
			
		||||
	os.mkdir_all(new_vtmp_dir)
 | 
			
		||||
	os.setenv('VTMP', new_vtmp_dir, true)
 | 
			
		||||
	//
 | 
			
		||||
	ts.init()
 | 
			
		||||
	mut remaining_files := []string{}
 | 
			
		||||
	for dot_relative_file in ts.files {
 | 
			
		||||
| 
						 | 
				
			
			@ -99,6 +107,10 @@ pub fn (mut ts TestSession) test() {
 | 
			
		|||
	pool_of_test_runners.work_on_pointers(remaining_files.pointers())
 | 
			
		||||
	ts.benchmark.stop()
 | 
			
		||||
	eprintln(term.h_divider('-'))
 | 
			
		||||
	// cleanup generated .tmp.c files after successfull tests:
 | 
			
		||||
	if ts.benchmark.nfail == 0 {
 | 
			
		||||
		os.rmdir_all(new_vtmp_dir)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn (mut m TestMessageHandler) display_message() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								vlib/os/os.v
								
								
								
								
							
							
						
						
									
										10
									
								
								vlib/os/os.v
								
								
								
								
							| 
						 | 
				
			
			@ -1225,12 +1225,14 @@ pub fn flush() {
 | 
			
		|||
 | 
			
		||||
pub fn mkdir_all(path string) {
 | 
			
		||||
	mut p := if path.starts_with(os.path_separator) { os.path_separator } else { '' }
 | 
			
		||||
	for subdir in path.split(os.path_separator) {
 | 
			
		||||
	path_parts := path.trim_left(os.path_separator).split(os.path_separator)
 | 
			
		||||
	for subdir in path_parts {
 | 
			
		||||
		p += subdir + os.path_separator
 | 
			
		||||
		if !os.is_dir(p) {
 | 
			
		||||
			os.mkdir(p) or {
 | 
			
		||||
				panic(err)
 | 
			
		||||
		if os.exists(p) && os.is_dir(p) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		os.mkdir(p) or {
 | 
			
		||||
			panic('folder: $p, error: $err')
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,12 +8,15 @@ import os
 | 
			
		|||
import v.pref
 | 
			
		||||
 | 
			
		||||
fn get_vtmp_folder() string {
 | 
			
		||||
	vtmp := os.join_path(os.temp_dir(), 'v')
 | 
			
		||||
	if !os.is_dir(vtmp) {
 | 
			
		||||
		os.mkdir(vtmp) or {
 | 
			
		||||
			verror(err)
 | 
			
		||||
	mut vtmp := os.getenv('VTMP')
 | 
			
		||||
	if vtmp.len > 0 {
 | 
			
		||||
		return vtmp
 | 
			
		||||
	}
 | 
			
		||||
	vtmp = os.join_path(os.temp_dir(), 'v')
 | 
			
		||||
	if !os.exists(vtmp) || !os.is_dir(vtmp) {
 | 
			
		||||
		os.mkdir_all(vtmp)
 | 
			
		||||
	}
 | 
			
		||||
	os.setenv('VTMP', vtmp, true)
 | 
			
		||||
	return vtmp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue