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