v2 / vlib / io / util / util_test.v
123 lines · 118 sloc · 2.49 KB · 2332ecff4811b8c97dfda8e825170e9397962519
Raw
1import os
2import io.util
3
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.
7const tfolder = os.join_path(os.vtmp_dir(), 'io_util_tests')
8
9fn testsuite_begin() {
10 eprintln('testsuite_begin, tfolder = ${tfolder}')
11 os.rmdir_all(tfolder) or {}
12 assert !os.is_dir(tfolder)
13 os.mkdir_all(tfolder) or { panic(err) }
14 os.chdir(tfolder) or {}
15 assert os.is_dir(tfolder)
16}
17
18fn testsuite_end() {
19 os.chdir(os.wd_at_startup) or {}
20 os.rmdir_all(tfolder) or {}
21 assert !os.is_dir(tfolder)
22 // eprintln('testsuite_end , tfolder = ${tfolder} removed.')
23}
24
25fn test_temp_file() {
26 // Test defaults
27 mut f, mut path := util.temp_file() or {
28 assert false
29 return
30 }
31 mut prev_path := path
32 defer {
33 f.close()
34 }
35 assert os.is_file(path)
36 assert f.is_opened
37 // Test pattern
38 f.close()
39 f, path = util.temp_file(
40 pattern: 'some_*_test.file'
41 ) or {
42 assert false
43 return
44 }
45 assert path != prev_path
46 assert os.is_file(path)
47 assert f.is_opened
48 mut filename := os.file_name(path)
49 assert filename.contains('_test.file')
50 // Check for 9 digits where the wildcard is placed in the pattern
51 for i, c in filename {
52 if i > 4 && i <= 4 + 9 {
53 assert c.is_digit()
54 }
55 }
56 // Test custom path
57 prev_path = path
58 f.close()
59 f, path = util.temp_file(
60 path: tfolder
61 ) or {
62 assert false
63 return
64 }
65 assert path != prev_path
66 assert os.is_file(path)
67 assert path.contains(tfolder)
68 assert f.is_opened
69 filename = os.file_name(path)
70 for c in filename {
71 assert c.is_digit()
72 }
73}
74
75fn test_temp_dir() {
76 // Test defaults
77 mut path := util.temp_dir() or {
78 assert false
79 return
80 }
81 assert os.is_dir(path)
82 os.ensure_folder_is_writable(path) or {
83 assert false
84 return
85 }
86 mut prev_path := path
87 // Test pattern
88 path = util.temp_dir(
89 pattern: 'some_*_test_dir'
90 ) or {
91 assert false
92 return
93 }
94 assert path != prev_path
95 assert os.is_dir(path)
96 mut filename := os.file_name(path)
97 assert filename.contains('_test_dir')
98 // Check for 9 digits where the wildcard is placed in the pattern
99 for i, c in filename {
100 if i > 4 && i <= 4 + 9 {
101 assert c.is_digit()
102 }
103 }
104 // Test custom path
105 prev_path = path
106 path = util.temp_dir(
107 path: tfolder
108 ) or {
109 assert false
110 return
111 }
112 assert path != prev_path
113 assert os.is_dir(path)
114 os.ensure_folder_is_writable(path) or {
115 assert false
116 return
117 }
118 assert path.contains(tfolder)
119 filename = os.file_name(path)
120 for c in filename {
121 assert c.is_digit()
122 }
123}
124