mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
os: vfmt os_test.v
This commit is contained in:
parent
e012966291
commit
32c8eb6490
@ -278,7 +278,7 @@ const (
|
||||
)
|
||||
|
||||
struct Foooj {
|
||||
a [N]int
|
||||
a [5]int // N
|
||||
}
|
||||
|
||||
fn test_fixed() {
|
||||
|
@ -9,50 +9,46 @@ fn testsuite_end() {
|
||||
}
|
||||
|
||||
fn test_open_file() {
|
||||
filename := './test1.txt'
|
||||
hello := 'hello world!'
|
||||
os.open_file(filename, "r+", 0o666) or {
|
||||
assert err == "No such file or directory"
|
||||
}
|
||||
|
||||
mut file := os.open_file(filename, "w+", 0o666) or { panic(err) }
|
||||
file.write(hello)
|
||||
file.close()
|
||||
|
||||
assert hello.len == os.file_size(filename)
|
||||
|
||||
read_hello := os.read_file(filename) or {
|
||||
panic('error reading file $filename')
|
||||
}
|
||||
assert hello == read_hello
|
||||
|
||||
os.rm(filename)
|
||||
filename := './test1.txt'
|
||||
hello := 'hello world!'
|
||||
os.open_file(filename, 'r+',0666) or {
|
||||
assert err == 'No such file or directory'
|
||||
}
|
||||
mut file := os.open_file(filename, 'w+',0666) or {
|
||||
panic(err)
|
||||
}
|
||||
file.write(hello)
|
||||
file.close()
|
||||
assert hello.len == os.file_size(filename)
|
||||
read_hello := os.read_file(filename) or {
|
||||
panic('error reading file $filename')
|
||||
}
|
||||
assert hello == read_hello
|
||||
os.rm(filename)
|
||||
}
|
||||
|
||||
fn test_create_file() {
|
||||
filename := './test1.txt'
|
||||
hello := 'hello world!'
|
||||
mut f := os.create(filename) or { panic(err)}
|
||||
mut f := os.create(filename) or {
|
||||
panic(err)
|
||||
}
|
||||
f.write(hello)
|
||||
f.close()
|
||||
|
||||
assert hello.len == os.file_size(filename)
|
||||
|
||||
os.rm(filename)
|
||||
}
|
||||
|
||||
fn test_write_and_read_string_to_file() {
|
||||
filename := './test1.txt'
|
||||
hello := 'hello world!'
|
||||
os.write_file(filename, hello)
|
||||
assert hello.len == os.file_size(filename)
|
||||
|
||||
read_hello := os.read_file(filename) or {
|
||||
panic('error reading file $filename')
|
||||
}
|
||||
assert hello == read_hello
|
||||
|
||||
os.rm(filename)
|
||||
filename := './test1.txt'
|
||||
hello := 'hello world!'
|
||||
os.write_file(filename, hello)
|
||||
assert hello.len == os.file_size(filename)
|
||||
read_hello := os.read_file(filename) or {
|
||||
panic('error reading file $filename')
|
||||
}
|
||||
assert hello == read_hello
|
||||
os.rm(filename)
|
||||
}
|
||||
|
||||
// test_write_and_read_bytes checks for regressions made in the functions
|
||||
@ -93,183 +89,196 @@ fn test_write_and_read_bytes() {
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
fn test_create_and_delete_folder() {
|
||||
folder := './test1'
|
||||
os.mkdir(folder) or { panic(err) }
|
||||
folder := './test1'
|
||||
os.mkdir(folder) or {
|
||||
panic(err)
|
||||
}
|
||||
assert os.is_dir(folder)
|
||||
|
||||
folder_contents := os.ls(folder) or { panic(err) }
|
||||
assert folder_contents.len == 0
|
||||
|
||||
os.rmdir(folder)
|
||||
|
||||
folder_exists := os.is_dir(folder)
|
||||
|
||||
assert folder_exists == false
|
||||
folder_contents := os.ls(folder) or {
|
||||
panic(err)
|
||||
}
|
||||
assert folder_contents.len == 0
|
||||
os.rmdir(folder)
|
||||
folder_exists := os.is_dir(folder)
|
||||
assert folder_exists == false
|
||||
}
|
||||
|
||||
fn walk_callback(file string) {
|
||||
if file == '.' || file == '..' {
|
||||
return
|
||||
}
|
||||
assert file == 'test_walk' + os.path_separator + 'test1'
|
||||
if file == '.' || file == '..' {
|
||||
return
|
||||
}
|
||||
assert file == 'test_walk' + os.path_separator + 'test1'
|
||||
}
|
||||
|
||||
fn test_walk() {
|
||||
folder := 'test_walk'
|
||||
os.mkdir(folder) or { panic(err) }
|
||||
|
||||
file1 := folder + os.path_separator + 'test1'
|
||||
|
||||
os.write_file(file1,'test-1')
|
||||
|
||||
os.walk(folder, walk_callback)
|
||||
|
||||
folder := 'test_walk'
|
||||
os.mkdir(folder) or {
|
||||
panic(err)
|
||||
}
|
||||
file1 := folder + os.path_separator + 'test1'
|
||||
os.write_file(file1, 'test-1')
|
||||
os.walk(folder, walk_callback)
|
||||
os.rm(file1)
|
||||
os.rmdir(folder)
|
||||
}
|
||||
|
||||
fn test_cp() {
|
||||
old_file_name := 'cp_example.txt'
|
||||
new_file_name := 'cp_new_example.txt'
|
||||
|
||||
os.write_file(old_file_name, 'Test data 1 2 3, V is awesome #$%^[]!~⭐')
|
||||
os.cp(old_file_name, new_file_name) or { panic('$err: errcode: $errcode') }
|
||||
|
||||
old_file := os.read_file(old_file_name) or { panic(err) }
|
||||
new_file := os.read_file(new_file_name) or { panic(err) }
|
||||
assert old_file == new_file
|
||||
|
||||
os.rm(old_file_name)
|
||||
os.rm(new_file_name)
|
||||
old_file_name := 'cp_example.txt'
|
||||
new_file_name := 'cp_new_example.txt'
|
||||
os.write_file(old_file_name, 'Test data 1 2 3, V is awesome #$%^[]!~⭐')
|
||||
os.cp(old_file_name, new_file_name) or {
|
||||
panic('$err: errcode: $errcode')
|
||||
}
|
||||
old_file := os.read_file(old_file_name) or {
|
||||
panic(err)
|
||||
}
|
||||
new_file := os.read_file(new_file_name) or {
|
||||
panic(err)
|
||||
}
|
||||
assert old_file == new_file
|
||||
os.rm(old_file_name)
|
||||
os.rm(new_file_name)
|
||||
}
|
||||
|
||||
fn test_cp_r() {
|
||||
//fileX -> dir/fileX
|
||||
// NB: clean up of the files happens inside the cleanup_leftovers function
|
||||
os.write_file('ex1.txt', 'wow!')
|
||||
os.mkdir('ex') or { panic(err) }
|
||||
os.cp_all('ex1.txt', 'ex', false) or { panic(err) }
|
||||
old := os.read_file('ex1.txt') or { panic(err) }
|
||||
new := os.read_file('ex/ex1.txt') or { panic(err) }
|
||||
assert old == new
|
||||
os.mkdir('ex/ex2') or { panic(err) }
|
||||
os.write_file('ex2.txt', 'great!')
|
||||
os.cp_all('ex2.txt', 'ex/ex2', false) or { panic(err) }
|
||||
old2 := os.read_file('ex2.txt') or { panic(err) }
|
||||
new2 := os.read_file('ex/ex2/ex2.txt') or { panic(err) }
|
||||
assert old2 == new2
|
||||
//recurring on dir -> local dir
|
||||
os.cp_all('ex', './', true) or { panic(err) }
|
||||
// fileX -> dir/fileX
|
||||
// NB: clean up of the files happens inside the cleanup_leftovers function
|
||||
os.write_file('ex1.txt', 'wow!')
|
||||
os.mkdir('ex') or {
|
||||
panic(err)
|
||||
}
|
||||
os.cp_all('ex1.txt', 'ex', false) or {
|
||||
panic(err)
|
||||
}
|
||||
old := os.read_file('ex1.txt') or {
|
||||
panic(err)
|
||||
}
|
||||
new := os.read_file('ex/ex1.txt') or {
|
||||
panic(err)
|
||||
}
|
||||
assert old == new
|
||||
os.mkdir('ex/ex2') or {
|
||||
panic(err)
|
||||
}
|
||||
os.write_file('ex2.txt', 'great!')
|
||||
os.cp_all('ex2.txt', 'ex/ex2', false) or {
|
||||
panic(err)
|
||||
}
|
||||
old2 := os.read_file('ex2.txt') or {
|
||||
panic(err)
|
||||
}
|
||||
new2 := os.read_file('ex/ex2/ex2.txt') or {
|
||||
panic(err)
|
||||
}
|
||||
assert old2 == new2
|
||||
// recurring on dir -> local dir
|
||||
os.cp_all('ex', './', true) or {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
fn test_tmpdir(){
|
||||
fn test_tmpdir() {
|
||||
t := os.temp_dir()
|
||||
assert t.len > 0
|
||||
assert os.is_dir(t)
|
||||
|
||||
tfile := t + os.path_separator + 'tmpfile.txt'
|
||||
|
||||
os.rm(tfile) // just in case
|
||||
|
||||
tfile_content := 'this is a temporary file'
|
||||
os.write_file(tfile, tfile_content)
|
||||
|
||||
tfile_content_read := os.read_file(tfile) or { panic(err) }
|
||||
tfile_content_read := os.read_file(tfile) or {
|
||||
panic(err)
|
||||
}
|
||||
assert tfile_content_read == tfile_content
|
||||
|
||||
os.rm(tfile)
|
||||
}
|
||||
|
||||
|
||||
fn test_make_symlink_check_is_link_and_remove_symlink() {
|
||||
$if windows {
|
||||
// TODO
|
||||
assert true
|
||||
return
|
||||
}
|
||||
|
||||
folder := 'tfolder'
|
||||
symlink := 'tsymlink'
|
||||
|
||||
os.rm(symlink)
|
||||
os.rm(folder)
|
||||
|
||||
os.mkdir(folder) or { panic(err) }
|
||||
folder_contents := os.ls(folder) or { panic(err) }
|
||||
assert folder_contents.len == 0
|
||||
|
||||
os.system('ln -s $folder $symlink')
|
||||
assert os.is_link(symlink) == true
|
||||
|
||||
os.rm(symlink)
|
||||
os.rm(folder)
|
||||
|
||||
folder_exists := os.is_dir(folder)
|
||||
assert folder_exists == false
|
||||
|
||||
symlink_exists := os.is_link(symlink)
|
||||
assert symlink_exists == false
|
||||
$if windows {
|
||||
// TODO
|
||||
assert true
|
||||
return
|
||||
}
|
||||
folder := 'tfolder'
|
||||
symlink := 'tsymlink'
|
||||
os.rm(symlink)
|
||||
os.rm(folder)
|
||||
os.mkdir(folder) or {
|
||||
panic(err)
|
||||
}
|
||||
folder_contents := os.ls(folder) or {
|
||||
panic(err)
|
||||
}
|
||||
assert folder_contents.len == 0
|
||||
os.system('ln -s $folder $symlink')
|
||||
assert os.is_link(symlink) == true
|
||||
os.rm(symlink)
|
||||
os.rm(folder)
|
||||
folder_exists := os.is_dir(folder)
|
||||
assert folder_exists == false
|
||||
symlink_exists := os.is_link(symlink)
|
||||
assert symlink_exists == false
|
||||
}
|
||||
|
||||
//fn test_fork() {
|
||||
// pid := os.fork()
|
||||
// if pid == 0 {
|
||||
// println('Child')
|
||||
// }
|
||||
// else {
|
||||
// println('Parent')
|
||||
// }
|
||||
//}
|
||||
|
||||
//fn test_wait() {
|
||||
// pid := os.fork()
|
||||
// if pid == 0 {
|
||||
// println('Child')
|
||||
// exit(0)
|
||||
// }
|
||||
// else {
|
||||
// cpid := os.wait()
|
||||
// println('Parent')
|
||||
// println(cpid)
|
||||
// }
|
||||
//}
|
||||
|
||||
// fn test_fork() {
|
||||
// pid := os.fork()
|
||||
// if pid == 0 {
|
||||
// println('Child')
|
||||
// }
|
||||
// else {
|
||||
// println('Parent')
|
||||
// }
|
||||
// }
|
||||
// fn test_wait() {
|
||||
// pid := os.fork()
|
||||
// if pid == 0 {
|
||||
// println('Child')
|
||||
// exit(0)
|
||||
// }
|
||||
// else {
|
||||
// cpid := os.wait()
|
||||
// println('Parent')
|
||||
// println(cpid)
|
||||
// }
|
||||
// }
|
||||
fn test_symlink() {
|
||||
$if windows { return }
|
||||
os.mkdir('symlink') or { panic(err) }
|
||||
os.symlink('symlink', 'symlink2') or { panic(err) }
|
||||
assert os.exists('symlink2')
|
||||
|
||||
// cleanup
|
||||
os.rm('symlink')
|
||||
os.rm('symlink2')
|
||||
$if windows {
|
||||
return
|
||||
}
|
||||
os.mkdir('symlink') or {
|
||||
panic(err)
|
||||
}
|
||||
os.symlink('symlink', 'symlink2') or {
|
||||
panic(err)
|
||||
}
|
||||
assert os.exists('symlink2')
|
||||
// cleanup
|
||||
os.rm('symlink')
|
||||
os.rm('symlink2')
|
||||
}
|
||||
|
||||
fn test_is_executable_writable_readable() {
|
||||
file_name := os.temp_dir() + os.path_separator + 'rwxfile.exe'
|
||||
|
||||
mut f := os.create(file_name) or {
|
||||
eprintln('failed to create file $file_name')
|
||||
return
|
||||
}
|
||||
f.close()
|
||||
|
||||
$if !windows {
|
||||
os.chmod(file_name, 0o600) // mark as readable && writable, but NOT executable
|
||||
assert os.is_writable(file_name)
|
||||
assert os.is_readable(file_name)
|
||||
assert !os.is_executable(file_name)
|
||||
os.chmod(file_name, 0o700) // mark as executable too
|
||||
assert os.is_executable(file_name)
|
||||
} $else {
|
||||
assert os.is_writable(file_name)
|
||||
assert os.is_readable(file_name)
|
||||
assert os.is_executable(file_name)
|
||||
}
|
||||
|
||||
// We finally delete the test file.
|
||||
os.rm(file_name)
|
||||
file_name := os.temp_dir() + os.path_separator + 'rwxfile.exe'
|
||||
mut f := os.create(file_name) or {
|
||||
eprintln('failed to create file $file_name')
|
||||
return
|
||||
}
|
||||
f.close()
|
||||
$if !windows {
|
||||
os.chmod(file_name, 0600) // mark as readable && writable, but NOT executable
|
||||
assert os.is_writable(file_name)
|
||||
assert os.is_readable(file_name)
|
||||
assert !os.is_executable(file_name)
|
||||
os.chmod(file_name, 0700) // mark as executable too
|
||||
assert os.is_executable(file_name)
|
||||
} $else {
|
||||
assert os.is_writable(file_name)
|
||||
assert os.is_readable(file_name)
|
||||
assert os.is_executable(file_name)
|
||||
}
|
||||
// We finally delete the test file.
|
||||
os.rm(file_name)
|
||||
}
|
||||
|
||||
fn test_ext() {
|
||||
@ -280,7 +289,6 @@ fn test_ext() {
|
||||
fn test_is_abs() {
|
||||
assert os.is_abs_path('/home/user') == true
|
||||
assert os.is_abs_path('v/vlib') == false
|
||||
|
||||
$if windows {
|
||||
assert os.is_abs_path('C:\\Windows\\') == true
|
||||
}
|
||||
@ -288,9 +296,9 @@ fn test_is_abs() {
|
||||
|
||||
fn test_join() {
|
||||
$if windows {
|
||||
assert os.join_path('v', 'vlib', 'os') == 'v\\vlib\\os'
|
||||
assert os.join_path('v','vlib','os') == 'v\\vlib\\os'
|
||||
} $else {
|
||||
assert os.join_path('v', 'vlib', 'os') == 'v/vlib/os'
|
||||
assert os.join_path('v','vlib','os') == 'v/vlib/os'
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,7 +308,6 @@ fn test_dir() {
|
||||
} $else {
|
||||
assert os.dir('/var/tmp/foo') == '/var/tmp'
|
||||
}
|
||||
|
||||
assert os.dir('os') == '.'
|
||||
}
|
||||
|
||||
@ -310,7 +317,6 @@ fn test_basedir() {
|
||||
} $else {
|
||||
assert os.base_dir('v/vlib/os') == 'v/vlib'
|
||||
}
|
||||
|
||||
assert os.base_dir('filename') == 'filename'
|
||||
}
|
||||
|
||||
@ -321,7 +327,6 @@ fn cleanup_leftovers() {
|
||||
// possible leftovers from test_cp
|
||||
os.rm('cp_example.txt')
|
||||
os.rm('cp_new_example.txt')
|
||||
|
||||
// possible leftovers from test_cp_r
|
||||
os.rmdir_all('ex')
|
||||
os.rmdir_all('ex2')
|
||||
|
@ -474,6 +474,7 @@ pub fn (c mut Checker) assign_stmt(assign_stmt mut ast.AssignStmt) {
|
||||
}
|
||||
|
||||
pub fn (c mut Checker) array_init(array_init mut ast.ArrayInit) table.Type {
|
||||
// println('checker: array init $array_init.pos.line_nr $c.file.path')
|
||||
mut elem_type := table.void_type
|
||||
// []string - was set in parser
|
||||
if array_init.typ != table.void_type {
|
||||
|
Loading…
Reference in New Issue
Block a user