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