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