����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
use 5.008001;
use strict;
use warnings;
use Test::More 0.96;
use lib 't/lib';
use TestUtils qw/exception/;
my $DEBUG;
BEGIN { $DEBUG = 0 }
BEGIN {
if ($DEBUG) { require Path::Class; Path::Class->import }
}
my $IS_WIN32 = $^O eq 'MSWin32';
use Path::Tiny;
use File::Spec::Functions qw/canonpath/;
sub canonical {
my $d = canonpath(shift);
$d =~ s{\\}{/}g;
$d .= "/" if $d =~ m{//[^/]+/[^/]+$};
return $d;
}
my @cases = (
#<<< No perltidy
"absolute"
=> [ "/foo/bar" => "/foo" => "/" => "/" ],
"relative"
=> [ "foo/bar/baz" => "foo/bar" => "foo" => "." => ".." => "../.." => "../../.." ],
"absolute with .."
=> [ "/foo/bar/../baz" => "/foo/bar/.." => "/foo/bar/../.." => "/foo/bar/../../.." ],
"relative with .."
=> [ "foo/bar/../baz" => "foo/bar/.." => "foo/bar/../.." => "foo/bar/../../.." ],
"relative with leading .."
=> [ "../foo/bar" => "../foo" => ".." => "../.." ],
"absolute with internal dots"
=> [ "/foo..bar/baz..bam" => "/foo..bar" => "/" ],
"relative with internal dots"
=> [ "foo/bar..baz/wib..wob" => "foo/bar..baz" => "foo" => "." => ".." ],
"absolute with leading dots"
=> [ "/..foo/..bar" => "/..foo" => "/" ],
"relative with leading dots"
=> [ "..foo/..bar/..wob" => "..foo/..bar" => "..foo" => "." => ".." ],
"absolute with trailing dots"
=> [ "/foo../bar.." => "/foo.." => "/" ],
"relative with trailing dots"
=> [ "foo../bar../wob.." => "foo../bar.." => "foo.." => "." => ".." ],
#>>>
);
my @win32_cases = (
#<<< No perltidy
"absolute with drive"
=> [ "C:/foo/bar" => "C:/foo" => "C:/" => "C:/" ],
"absolute with drive and .."
=> [ "C:/foo/bar/../baz" => "C:/foo" => "C:/" ],
"absolute with UNC"
=> [ "//server/share/foo/bar" => "//server/share/foo" => "//server/share/" => "//server/share/" ],
"absolute with drive, UNC and .."
=> [ "//server/share/foo/bar/../baz" => "//server/share/foo" => "//server/share/" ],
#>>>
);
push @cases, @win32_cases if $IS_WIN32;
while (@cases) {
my ( $label, $list ) = splice( @cases, 0, 2 );
subtest $label => sub {
my $path = path( shift @$list );
while (@$list) {
for my $i ( undef, 0, 1 .. @$list ) {
my $n = ( defined $i && $i > 0 ) ? $i : 1;
my $expect = $list->[ $n - 1 ];
my $got = $path->parent($i);
my $s = defined($i) ? $i : "undef";
is( $got, canonical($expect), "parent($s): $path -> $got" );
is( dir("$path")->parent, canonical($expect), "Path::Class agrees" ) if $DEBUG;
}
$path = $path->parent;
shift @$list;
}
if ( $path !~ m{\Q..\E} ) {
ok( $path->is_rootdir, "final path is root directory" );
}
};
}
done_testing;
#
# This file is part of Path-Tiny
#
# This software is Copyright (c) 2014 by David Golden.
#
# This is free software, licensed under:
#
# The Apache License, Version 2.0, January 2004
#
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| data | Folder | 0755 |
|
|
| fakelib | Folder | 0755 |
|
|
| lib | Folder | 0755 |
|
|
| 00-report-prereqs.dd | File | 4.52 KB | 0644 |
|
| 00-report-prereqs.t | File | 5.88 KB | 0644 |
|
| README | File | 214 B | 0644 |
|
| basename.t | File | 880 B | 0644 |
|
| basic.t | File | 9.06 KB | 0644 |
|
| children.t | File | 1.24 KB | 0644 |
|
| chmod.t | File | 1020 B | 0644 |
|
| digest.t | File | 1.25 KB | 0644 |
|
| exception.t | File | 1.26 KB | 0644 |
|
| exports.t | File | 674 B | 0644 |
|
| filesystem.t | File | 14.21 KB | 0644 |
|
| has_same_bytes.t | File | 2.04 KB | 0644 |
|
| input_output.t | File | 18.31 KB | 0644 |
|
| input_output_no_PU_UU.t | File | 579 B | 0644 |
|
| input_output_no_UU.t | File | 566 B | 0644 |
|
| locking.t | File | 1.37 KB | 0644 |
|
| mkdir.t | File | 1.52 KB | 0644 |
|
| mkpath.t | File | 1.46 KB | 0644 |
|
| mutable_tree_while_iterating.t | File | 1.43 KB | 0644 |
|
| normalize.t | File | 898 B | 0644 |
|
| overloading.t | File | 534 B | 0644 |
|
| parent.t | File | 3.06 KB | 0644 |
|
| recurse.t | File | 3.89 KB | 0644 |
|
| rel-abs.t | File | 7.88 KB | 0644 |
|
| sig_die.t | File | 533 B | 0644 |
|
| size.t | File | 4.76 KB | 0644 |
|
| subsumes.t | File | 3.16 KB | 0644 |
|
| symlinks.t | File | 1.51 KB | 0644 |
|
| temp.t | File | 4.99 KB | 0644 |
|
| visit.t | File | 447 B | 0644 |
|
| zz-atomic.t | File | 922 B | 0644 |
|
| zzz-spec.t | File | 6.62 KB | 0644 |
|