#!/usr/bin/perl -- use strict; use warnings; use URI; Main( @ARGV ); exit( 0 ); sub Main { ABT(); } sub ABT { require Test::More; Test::More->import(qw' no_plan '); my $base = URI->new("http://a/d/../e/"); my $uri = URI->new("http://a/y"); is( $base, ( "http://a/d/../e/" ) x 2 ); is( $base->path, ( "/d/../e/" ) x 2 ); is( $uri, ( "http://a/y" ) x 2 ); is( $uri->path, ( "/y" ) x 2 ); diag("should the following be equivalent??"); is( $uri->rel($base), "??", q~$uri->rel($base)~ ); is( URI->new( $uri->path )->rel( $base->path ), $uri->rel($base), q~URI->new( $uri->path )->rel( $base->path )~ ); is( URI->new("/y")->rel("/d/../e/"), $uri->rel($base), q~URI->new("/y")->rel("/d/../e/") ~ ); } __END__ ok 1 - http://a/d/../e/ ok 2 - /d/../e/ ok 3 - http://a/y ok 4 - /y # should the following be equivalent?? not ok 5 - $uri->rel($base) # Failed test '$uri->rel($base)' # at - line 27. # got: '../../../y' # expected: '??' not ok 6 - URI->new( $uri->path )->rel( $base->path ) # Failed test 'URI->new( $uri->path )->rel( $base->path )' # at - line 28. # got: '/y' # expected: '../../../y' not ok 7 - URI->new("/y")->rel("/d/../e/") # Failed test 'URI->new("/y")->rel("/d/../e/") ' # at - line 30. # got: '/y' # expected: '../../../y' 1..7 # Looks like you failed 3 tests of 7.