1#============================================================= -*-perl-*-
2#
3# t/directory.t
4#
5# Tests the Directory plugin.
6#
7# Written by Andy Wardley <abw@wardley.org>
8#
9# Copyright (C) 2000 Andy Wardley. All Rights Reserved.
10#
11# This is free software; you can redistribute it and/or modify it
12# under the same terms as Perl itself.
13#
14# $Id$
15#
16#========================================================================
17
18use strict;
19use lib qw( ./lib ../lib );
20use Template::Test;
21use Cwd;
22$^W = 1;
23
24if ($^O eq 'MSWin32') {
25    skip_all('skipping tests on MS Win 32 platform');
26}
27
28#$Template::Test::PRESERVE = 1;
29my $cwd = getcwd();
30my $dir = -d 't' ? 't/test/dir' : 'test/dir';
31
32my $dot = $dir;
33$dot =~ s/[^\/]+/../g;
34
35my $vars = {
36    cwd  => $cwd,
37    dir  => $dir,
38    dot  => $dot,
39};
40test_expect(\*DATA, undef, $vars);
41
42__DATA__
43-- test --
44[% TRY ;
45     USE Directory ;
46   CATCH ;
47     error ;
48   END
49-%]
50-- expect --
51Directory error - no directory specified
52
53-- test --
54[% TRY ;
55     USE Directory('/no/such/place') ;
56   CATCH ;
57     error.type ; ' error on ' ; error.info.split(':').0 ;
58   END
59-%]
60-- expect --
61Directory error on /no/such/place
62
63-- test --
64[% USE d = Directory(dir, nostat=1) -%]
65[% d.path %]
66-- expect --
67-- process --
68[% dir %]
69
70-- test --
71[% USE d = Directory(dir) -%]
72[% d.path %]
73-- expect --
74-- process --
75[% dir %]
76
77-- test --
78[% USE directory(dir) -%]
79[% directory.path %]
80-- expect --
81-- process --
82[% dir %]
83
84-- test --
85[% USE d = Directory(dir) -%]
86[% FOREACH f = d.files -%]
87   - [% f.name %]
88[% END -%]
89[% FOREACH f = d.dirs; NEXT IF f.name == 'CVS';  -%]
90   * [% f.name %]
91[% END %]
92-- expect --
93   - file1
94   - file2
95   - xyzfile
96   * sub_one
97   * sub_two
98
99-- test --
100[% USE dir = Directory(dir) -%]
101[% INCLUDE dir %]
102[% BLOCK dir -%]
103* [% dir.name %]
104[% FOREACH f = dir.files -%]
105    - [% f.name %]
106[% END -%]
107[% FOREACH f = dir.dirs; NEXT IF f.name == 'CVS';  -%]
108[% f.scan -%]
109[% INCLUDE dir dir=f FILTER indent(4) -%]
110[% END -%]
111[% END -%]
112-- expect --
113* dir
114    - file1
115    - file2
116    - xyzfile
117    * sub_one
118        - bar
119        - foo
120    * sub_two
121        - waz.html
122        - wiz.html
123
124-- test --
125[% USE dir = Directory(dir) -%]
126* [% dir.path %]
127[% INCLUDE dir %]
128[% BLOCK dir;
129     FOREACH f = dir.list ;
130     NEXT IF f.name == 'CVS';
131       IF f.isdir ; -%]
132    * [% f.name %]
133[%       f.scan ;
134	 INCLUDE dir dir=f FILTER indent(4) ;
135       ELSE -%]
136    - [% f.name %]
137[%     END ;
138    END ;
139   END -%]
140-- expect --
141-- process --
142* [% dir %]
143    - file1
144    - file2
145    * sub_one
146        - bar
147        - foo
148    * sub_two
149        - waz.html
150        - wiz.html
151    - xyzfile
152
153-- test --
154[% USE d = Directory(dir, recurse=1) -%]
155[% FOREACH f = d.files -%]
156   - [% f.name %]
157[% END -%]
158[% FOREACH f = d.dirs; NEXT IF f.name == 'CVS';  -%]
159   * [% f.name %]
160[% END %]
161-- expect --
162   - file1
163   - file2
164   - xyzfile
165   * sub_one
166   * sub_two
167
168-- test --
169[% USE dir = Directory(dir, recurse=1, root=cwd) -%]
170* [% dir.path %]
171[% INCLUDE dir %]
172[% BLOCK dir;
173     FOREACH f = dir.list ;
174     NEXT IF f.name == 'CVS';
175       IF f.isdir ; -%]
176    * [% f.name %] => [% f.path %] => [% f.abs %]
177[%       INCLUDE dir dir=f FILTER indent(4) ;
178       ELSE -%]
179    - [% f.name %] => [% f.path %] => [% f.abs %]
180[%     END ;
181    END ;
182   END -%]
183-- expect --
184-- process --
185* [% dir %]
186    - file1 => [% dir %]/file1 => [% cwd %]/[% dir %]/file1
187    - file2 => [% dir %]/file2 => [% cwd %]/[% dir %]/file2
188    * sub_one => [% dir %]/sub_one => [% cwd %]/[% dir %]/sub_one
189        - bar => [% dir %]/sub_one/bar => [% cwd %]/[% dir %]/sub_one/bar
190        - foo => [% dir %]/sub_one/foo => [% cwd %]/[% dir %]/sub_one/foo
191    * sub_two => [% dir %]/sub_two => [% cwd %]/[% dir %]/sub_two
192        - waz.html => [% dir %]/sub_two/waz.html => [% cwd %]/[% dir %]/sub_two/waz.html
193        - wiz.html => [% dir %]/sub_two/wiz.html => [% cwd %]/[% dir %]/sub_two/wiz.html
194    - xyzfile => [% dir %]/xyzfile => [% cwd %]/[% dir %]/xyzfile
195
196-- test --
197[% USE dir = Directory(dir, recurse=1, root=cwd) -%]
198* [% dir.path %]
199[% INCLUDE dir %]
200[% BLOCK dir;
201     FOREACH f = dir.list ;
202	NEXT IF f.name == 'CVS';
203	IF f.isdir ; -%]
204    * [% f.name %] => [% f.home %]
205[%       INCLUDE dir dir=f FILTER indent(4) ;
206       ELSE -%]
207    - [% f.name %] => [% f.home %]
208[%     END ;
209    END ;
210   END -%]
211-- expect --
212-- process --
213* [% dir %]
214    - file1 => [% dot %]
215    - file2 => [% dot %]
216    * sub_one => [% dot %]
217        - bar => [% dot %]/..
218        - foo => [% dot %]/..
219    * sub_two => [% dot %]
220        - waz.html => [% dot %]/..
221        - wiz.html => [% dot %]/..
222    - xyzfile => [% dot %]
223
224
225-- test --
226[% USE dir = Directory(dir) -%]
227[% file = dir.file('xyzfile') -%]
228[% file.name %]
229-- expect --
230xyzfile
231
232-- test --
233[% USE dir = Directory('.', root=dir) -%]
234[% dir.name %]
235[% FOREACH f = dir.files -%]
236- [% f.name %]
237[% END -%]
238-- expect --
239.
240- file1
241- file2
242- xyzfile
243
244
245-- test --
246[% VIEW filelist -%]
247
248[% BLOCK file -%]
249f [% item.name %] => [% item.path %]
250[% END -%]
251
252[% BLOCK directory; NEXT IF item.name == 'CVS';  -%]
253d [% item.name %] => [% item.path %]
254[% item.content(view) | indent -%]
255[% END -%]
256
257[% END -%]
258[% USE dir = Directory(dir, recurse=1) -%]
259[% filelist.print(dir) %]
260-- expect --
261-- process --
262d dir => [% dir %]
263    f file1 => [% dir %]/file1
264    f file2 => [% dir %]/file2
265    d sub_one => [% dir %]/sub_one
266        f bar => [% dir %]/sub_one/bar
267        f foo => [% dir %]/sub_one/foo
268    d sub_two => [% dir %]/sub_two
269        f waz.html => [% dir %]/sub_two/waz.html
270        f wiz.html => [% dir %]/sub_two/wiz.html
271    f xyzfile => [% dir %]/xyzfile
272
273
274
275
276