START: ptest-runner
2024-11-20T11:42
1..24
ok 1 - created
ok 2 - An object of class 'URI::geo' isa 'URI::geo'
ok 3 - scheme
ok 4 - opaque
ok 5 - path
ok 6 - fragment
ok 7 - latitude
ok 8 - longitude
ok 9 - altitude
ok 10 - stringify
ok 11 - altitude set
ok 12 - stringify w/ alt
ok 13 - stringify updated w/ alt
ok 14 - created
ok 15 - got location
ok 16 - created
ok 17 - got location
ok 18 - created
ok 19 - got location
ok 20 - crs
ok 21 - u
ok 22 - error ok
ok 23 - eq 1
ok 24 - eq 2
PASS: t/geo_basic
1..4
ok 1
ok 2
ok 3
ok 4
PASS: t/rsync
1..24
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
# ldap://LDAP-HOST:389/o=University%20of%20Michigan,c=US?postalAddress?base?ObjectClass=*?FOO=Bar,bindname=CN%3DManager%CO%3dFoo
# ldap://ldap-host/o=University%20of%20Michigan,c=US?postaladdress???foo=Bar,bindname=CN=Manager%CO=Foo
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
PASS: t/ldap
1..16
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
PASS: t/icap
1..1
# 
# Versions for all modules listed in static metadata (including optional ones):
# 
# === Configure Requires ===
# 
#     Module              Want Have
#     ------------------- ---- ----
#     ExtUtils::MakeMaker  any 7.70
# 
# === Configure Suggests ===
# 
#     Module      Want Have
#     -------- ------- ----
#     JSON::PP 2.27300 4.16
# 
# === Test Requires ===
# 
#     Module                Want     Have
#     --------------------- ---- --------
#     ExtUtils::MakeMaker    any     7.70
#     File::Spec             any     3.90
#     File::Spec::Functions  any     3.91
#     File::Temp             any   0.2311
#     Test::Fatal            any    0.017
#     Test::More            0.96 1.302199
#     Test::Needs            any 0.002010
#     Test::Warnings         any    0.033
#     utf8                   any     1.25
# 
# === Test Recommends ===
# 
#     Module         Want     Have
#     ---------- -------- --------
#     CPAN::Meta 2.120900 2.150010
# 
# === Runtime Requires ===
# 
#     Module           Want     Have
#     ------------ -------- --------
#     Carp              any     1.54
#     Cwd               any     3.90
#     Data::Dumper      any    2.189
#     Encode            any     3.21
#     Exporter         5.57     5.78
#     MIME::Base64        2  3.16_01
#     Net::Domain       any     3.15
#     Scalar::Util      any     1.63
#     constant          any     1.33
#     integer           any     1.01
#     overload          any     1.37
#     parent            any    0.241
#     perl         5.008001 5.040000
#     strict            any     1.13
#     utf8              any     1.25
#     warnings          any     1.70
# 
# === Runtime Suggests ===
# 
#     Module          Want    Have
#     -------------- ----- -------
#     Business::ISBN 3.005 missing
#     Regexp::IPv6    0.03 missing
# 
ok 1 - Reported prereqs
PASS: t/00-report-prereqs
ok 1 - constant indicates NOT to treat square brackets as reserved characters
ok 2 - sqb in path and request
ok 3 - sqb in path and request and fragment
ok 4 - sqb in userinfo, host, path, request and fragment
ok 5 - sqb in userinfo, host, path, request and fragment
ok 6 - scheme
ok 7 - userinfo
ok 8 - host
ok 9 - ihost
ok 10 - port
ok 11 - default_port
ok 12 - host_port
ok 13 - is_secure
ok 14 - path
ok 15 - opaque
ok 16 - fragment
ok 17 - query
ok 18 - as_string
ok 19 - has_recognized_scheme
ok 20 - as_iri
ok 21 - abs (no change)
ok 22 - rel
ok 23 - authority
ok 24 - path_query
ok 25 - query_keywords
ok 26 - segments
ok 27 - scalar: query_form
ok 28 - list: query_form
ok 29 - query removed
ok 30 - list: query_form
ok 31 - query removed: canonical
ok 32 - query
ok 33 - segments
ok 34 - rel/canonical
ok 35 - basic IPv6 URI
ok 36 - basic IPv6 URI
ok 37 - userinfo added (unescaped)
ok 38 - userinfo is escaped
ok 39 - userinfo replaced (escaped)
ok 40 - userinfo is escaped
ok 41 - userinfo replaced (escaped2)
ok 42 - userinfo is escaped2
ok 43 - userinfo replaced (escaped3)
ok 44 - userinfo is escaped3
ok 45 - hostname replaced
ok 46 - hostname replaced
ok 47 - host: example.com
ok 48 - same hosts (example.com)
ok 49 - host: 127.0.0.1
ok 50 - same hosts (127.0.0.1)
ok 51 - IPv6 host: fedc:ba98:7654:3210:fedc:ba98:7654:3210
ok 52 - same IPv6 hosts (fedc:ba98:7654:3210:fedc:ba98:7654:3210)
ok 53 - IPv6 host: ::1
ok 54 - same IPv6 hosts (::1)
ok 55 - path replaced
ok 56 - fragment added
ok 57 - authority replaced
ok 58 - authority replaced
ok 59 - authority replaced
ok 60 - authority replaced
ok 61 - authority replaced
1..61
PASS: t/sq-brackets
1..28
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
PASS: t/iri
1..40
ok 1 - Simple: created
ok 2 - Simple: scheme
ok 3 - Simple: latitude
ok 4 - Simple: longitude
ok 5 - Simple: altitude
ok 6 - Simple w/ alt: created
ok 7 - Simple w/ alt: scheme
ok 8 - Simple w/ alt: latitude
ok 9 - Simple w/ alt: longitude
ok 10 - Simple w/ alt: altitude
ok 11 - Array: created
ok 12 - Array: scheme
ok 13 - Array: latitude
ok 14 - Array: longitude
ok 15 - Array: altitude
ok 16 - Hash, short names: created
ok 17 - Hash, short names: scheme
ok 18 - Hash, short names: latitude
ok 19 - Hash, short names: longitude
ok 20 - Hash, short names: altitude
ok 21 - Hash, long names: created
ok 22 - Hash, long names: scheme
ok 23 - Hash, long names: latitude
ok 24 - Hash, long names: longitude
ok 25 - Hash, long names: altitude
ok 26 - Point object: created
ok 27 - Point object: scheme
ok 28 - Point object: latitude
ok 29 - Point object: longitude
ok 30 - Point object: altitude
ok 31 - Point object: created
ok 32 - Point object: scheme
ok 33 - Point object: latitude
ok 34 - Point object: longitude
ok 35 - Point object: altitude
ok 36 - URI::geo object: created
ok 37 - URI::geo object: scheme
ok 38 - URI::geo object: latitude
ok 39 - URI::geo object: longitude
ok 40 - URI::geo object: altitude
PASS: t/geo_construct
1..13
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
PASS: t/sip
ok 1 - path_segments in list context
ok 2 - path_segments in scalar context
ok 3 - set path_segments in list context
ok 4 - set path_segments in scalar context
ok 5 - set path_segments in void context
ok 6 - escaping special characters
ok 7 - An object of class 'URI::_segment' isa 'URI::_segment'
ok 8 - dealing with URI segments
1..8
PASS: t/path-segments
ok 1
ok 2
ok 3
ok 4
ok 5
1..5
PASS: t/utf8
1..5
ok 1
ok 2
ok 3
ok 4
ok 5
PASS: t/old-relbase
1..45
ok 1 - g:h => g:h
ok 2 - g => http://a/b/c/g
ok 3 - ./g => http://a/b/c/g
ok 4 - g/ => http://a/b/c/g/
ok 5 - /g => http://a/g
ok 6 - //g => http://g
ok 7 - ?y => http://a/b/c/d;p?y
ok 8 - g?y => http://a/b/c/g?y
ok 9 - \#s => http://a/b/c/d;p?q\#s
ok 10 - g\#s => http://a/b/c/g\#s
ok 11 - g?y\#s => http://a/b/c/g?y\#s
ok 12 - ;x => http://a/b/c/;x
ok 13 - g;x => http://a/b/c/g;x
ok 14 - g;x?y\#s => http://a/b/c/g;x?y\#s
ok 15 - . => http://a/b/c/
ok 16 - ./ => http://a/b/c/
ok 17 - .. => http://a/b/
ok 18 - ../ => http://a/b/
ok 19 - ../g => http://a/b/g
ok 20 - ../.. => http://a/
ok 21 - ../../ => http://a/
ok 22 - ../../g => http://a/g
ok 23 - <> => http://a/b/c/d;p?q
ok 24 - ../../../g => http://a/../g
ok 25 - ../../../../g => http://a/../../g
ok 26 - /./g => http://a/./g
ok 27 - /../g => http://a/../g
ok 28 - g. => http://a/b/c/g.
ok 29 - .g => http://a/b/c/.g
ok 30 - g.. => http://a/b/c/g..
ok 31 - ..g => http://a/b/c/..g
ok 32 - ./../g => http://a/b/g
ok 33 - ./g/. => http://a/b/c/g/
ok 34 - g/./h => http://a/b/c/g/h
ok 35 - g/../h => http://a/b/c/h
ok 36 - g;x=1/./y => http://a/b/c/g;x=1/y
ok 37 - g;x=1/../y => http://a/b/c/y
ok 38 - g?y/./x => http://a/b/c/g?y/./x
ok 39 - g?y/../x => http://a/b/c/g?y/../x
ok 40 - g\#s/./x => http://a/b/c/g\#s/./x
ok 41 - g\#s/../x => http://a/b/c/g\#s/../x
ok 42 - http:g => http:g
ok 43 - http: => http:
ok 44 - \#foo? => http://a/b/c/d;p?q\#foo?
ok 45 - ?\#foo => http://a/b/c/d;p?\#foo
# 
# 
# In the following cases we did not get back to where we started with rel()
# 1: URI->new("http://a/b/c/g", "http://a/b/c/d;p?q")->rel ==> "g" (not "./g")
# 1: URI->new("http://a/g", "http://a/b/c/d;p?q")->rel ==> "../../g" (not "/g")
# 1: URI->new("http://g", "http://a/b/c/d;p?q")->rel ==> "http://g" (not "//g")
# 1: URI->new("http://a/b/c/d;p?y", "http://a/b/c/d;p?q")->rel ==> "d;p?y" (not "?y")
# 1: URI->new("http://a/b/c/d;p?q#s", "http://a/b/c/d;p?q")->rel ==> "d;p?q#s" (not "#s")
# 1: URI->new("http://a/b/c/", "http://a/b/c/d;p?q")->rel ==> "./" (not ".")
# 1: URI->new("http://a/b/", "http://a/b/c/d;p?q")->rel ==> "../" (not "..")
# 1: URI->new("http://a/", "http://a/b/c/d;p?q")->rel ==> "../../" (not "../..")
# 1: URI->new("http://a/b/c/d;p?q", "http://a/b/c/d;p?q")->rel ==> "d;p?q" (not "<>")
# 1: URI->new("http://a/./g", "http://a/b/c/d;p?q")->rel ==> "../.././g" (not "/./g")
# 1: URI->new("http://a/../g", "http://a/b/c/d;p?q")->rel ==> "../../../g" (not "/../g")
# 1: URI->new("http://a/b/g", "http://a/b/c/d;p?q")->rel ==> "../g" (not "./../g")
# 1: URI->new("http://a/b/c/g/", "http://a/b/c/d;p?q")->rel ==> "g/" (not "./g/.")
# 1: URI->new("http://a/b/c/g/h", "http://a/b/c/d;p?q")->rel ==> "g/h" (not "g/./h")
# 1: URI->new("http://a/b/c/h", "http://a/b/c/d;p?q")->rel ==> "h" (not "g/../h")
# 1: URI->new("http://a/b/c/g;x=1/y", "http://a/b/c/d;p?q")->rel ==> "g;x=1/y" (not "g;x=1/./y")
# 1: URI->new("http://a/b/c/y", "http://a/b/c/d;p?q")->rel ==> "y" (not "g;x=1/../y")
# 1: URI->new("http://a/b/c/d;p?q#foo?", "http://a/b/c/d;p?q")->rel ==> "d;p?q#foo?" (not "#foo?")
# 1: URI->new("http://a/b/c/d;p?#foo", "http://a/b/c/d;p?q")->rel ==> "d;p?#foo" (not "?#foo")
PASS: t/abs
1..48
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43
ok 44
ok 45
ok 46
ok 47
ok 48
PASS: t/generic
1..8
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
PASS: t/pop
ok 1 - userinfo is included
ok 2 - set password to undef
ok 3 - ... also for username "0"
1..3
PASS: t/userpass
ok 1 - constant indicates to treat square brackets as reserved characters (legacy)
ok 2 - legacy: reserved square brackets not escaped
ok 3 - legacy: reserved square brackets not escaped
ok 4 - legacy: reserved square brackets not escaped
ok 5 - legacy: reserved square brackets not escaped
ok 6 - legacy: reserved square brackets not escaped
ok 7 - legacy: reserved square brackets not escaped
1..7
PASS: t/sq-brackets-legacy
1..48
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43
ok 44
ok 45
ok 46
ok 47
ok 48
PASS: t/gopher
ok 1 - parsing normal URI sets to()
ok 2 - ... and stringification works
ok 3 - to() returns old value
ok 4 - ... and sets new value
ok 5 - ... and stringification works
ok 6 - to() accepts chars that need escaping
ok 7 - ... and stringification escapes them
ok 8 - ... and headers() returns the correct values
ok 9 - setting multiple headers at once works
ok 10 - ... and to() returns the new value
ok 11 - ... and stringification works
ok 12 - starting with an empty URI and setting to() works
ok 13 - subaddress with `+` parsed correctly
ok 14 - ... and stringification works
ok 15 - IPv4 host name
ok 16 - ... and stringification works
ok 17 - IPv4 host name
ok 18 - ... and stringification works
1..18
PASS: t/mailto
1..16
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
PASS: t/http
1..6
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
PASS: t/old-absconf
1..26
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
PASS: t/heuristic
1..6
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
PASS: t/mix
1..102
# t/roytest1.html
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
# t/roytest2.html
ok 43
ok 44
ok 45
ok 46
ok 47
ok 48
ok 49
ok 50
ok 51
ok 52
ok 53
ok 54
ok 55
ok 56
ok 57
ok 58
ok 59
# t/roytest3.html
ok 60
ok 61
ok 62
ok 63
ok 64
ok 65
ok 66
ok 67
ok 68
ok 69
ok 70
ok 71
ok 72
# t/roytest4.html
ok 73
ok 74
ok 75
ok 76
ok 77
ok 78
ok 79
ok 80
ok 81
ok 82
ok 83
ok 84
ok 85
ok 86
ok 87
# t/roytest5.html
ok 88
ok 89
ok 90
ok 91
ok 92
ok 93
ok 94
ok 95
ok 96
ok 97
ok 98
ok 99
ok 100
ok 101
ok 102
PASS: t/roy-test
1..15
ok 1 - http://en.wikipedia.org/wiki/Punycode example encode
ok 2 - http://en.wikipedia.org/wiki/Punycode example decode
ok 3 - A encode
ok 4 - A decode
ok 5 - B encode
ok 6 - B decode
ok 7 - E encode
ok 8 - E decode
ok 9 - J encode
ok 10 - J decode
ok 11 - K encode
ok 12 - K decode
ok 13 - O encode
ok 14 - O decode
ok 15 - S encode
PASS: t/punycode
# store
1..3
# retrieve
ok 1
ok 2
ok 3
PASS: t/storable
1..8
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
PASS: t/mms
ok 1 - Query parameters are sorted
1..1
PASS: t/sort-hash-query-form
1..13
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
PASS: t/ftp
1..17
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
PASS: t/split
1..7
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
PASS: t/idna
1..8
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
PASS: t/news
1..2
ok 1
ok 2
PASS: t/clone
ok 1 - only attempt to load the scheme package once
ok 2 - no exception when trying to load a scheme handler class
ok 3 - but URI still instantiated as foreign
# 1
ok 4 - only attempt to load the scheme package once
ok 5 - no exception when trying to load a scheme handler class
ok 6 - but URI still instantiated as foreign
# 1
1..6
PASS: t/scheme-exceptions
1..6
ok 1 - only attempt to load the scheme package once
ok 2 - no exception when trying to load a scheme handler class
ok 3 - but URI still instantiated as foreign
ok 4 - only attempt to load the scheme package once
ok 5 - no exception when trying to load a scheme handler class
ok 6 - but URI still instantiated as foreign
PASS: t/urn-scheme-exceptions
1..9
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
PASS: t/rtsp
1..19
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
PASS: t/rfc2732
1..20
ok 1 - query_form_hash get
ok 2 - query_form_hash set
ok 3 - query_param list keys
ok 4 - query_param scalar return
ok 5 - query_param list return
ok 6 - query_param set return
ok 7 - param order
ok 8 - old values returned
ok 9
ok 10 - query_param_delete
ok 11
ok 12
ok 13 - delete by assigning empty list
ok 14 - query_param from scratch
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
PASS: t/query-param
1..4
ok 1
ok 2
ok 3
ok 4
PASS: t/urn-oid
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8 - it should accept slash in unwanted characters
ok 9 - it should accept regex char group terminator in unwanted characters
ok 10 - it should accept regex escape character at the end of unwanted characters
ok 11 - it should recognize scalar interpolation injection in unwanted characters
ok 12 - it should recognize array interpolation injection in unwanted characters
ok 13 - it should recognize hash interpolation injection in unwanted characters
ok 14 - it should recognize leading minus
ok 15 - it should recognize leading ^-
ok 16 - it should recognize character groups
ok 17 - it should allow character class escapes
ok 18 - regex characters like / and ^ allowed in range
ok 19 - invalid range with max less than min throws exception
ok 20 - it should allow character class escapes
ok 21 - bad escapes emit warnings
ok 22 - allows regexp objects
ok 23 - allows regexp objects matching multiple characters
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29 - no (unexpected) warnings (via done_testing)
1..29
PASS: t/escape
ok 1 - correctly created a URI from a utf8-downgrade string
1..1
PASS: t/escape-char
1..22
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
PASS: t/data
ok 1 - ==
ok 2 - !=
1..2
PASS: t/num_eq
1..12
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
PASS: t/old-file
1..0 # SKIP Needs Geo::Point
1..0 # SKIP Needs Geo::Point
SKIP: t/geo_point
ok 1 - host
ok 2 - port
1..2
PASS: t/ipv6
1..37
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
PASS: t/query
# Turn lib path . into /usr/lib/liburi-perl/ptest/.
# Self tests for URI::URL version 5.28...
# Subtest: scheme tests
    # Testing 'file://host/fseg/fs?g/fseg'
    ok 1 - URI::URL->path
    ok 2 - URI::URL->as_string
    ok 3 - URI::URL->host
    # Testing 'ftp://0%3A:%40@h:0/0?0'
    ok 4 - URI::URL->path
    ok 5 - URI::URL->as_string
    ok 6 - URI::URL->query
    ok 7 - URI::URL->scheme
    ok 8 - URI::URL->port
    ok 9 - URI::URL->password
    ok 10 - URI::URL->params
    ok 11 - URI::URL->netloc
    ok 12 - URI::URL->host
    ok 13 - URI::URL->user
    # Testing 'ftp://host/a/b'
    ok 14 - URI::URL->as_string
    ok 15 - URI::URL->path
    ok 16 - URI::URL->host
    ok 17 - URI::URL->user
    ok 18 - URI::URL->port
    # Testing 'ftp://usr:pswd@web:1234/a/b;type=i'
    ok 19 - URI::URL->port
    ok 20 - URI::URL->as_string
    ok 21 - URI::URL->path
    ok 22 - URI::URL->host
    ok 23 - URI::URL->user
    ok 24 - URI::URL->params
    ok 25 - URI::URL->password
    # Testing 'gopher://gopher/2a_selector'
    ok 26 - URI::URL->selector
    ok 27 - URI::URL->as_string
    ok 28 - URI::URL->gtype
    # Testing 'gopher://host'
    ok 29 - URI::URL->as_string
    ok 30 - URI::URL->gtype
    # Testing 'gopher://host/'
    ok 31 - URI::URL->gtype
    ok 32 - URI::URL->as_string
    # Testing 'hTTp://web1.net/a/b/c/welcome#intro'
    ok 33 - URI::URL->scheme
    ok 34 - URI::URL->as_string
    ok 35 - URI::URL->frag
    ok 36 - URI::URL->port
    ok 37 - URI::URL->epath
    ok 38 - URI::URL->query
    ok 39 - URI::URL->path
    ok 40 - URI::URL->full_path
    ok 41 - URI::URL->eparams
    ok 42 - URI::URL->host
    ok 43 - URI::URL->equery
    ok 44 - URI::URL->params
    # Testing 'http://0:0/0/0;0?0#0'
    ok 45 - URI::URL->host
    ok 46 - URI::URL->frag
    ok 47 - URI::URL->netloc
    ok 48 - URI::URL->params
    ok 49 - URI::URL->port
    ok 50 - URI::URL->scheme
    ok 51 - URI::URL->path
    ok 52 - URI::URL->as_string
    ok 53 - URI::URL->query
    # Testing 'http://web.net'
    ok 54 - URI::URL->scheme
    ok 55 - URI::URL->port
    ok 56 - URI::URL->path
    ok 57 - URI::URL->as_string
    ok 58 - URI::URL->query
    ok 59 - URI::URL->host
    ok 60 - URI::URL->full_path
    ok 61 - URI::URL->frag
    # Testing 'http://web.net/'
    ok 62 - URI::URL->full_path
    ok 63 - URI::URL->host
    ok 64 - URI::URL->frag
    ok 65 - URI::URL->port
    ok 66 - URI::URL->scheme
    ok 67 - URI::URL->as_string
    ok 68 - URI::URL->query
    ok 69 - URI::URL->path
    # Testing 'http://web:1/a?query+text'
    ok 70 - URI::URL->path
    ok 71 - URI::URL->query
    ok 72 - URI::URL->scheme
    ok 73 - URI::URL->port
    ok 74 - URI::URL->frag
    ok 75 - URI::URL->host
    # Testing 'http:/0?0'
    ok 76 - URI::URL->path
    ok 77 - URI::URL->as_string
    ok 78 - URI::URL->query
    ok 79 - URI::URL->full_path
    ok 80 - URI::URL->scheme
    # Testing 'http:0'
    ok 81 - URI::URL->as_string
    ok 82 - URI::URL->path
    ok 83 - URI::URL->query
    ok 84 - URI::URL->scheme
    ok 85 - URI::URL->full_path
    # Testing 'mailto:libwww-perl@ics.uci.edu'
    ok 86 - URI::URL->encoded822addr
    ok 87 - URI::URL->as_string
    ok 88 - URI::URL->address
    # Testing 'news:*'
    ok 89 - URI::URL->group
    ok 90 - URI::URL->as_string
    ok 91 - URI::URL->groupart
    # Testing 'news:comp.lang.perl'
    ok 92 - URI::URL->group
    # Testing 'news:perl-faq/module-list-1-794455075@ig.co.uk'
    ok 93 - URI::URL->article
    # Testing 'nntp://news.com/comp.lang.perl/42'
    ok 94 - URI::URL->group
    # Testing 'rlogin://aas@a.sn.no'
    ok 95 - URI::URL->user
    ok 96 - URI::URL->host
    # Testing 'telnet://usr:pswd@web:12345/'
    ok 97 - URI::URL->host
    ok 98 - URI::URL->user
    ok 99 - URI::URL->password
    1..99
ok 1 - scheme tests
# Subtest: parts test
    ok 1 - URI::URL->as_string
    ok 2 - URI::URL->full_path
    ok 3 - URI::URL->as_string
    ok 4 - URI::URL->full_path
    ok 5 - URI::URL->as_string
    ok 6 - URI::URL->as_string
    ok 7 - URI::URL->as_string
    ok 8 - URI::URL->as_string
    ok 9 - URI::URL->as_string
    ok 10 - $url->keywords
    ok 11 - URI::URL->as_string
    ok 12 - $url->query_form
    ok 13 - URI::URL->as_string
    ok 14 - length
    ok 15 - query_form
    ok 16 - length
    ok 17 - sequence
    ok 18 - URI::URL->as_string
    ok 19 - URI::URL->as_string
    # Subtest: netloc_test
        ok 1 - URI::URL->as_string
        ok 2 - URI::URL->as_string
        ok 3 - URI::URL->as_string
        ok 4 - URI::URL->as_string
        ok 5 - URI::URL->as_string
        ok 6 - URI::URL->as_string
        ok 7 - URI::URL->as_string
        ok 8 - URI::URL->as_string
        ok 9 - URI::URL->as_string
        ok 10 - URI::URL->as_string
        ok 11 - URI::URL->as_string
        ok 12 - URI::URL->as_string
        ok 13 - URI::URL->as_string
        ok 14 - URI::URL->as_string
        ok 15 - URI::URL->as_string
        ok 16 - URI::URL->as_string
        1..16
    ok 20 - netloc_test
    # Subtest: port_test
        ok 1 - port
        ok 2 - string
        ok 3 - port
        ok 4 - string
        ok 5 - port
        ok 6 - string
        ok 7 - port
        ok 8 - string
        1..8
    ok 21 - port_test
    ok 22 - URI::URL->as_string
    ok 23 - URI::URL->as_string
    ok 24 - URI::URL->as_string
    ok 25 - URI::URL->as_string
    ok 26 - URI::URL->as_string
    ok 27 - URI::URL->as_string
    ok 28 - URI::URL->as_string
    ok 29 - URI::URL->as_string
    ok 30 - URI::URL->as_string: "<" and ">" are gone
    ok 31 - 9 elements
    # Cracked result: http*UNDEF*UNDEF*host*80*/path*param*query*frag
    ok 32 - crack result
    ok 33 - 9 elements
    # Cracked result: UNDEF*anonymous*anonymous@*UNDEF*21*foo/bar*UNDEF*UNDEF*UNDEF
    ok 34 - 9 elements
    # Cracked result: ftp*u*p*host*21*/q?path*UNDEF*path*UNDEF
    ok 35 - crack result
    ok 36 - 9 elements
    ok 37 - passwd in anonymous crack
    # Cracked result: ftp*anonymous*passwd*ftp.sn.no*21*/pub*UNDEF*UNDEF*UNDEF
    ok 38 - crack result
    ok 39 - 9 elements
    # Cracked result: mailto*UNDEF*UNDEF*UNDEF*UNDEF*/aas@sn.no*UNDEF*UNDEF*UNDEF
    ok 40 - 9 elements
    # Cracked result: news*UNDEF*UNDEF*UNDEF*119*comp.lang.perl.misc*UNDEF*UNDEF*UNDEF
    ok 41 - crack result
    1..41
ok 2 - parts test
# Subtest: escape test
    ok 1 - URI::URL->as_string
    ok 2 - URI::URL->as_string
    ok 3 - URI::URL->as_string
    ok 4 - uri_escape->uri_unescape
    ok 5 - URI::URL->as_string
    ok 6 - URI::URL->as_string
    1..6
ok 3 - escape test
# Subtest: newlocal test
    ok 1 - URI::URL->as_string
    # Local directory is /var/volatile/tmp/nZAPW5a5b0/
    ok 2 - URI::URL->as_string
    ok 3 - URI::URL->as_string
    ok 4 - URI::URL->as_string
    ok 5 - URI::URL->as_string
    ok 6 - URI::URL->as_string
    ok 7 - URI::URL->as_string
    ok 8 - URI::URL->as_string
    ok 9 - URI::URL->as_string
    ok 10 - URI::URL->as_string
    ok 11 - URI::URL->as_string
    ok 12 - URI::URL->as_string
    ok 13 - URI::URL->as_string
    ok 14 - URI::URL->as_string
    ok 15 - URI::URL->as_string
    ok 16 - URI::URL->as_string
    ok 17 - URI::URL->as_string
    ok 18 - URI::URL->as_string
    ok 19 - URI::URL->as_string
    ok 20 - URI::URL->as_string
    1..20
ok 4 - newlocal test
# Subtest: Test relative/absolute URI::URL parsing
    #   Relative    +  Base  =>  Expected Absolute URL
    # ------------------------------------------------
    #   g:h         +  http://a/b/c/d;p?q#f  =>  g:h
    ok 1 - URI::URL->as_string
    #   g           +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g
    ok 2 - URI::URL->as_string
    #   ./g         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g
    ok 3 - URI::URL->as_string
    #   g/          +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g/
    ok 4 - URI::URL->as_string
    #   /g          +  http://a/b/c/d;p?q#f  =>  http://a/g
    ok 5 - URI::URL->as_string
    #   //g         +  http://a/b/c/d;p?q#f  =>  http://g
    ok 6 - URI::URL->as_string
    #   g?y         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g?y
    ok 7 - URI::URL->as_string
    #   g?y/./x     +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g?y/./x
    ok 8 - URI::URL->as_string
    #   #s          +  http://a/b/c/d;p?q#f  =>  http://a/b/c/d;p?q#s
    ok 9 - URI::URL->as_string
    #   g#s         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g#s
    ok 10 - URI::URL->as_string
    #   g#s/./x     +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g#s/./x
    ok 11 - URI::URL->as_string
    #   g?y#s       +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g?y#s
    ok 12 - URI::URL->as_string
    #   g;x         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g;x
    ok 13 - URI::URL->as_string
    #   g;x?y#s     +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g;x?y#s
    ok 14 - URI::URL->as_string
    #   .           +  http://a/b/c/d;p?q#f  =>  http://a/b/c/
    ok 15 - URI::URL->as_string
    #   ./          +  http://a/b/c/d;p?q#f  =>  http://a/b/c/
    ok 16 - URI::URL->as_string
    #   ..          +  http://a/b/c/d;p?q#f  =>  http://a/b/
    ok 17 - URI::URL->as_string
    #   ../         +  http://a/b/c/d;p?q#f  =>  http://a/b/
    ok 18 - URI::URL->as_string
    #   ../g        +  http://a/b/c/d;p?q#f  =>  http://a/b/g
    ok 19 - URI::URL->as_string
    #   ../..       +  http://a/b/c/d;p?q#f  =>  http://a/
    ok 20 - URI::URL->as_string
    #   ../../      +  http://a/b/c/d;p?q#f  =>  http://a/
    ok 21 - URI::URL->as_string
    #   ../../g     +  http://a/b/c/d;p?q#f  =>  http://a/g
    ok 22 - URI::URL->as_string
    #               +  http://a/b/c/d;p?q#f  =>  http://a/b/c/d;p?q#f
    ok 23 - URI::URL->as_string
    #   /./g        +  http://a/b/c/d;p?q#f  =>  http://a/./g
    ok 24 - URI::URL->as_string
    #   /../g       +  http://a/b/c/d;p?q#f  =>  http://a/../g
    ok 25 - URI::URL->as_string
    #   g.          +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g.
    ok 26 - URI::URL->as_string
    #   .g          +  http://a/b/c/d;p?q#f  =>  http://a/b/c/.g
    ok 27 - URI::URL->as_string
    #   g..         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g..
    ok 28 - URI::URL->as_string
    #   ..g         +  http://a/b/c/d;p?q#f  =>  http://a/b/c/..g
    ok 29 - URI::URL->as_string
    #   ./../g      +  http://a/b/c/d;p?q#f  =>  http://a/b/g
    ok 30 - URI::URL->as_string
    #   ./g/.       +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g/
    ok 31 - URI::URL->as_string
    #   g/./h       +  http://a/b/c/d;p?q#f  =>  http://a/b/c/g/h
    ok 32 - URI::URL->as_string
    #   g/../h      +  http://a/b/c/d;p?q#f  =>  http://a/b/c/h
    ok 33 - URI::URL->as_string
    #   http:g      +  http://a/b/c/d;p?q#f  =>  http:g
    ok 34 - URI::URL->as_string
    #   http:       +  http://a/b/c/d;p?q#f  =>  http:
    ok 35 - URI::URL->as_string
    #   x/y//../z   +  http://a/b/c/d;p?q#f  =>  http://a/b/c/x/y/z
    ok 36 - URI::URL->as_string
    #   1           +  http://a/b/c/d;p?q#f  =>  http://a/b/c/1
    ok 37 - URI::URL->as_string
    #   0           +  http://a/b/c/d;p?q#f  =>  http://a/b/c/0
    ok 38 - URI::URL->as_string
    #   /0          +  http://a/b/c/d;p?q#f  =>  http://a/0
    ok 39 - URI::URL->as_string
    ok 40 - identity
    ok 41 - URL canonicalised
    # --------
    #   http://abc/ +  news:45664545  =>  http://abc/
    ok 42 - ->as_string
    #   news:abc    +  http://abc/  =>  news:abc
    ok 43 - ->as_string
    #   abc         +  file:/test?aas  =>  file:/abc
    ok 44 - ->as_string
    #   ?foo        +  file:/abc  =>  file:/abc?foo
    ok 45 - ->as_string
    #   #foo        +  http://abc/a  =>  http://abc/a#foo
    ok 46 - ->as_string
    #   #foo        +  file:a  =>  file:a#foo
    ok 47 - ->as_string
    #   #foo        +  file:/a  =>  file:/a#foo
    ok 48 - ->as_string
    #   #foo        +  file:/a  =>  file:/a#foo
    ok 49 - ->as_string
    #   #foo        +  file://localhost/a  =>  file://localhost/a#foo
    ok 50 - ->as_string
    #   123@sn.no   +  news:comp.lang.perl.misc  =>  news:/123@sn.no
    ok 51 - ->as_string
    #   no.perl     +  news:123@sn.no  =>  news:/no.perl
    ok 52 - ->as_string
    #   mailto:aas@a.sn.no+  http://www.sn.no/  =>  mailto:aas@a.sn.no
    ok 53 - ->as_string
    #   http:foo    +  http://h/a/b  =>  http://h/a/foo
    ok 54 - ->as_string
    #   http:/foo   +  http://h/a/b  =>  http://h/foo
    ok 55 - ->as_string
    #   http:?foo   +  http://h/a/b  =>  http://h/a/b?foo
    ok 56 - ->as_string
    #   http:#foo   +  http://h/a/b  =>  http://h/a/b#foo
    ok 57 - ->as_string
    #   http:?foo#bar+  http://h/a/b  =>  http://h/a/b?foo#bar
    ok 58 - ->as_string
    #   file:/foo   +  http://h/a/b  =>  file:/foo
    ok 59 - ->as_string
    # absolute test ok
    ok 60 - url('http://abc/a', 'http://abc')->rel = 'a'
    ok 61 - url('http://abc/a', 'http://abc/b')->rel = 'a'
    ok 62 - url('http://abc/a?q', 'http://abc/b')->rel = 'a?q'
    ok 63 - url('http://abc/a;p', 'http://abc/b')->rel = 'a;p'
    ok 64 - url('http://abc/a', 'http://abc/a/b/c/')->rel = '../../../a'
    ok 65 - url('http://abc/a/', 'http://abc/a/')->rel = './'
    ok 66 - url('http://abc/a\#f', 'http://abc/a')->rel = '\#f'
    ok 67 - url('file:/etc/motd', 'file:/')->rel = 'etc/motd'
    ok 68 - url('file:/etc/motd', 'file:/etc/passwd')->rel = 'motd'
    ok 69 - url('file:/etc/motd', 'file:/etc/rc2.d/')->rel = '../motd'
    ok 70 - url('file:/etc/motd', 'file:/usr/lib/doc')->rel = '../../etc/motd'
    ok 71 - url('file:', 'file:/etc/')->rel = '../'
    ok 72 - url('file:foo', 'file:/etc/')->rel = '../foo'
    ok 73 - url('mailto:aas', 'http://abc')->rel = 'mailto:aas'
    ok 74 - url('http://www.math.uio.no/doc/mail/top.html', 'http://www.math.uio.no/doc/linux/')->rel = '../mail/top.html'
    # relative test ok
    1..74
ok 5 - Test relative/absolute URI::URL parsing
# Subtest: eq test
    ok 1 - 1: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 2 - 2: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 3 - 3: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 4 - 4: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 5 - 5: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 6 - 6: http://abc.com/~smith/home.html ne http://abc.com/~smith/home.html
    ok 7 - 7: http://www.sn.no/
    ok 8 - 8: http://www.sn.no/
    ok 9 - 10: ftp://ftp/%2Fetc
    ok 10 - 11: ftp://ftp/%2Fetc
    1..10
ok 6 - eq test
ok 7 - URI::URL->as_string
ok 8 - URI::URL->path
ok 9 - wash&go
# URI::URL version 5.28 ok
1..9
PASS: t/old-base
1..6
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
PASS: t/rel
1..0 # SKIP Need Business::ISBN 3.005
1..0 # SKIP Need Business::ISBN 3.005
SKIP: t/urn-isbn
DURATION: 3
