128 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			V
		
	
	
import os
 | 
						|
import io.util
 | 
						|
 | 
						|
const (
 | 
						|
	// tfolder will contain all the temporary files/subfolders made by
 | 
						|
	// the different tests. It would be removed in testsuite_end(), so
 | 
						|
	// individual os tests do not need to clean up after themselves.
 | 
						|
	tfolder = os.join_path(os.temp_dir(), 'v', 'tests', 'io_util_test')
 | 
						|
)
 | 
						|
 | 
						|
fn testsuite_begin() {
 | 
						|
	eprintln('testsuite_begin, tfolder = $tfolder')
 | 
						|
	os.rmdir_all(tfolder) or { }
 | 
						|
	assert !os.is_dir(tfolder)
 | 
						|
	os.mkdir_all(tfolder) or { panic(err) }
 | 
						|
	os.chdir(tfolder)
 | 
						|
	assert os.is_dir(tfolder)
 | 
						|
}
 | 
						|
 | 
						|
fn testsuite_end() {
 | 
						|
	os.chdir(os.wd_at_startup)
 | 
						|
	os.rmdir_all(tfolder) or { }
 | 
						|
	assert !os.is_dir(tfolder)
 | 
						|
	// eprintln('testsuite_end  , tfolder = $tfolder removed.')
 | 
						|
}
 | 
						|
 | 
						|
fn test_temp_file() {
 | 
						|
	// Test defaults
 | 
						|
	mut f, mut path := util.temp_file({}) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	mut prev_path := path
 | 
						|
	defer {
 | 
						|
		f.close()
 | 
						|
	}
 | 
						|
	assert os.is_file(path)
 | 
						|
	assert f.is_opened
 | 
						|
	// Test pattern
 | 
						|
	f.close()
 | 
						|
	f, path = util.temp_file(
 | 
						|
		pattern: 'some_*_test.file'
 | 
						|
	) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert path != prev_path
 | 
						|
	assert os.is_file(path)
 | 
						|
	assert f.is_opened
 | 
						|
	mut filename := os.file_name(path)
 | 
						|
	assert filename.contains('_test.file')
 | 
						|
	// Check for 9 digits where the wildcard is placed in the pattern
 | 
						|
	for i, c in filename {
 | 
						|
		if i > 4 && i <= 4 + 9 {
 | 
						|
			assert c.is_digit()
 | 
						|
		}
 | 
						|
	}
 | 
						|
	// Test custom path
 | 
						|
	prev_path = path
 | 
						|
	f.close()
 | 
						|
	f, path = util.temp_file(
 | 
						|
		path: tfolder
 | 
						|
	) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert path != prev_path
 | 
						|
	assert os.is_file(path)
 | 
						|
	assert path.contains(tfolder)
 | 
						|
	assert f.is_opened
 | 
						|
	filename = os.file_name(path)
 | 
						|
	for c in filename {
 | 
						|
		assert c.is_digit()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
fn test_temp_dir() {
 | 
						|
	// Test defaults
 | 
						|
	mut path := util.temp_dir({}) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert os.is_dir(path)
 | 
						|
	mut writable := os.is_writable_folder(path) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert writable
 | 
						|
	mut prev_path := path
 | 
						|
	// Test pattern
 | 
						|
	path = util.temp_dir(
 | 
						|
		pattern: 'some_*_test_dir'
 | 
						|
	) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert path != prev_path
 | 
						|
	assert os.is_dir(path)
 | 
						|
	mut filename := os.file_name(path)
 | 
						|
	assert filename.contains('_test_dir')
 | 
						|
	// Check for 9 digits where the wildcard is placed in the pattern
 | 
						|
	for i, c in filename {
 | 
						|
		if i > 4 && i <= 4 + 9 {
 | 
						|
			assert c.is_digit()
 | 
						|
		}
 | 
						|
	}
 | 
						|
	// Test custom path
 | 
						|
	prev_path = path
 | 
						|
	path = util.temp_dir(
 | 
						|
		path: tfolder
 | 
						|
	) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert path != prev_path
 | 
						|
	assert os.is_dir(path)
 | 
						|
	writable = os.is_writable_folder(path) or {
 | 
						|
		assert false
 | 
						|
		return
 | 
						|
	}
 | 
						|
	assert writable
 | 
						|
	assert path.contains(tfolder)
 | 
						|
	filename = os.file_name(path)
 | 
						|
	for c in filename {
 | 
						|
		assert c.is_digit()
 | 
						|
	}
 | 
						|
}
 |