]> gitweb.factorcode.org Git - factor.git/blob - basis/io/files/unix/unix-tests.factor
use radix literals
[factor.git] / basis / io / files / unix / unix-tests.factor
1 USING: tools.test io.files io.files.temp io.pathnames
2 io.directories io.files.info io.files.info.unix continuations
3 kernel io.files.unix math.bitwise calendar accessors
4 math.functions math unix.users unix.groups arrays sequences
5 grouping io.pathnames.private literals ;
6 IN: io.files.unix.tests
7
8 [ "/usr/libexec/" ] [ "/usr/libexec/awk/" parent-directory ] unit-test
9 [ "/etc/" ] [ "/etc/passwd" parent-directory ] unit-test
10 [ "/" ] [ "/etc/" parent-directory ] unit-test
11 [ "/" ] [ "/etc" parent-directory ] unit-test
12 [ "/" ] [ "/" parent-directory ] unit-test
13
14 [ f ] [ "" root-directory? ] unit-test
15 [ t ] [ "/" root-directory? ] unit-test
16 [ t ] [ "//" root-directory? ] unit-test
17 [ t ] [ "///////" root-directory? ] unit-test
18
19 [ "/" ] [ "/" file-name ] unit-test
20 [ "///" ] [ "///" file-name ] unit-test
21
22 [ "/" ] [ "/" "../.." append-path ] unit-test
23 [ "/" ] [ "/" "../../" append-path ] unit-test
24 [ "/lib" ] [ "/" "../lib" append-path ] unit-test
25 [ "/lib/" ] [ "/" "../lib/" append-path ] unit-test
26 [ "/lib" ] [ "/" "../../lib" append-path ] unit-test
27 [ "/lib/" ] [ "/" "../../lib/" append-path ] unit-test
28
29 [ "/lib" ] [ "/usr/" "/lib" append-path ] unit-test
30 [ "/lib/" ] [ "/usr/" "/lib/" append-path ] unit-test
31 [ "/lib/bux" ] [ "/usr" "/lib/bux" append-path ] unit-test
32 [ "/lib/bux/" ] [ "/usr" "/lib/bux/" append-path ] unit-test
33 [ t ] [ "/foo" absolute-path? ] unit-test
34
35 : test-file ( -- path )
36     "permissions" temp-file ;
37
38 : prepare-test-file ( -- )
39     [ test-file delete-file ] ignore-errors
40     test-file touch-file ;
41
42 : perms ( -- n )
43     test-file file-permissions 0o7777 mask ;
44
45 prepare-test-file
46
47 [ t ]
48 [ test-file flags{ USER-ALL GROUP-ALL OTHER-ALL } set-file-permissions perms 0o777 = ] unit-test
49
50 [ t ] [ test-file user-read? ] unit-test
51 [ t ] [ test-file user-write? ] unit-test
52 [ t ] [ test-file user-execute? ] unit-test
53 [ t ] [ test-file group-read? ] unit-test
54 [ t ] [ test-file group-write? ] unit-test
55 [ t ] [ test-file group-execute? ] unit-test
56 [ t ] [ test-file other-read? ] unit-test
57 [ t ] [ test-file other-write? ] unit-test
58 [ t ] [ test-file other-execute? ] unit-test
59
60 [ t ] [ test-file f set-other-execute perms 0o776 = ] unit-test
61 [ f ] [ test-file file-info other-execute? ] unit-test
62
63 [ t ] [ test-file f set-other-write perms 0o774 = ] unit-test
64 [ f ] [ test-file file-info other-write? ] unit-test
65
66 [ t ] [ test-file f set-other-read perms 0o770 = ] unit-test
67 [ f ] [ test-file file-info other-read? ] unit-test
68
69 [ t ] [ test-file f set-group-execute perms 0o760 = ] unit-test
70 [ f ] [ test-file file-info group-execute? ] unit-test
71
72 [ t ] [ test-file f set-group-write perms 0o740 = ] unit-test
73 [ f ] [ test-file file-info group-write? ] unit-test
74
75 [ t ] [ test-file f set-group-read perms 0o700 = ] unit-test
76 [ f ] [ test-file file-info group-read? ] unit-test
77
78 [ t ] [ test-file f set-user-execute perms 0o600 = ] unit-test
79 [ f ] [ test-file file-info other-execute? ] unit-test
80
81 [ t ] [ test-file f set-user-write perms 0o400 = ] unit-test
82 [ f ] [ test-file file-info other-write? ] unit-test
83
84 [ t ] [ test-file f set-user-read perms 0o000 = ] unit-test
85 [ f ] [ test-file file-info other-read? ] unit-test
86
87 [ t ]
88 [ test-file flags{ USER-ALL GROUP-ALL OTHER-EXECUTE } set-file-permissions perms 0o771 = ] unit-test
89
90 prepare-test-file
91
92 [ t ]
93 [
94     test-file now
95     [ set-file-access-time ] 2keep
96     [ file-info accessed>> ]
97     [ [ [ truncate >integer ] change-second >gmt ] bi@ ] bi* =
98 ] unit-test
99
100 [ t ]
101 [
102     test-file now
103     [ set-file-modified-time ] 2keep
104     [ file-info modified>> ]
105     [ [ [ truncate >integer ] change-second >gmt ] bi@ ] bi* =
106 ] unit-test
107
108 [ t ]
109 [
110     test-file now [ dup 2array set-file-times ] 2keep
111     [ file-info [ modified>> ] [ accessed>> ] bi ] dip
112     3array
113     [ [ truncate >integer ] change-second >gmt ] map all-equal?
114 ] unit-test
115
116 [ ] [ test-file f now 2array set-file-times ] unit-test
117 [ ] [ test-file now f 2array set-file-times ] unit-test
118 [ ] [ test-file f f 2array set-file-times ] unit-test
119
120
121 [ ] [ test-file real-user-name set-file-user ] unit-test
122 [ ] [ test-file real-user-id set-file-user ] unit-test
123 [ ] [ test-file real-group-name set-file-group ] unit-test
124 [ ] [ test-file real-group-id set-file-group ] unit-test
125
126 [ t ] [ test-file file-user-name real-user-name = ] unit-test
127 [ t ] [ test-file file-group-name real-group-name = ] unit-test
128
129 [ ]
130 [ test-file real-user-id real-group-id set-file-ids ] unit-test
131
132 [ ]
133 [ test-file f real-group-id set-file-ids ] unit-test
134
135 [ ]
136 [ test-file real-user-id f set-file-ids ] unit-test
137
138 [ ]
139 [ test-file f f set-file-ids ] unit-test
140
141 [ t ] [ 0o4000 uid? ] unit-test
142 [ t ] [ 0o2000 gid? ] unit-test
143 [ t ] [ 0o1000 sticky? ] unit-test
144 [ t ] [ 0o400 user-read? ] unit-test
145 [ t ] [ 0o200 user-write? ] unit-test
146 [ t ] [ 0o100 user-execute? ] unit-test
147 [ t ] [ 0o040 group-read? ] unit-test
148 [ t ] [ 0o020 group-write? ] unit-test
149 [ t ] [ 0o010 group-execute? ] unit-test
150 [ t ] [ 0o004 other-read? ] unit-test
151 [ t ] [ 0o002 other-write? ] unit-test
152 [ t ] [ 0o001 other-execute? ] unit-test
153
154 [ f ] [ 0 uid? ] unit-test
155 [ f ] [ 0 gid? ] unit-test
156 [ f ] [ 0 sticky? ] unit-test
157 [ f ] [ 0 user-read? ] unit-test
158 [ f ] [ 0 user-write? ] unit-test
159 [ f ] [ 0 user-execute? ] unit-test
160 [ f ] [ 0 group-read? ] unit-test
161 [ f ] [ 0 group-write? ] unit-test
162 [ f ] [ 0 group-execute? ] unit-test
163 [ f ] [ 0 other-read? ] unit-test
164 [ f ] [ 0 other-write? ] unit-test
165 [ f ] [ 0 other-execute? ] unit-test