v2 / vlib / os / inode_test.v
54 lines · 48 sloc · 1.41 KB · f172a040efa84f9c69636f5080296136b4a7ab75
Raw
1import os
2
3// tfolder will contain all the temporary files/subfolders made by
4// the different tests. It would be removed in testsuite_end(), so
5// individual os tests do not need to clean up after themselves.
6const tfolder = os.join_path(os.vtmp_dir(), 'inode_tests')
7
8fn testsuite_begin() {
9 eprintln('testsuite_begin, tfolder = ${tfolder}')
10 os.rmdir_all(tfolder) or {}
11 assert !os.is_dir(tfolder)
12 os.mkdir_all(tfolder) or { panic(err) }
13 os.chdir(tfolder) or {}
14 assert os.is_dir(tfolder)
15}
16
17fn testsuite_end() {
18 os.chdir(os.wd_at_startup) or {}
19 os.rmdir_all(tfolder) or { panic(err) }
20 assert !os.is_dir(tfolder)
21}
22
23fn test_inode_file_type() {
24 filename := './test1.txt'
25 mut file := os.open_file(filename, 'w', 0o600) or { return }
26 file.close()
27 mode := os.inode(filename)
28 os.rm(filename) or { panic(err) }
29 assert mode.typ == .regular
30}
31
32fn test_inode_file_owner_permission() {
33 filename := './test2.txt'
34 mut file := os.open_file(filename, 'w', 0o600) or { return }
35 file.close()
36 mode := os.inode(filename)
37 os.rm(filename) or {}
38 assert mode.owner.read
39 assert mode.owner.write
40 assert !mode.owner.execute
41}
42
43fn test_inode_file_permissions_bitmask() {
44 if os.user_os() == 'windows' {
45 println('> skipping ${@FN} on windows')
46 return
47 }
48 filename := './test3.txt'
49 mut file := os.open_file(filename, 'w', 0o641) or { return }
50 file.close()
51 mode := os.inode(filename)
52 os.rm(filename) or {}
53 assert mode.bitmask() == 0o641
54}
55