starting phase `set-SOURCE-DATE-EPOCH' phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds starting phase `set-paths' environment variable `PATH' set to `/gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/bin:/gnu/store/ch68x8gcsibgw9g75afqs836jmd0919l-bundler-2.1.4/bin:/gnu/store/sqby45jw1w6963l81gkz2jahlkm2lbny-ruby-yard-0.9.25/bin:/gnu/store/vffvncn7d149shc7c2znx2ia7mg30d8j-tar-1.34/bin:/gnu/store/bdwsnfq7y20cwzxd5xdipz2lqndcniv2-gzip-1.10/bin:/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/bin:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/bin:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/bin:/gnu/store/gzl6fga809pi6x0mncgh4hl97xcrai2v-diffutils-3.8/bin:/gnu/store/d8nk495685457rpmdf6a46278zijc4mf-patch-2.7.6/bin:/gnu/store/5sr7igkcclqyz01g0q3f2gsc5y5lg7am-findutils-4.8.0/bin:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/bin:/gnu/store/axhn2x0d98gj3fmrlc06d5j1vn715ray-sed-4.8/bin:/gnu/store/f4kp7yaiqp9imxf2r9lm3kzs35cwfsc8-grep-3.6/bin:/gnu/store/kvpvk5wh70wdbjnr83hh85rg22ysxm9h-coreutils-8.32/bin:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/bin:/gnu/store/lzf5zg0diw2bhh2qji4bl2v46wd8pylc-bash-minimal-5.1.8/bin:/gnu/store/1khybib025zzd3hjqkaw8bf909ccbq2b-ld-wrapper-0/bin:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/bin:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/bin:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/bin:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/sbin:/gnu/store/lz68phlisvc36x3jcrny6wairb27a2h1-ruby-rspec-core-3.8.0/bin:/gnu/store/wqkp4gaa6pi2la6dm5lxcjfjdpr3jjxl-ruby-rack-2.2.3/bin:/gnu/store/8pdfzhm26nvrj09iqq1rs15mpygdmaw4-ruby-diff-lcs-1.3/bin' environment variable `GEM_PATH' set to `/gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/lib/ruby/vendor_ruby:/gnu/store/ajwb1ak23r1l7l3h57p9hkzn774qn8nb-ruby-rspec-3.8.0/lib/ruby/vendor_ruby:/gnu/store/ch68x8gcsibgw9g75afqs836jmd0919l-bundler-2.1.4/lib/ruby/vendor_ruby:/gnu/store/1vqgzik26y6x143izmn2lg2giqjg084y-ruby-idn-ruby-0.1.0/lib/ruby/vendor_ruby:/gnu/store/vzz7d48fwiwrzdn2kjyrrwr51jijrqsa-ruby-sporkmonger-rack-mount-0.8.3-1.076aa2c/lib/ruby/vendor_ruby:/gnu/store/jvhpdssbwlp61pra25hay824sz4naqir-ruby-rspec-its-1.3.0/lib/ruby/vendor_ruby:/gnu/store/sqby45jw1w6963l81gkz2jahlkm2lbny-ruby-yard-0.9.25/lib/ruby/vendor_ruby:/gnu/store/3pjl2h6jgr9vj73icpphszdrxkv65syg-ruby-simplecov-0.17.1/lib/ruby/vendor_ruby:/gnu/store/fx6w0wr5vmlp1g3z667ccln1g9kwqsja-ruby-public-suffix-4.0.5/lib/ruby/vendor_ruby:/gnu/store/whwb9fmnkrycw98yw5pp04jx163s4iaq-ruby-rspec-expectations-3.8.2/lib/ruby/vendor_ruby:/gnu/store/0850hvifykj4lr37vaqdhqkvqq056qm3-ruby-rspec-mocks-3.8.0/lib/ruby/vendor_ruby:/gnu/store/lz68phlisvc36x3jcrny6wairb27a2h1-ruby-rspec-core-3.8.0/lib/ruby/vendor_ruby:/gnu/store/wqkp4gaa6pi2la6dm5lxcjfjdpr3jjxl-ruby-rack-2.2.3/lib/ruby/vendor_ruby:/gnu/store/zn6f8inhmlw6m2vqlfnn6zkjafwl6jc8-ruby-simplecov-html-0.10.2/lib/ruby/vendor_ruby:/gnu/store/j3z7lhdcrvy6x8gbi5mvn2rsmrxpxr5b-ruby-docile-1.1.5/lib/ruby/vendor_ruby:/gnu/store/xkwk76dmnm8a8g3w32jiv2wj927wajrw-ruby-json-2.1.0/lib/ruby/vendor_ruby:/gnu/store/8pdfzhm26nvrj09iqq1rs15mpygdmaw4-ruby-diff-lcs-1.3/lib/ruby/vendor_ruby:/gnu/store/rc2q9qgx5gbjj7ncnnchmw36y5y275zs-ruby-rspec-support-3.8.0/lib/ruby/vendor_ruby' environment variable `BASH_LOADABLES_PATH' unset environment variable `C_INCLUDE_PATH' set to `/gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/include:/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/include:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/include:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/include:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/include:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/include:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/include:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/include:/gnu/store/yir33hnhnb331lz2wp0l1q97yhbxgc41-zlib-1.2.11/include:/gnu/store/gm5mbaxkqhzafwy0wnimrg53j884glxn-linux-libre-headers-5.10.35/include' environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/include:/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/include:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/include:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/include:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/include:/gnu/store/74aw9c2yfpgbwac78c5jddhk2lf03958-make-4.3/include:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/include:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include/c++:/gnu/store/dbcbcaxq20kbkhh2mr8k98qfnymq22kp-gcc-10.3.0/include:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/include:/gnu/store/yir33hnhnb331lz2wp0l1q97yhbxgc41-zlib-1.2.11/include:/gnu/store/gm5mbaxkqhzafwy0wnimrg53j884glxn-linux-libre-headers-5.10.35/include' environment variable `LIBRARY_PATH' set to `/gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/lib:/gnu/store/ajwb1ak23r1l7l3h57p9hkzn774qn8nb-ruby-rspec-3.8.0/lib:/gnu/store/ch68x8gcsibgw9g75afqs836jmd0919l-bundler-2.1.4/lib:/gnu/store/1vqgzik26y6x143izmn2lg2giqjg084y-ruby-idn-ruby-0.1.0/lib:/gnu/store/vzz7d48fwiwrzdn2kjyrrwr51jijrqsa-ruby-sporkmonger-rack-mount-0.8.3-1.076aa2c/lib:/gnu/store/jvhpdssbwlp61pra25hay824sz4naqir-ruby-rspec-its-1.3.0/lib:/gnu/store/sqby45jw1w6963l81gkz2jahlkm2lbny-ruby-yard-0.9.25/lib:/gnu/store/3pjl2h6jgr9vj73icpphszdrxkv65syg-ruby-simplecov-0.17.1/lib:/gnu/store/fx6w0wr5vmlp1g3z667ccln1g9kwqsja-ruby-public-suffix-4.0.5/lib:/gnu/store/hq8w61vwbjgr7kkwdfvcr9wgdf7i7pyf-bzip2-1.0.8/lib:/gnu/store/3bmnfqz1a46ddl89iqcargdf2ximijxs-xz-5.2.5/lib:/gnu/store/q4g6nw26jlg61018xhjn575nzc975wh3-file-5.39/lib:/gnu/store/z42b5grcygvc8rxp3638qhkjv1410b4d-gawk-5.1.0/lib:/gnu/store/0cwwi9fdd1xx0pn0xxk4xya6wdhliyds-binutils-2.37/lib:/gnu/store/gfjp8gfv4xxschbaxvldpigadfwqazhw-glibc-2.33/lib:/gnu/store/4yb66zp717gb7hc5a1q4lkxhami93d4b-glibc-2.33-static/lib:/gnu/store/akml58i0q8mikg7xf6hm789mzlijpm5j-glibc-utf8-locales-2.33/lib:/gnu/store/yir33hnhnb331lz2wp0l1q97yhbxgc41-zlib-1.2.11/lib:/gnu/store/whwb9fmnkrycw98yw5pp04jx163s4iaq-ruby-rspec-expectations-3.8.2/lib:/gnu/store/0850hvifykj4lr37vaqdhqkvqq056qm3-ruby-rspec-mocks-3.8.0/lib:/gnu/store/lz68phlisvc36x3jcrny6wairb27a2h1-ruby-rspec-core-3.8.0/lib:/gnu/store/wqkp4gaa6pi2la6dm5lxcjfjdpr3jjxl-ruby-rack-2.2.3/lib:/gnu/store/zn6f8inhmlw6m2vqlfnn6zkjafwl6jc8-ruby-simplecov-html-0.10.2/lib:/gnu/store/j3z7lhdcrvy6x8gbi5mvn2rsmrxpxr5b-ruby-docile-1.1.5/lib:/gnu/store/xkwk76dmnm8a8g3w32jiv2wj927wajrw-ruby-json-2.1.0/lib:/gnu/store/8pdfzhm26nvrj09iqq1rs15mpygdmaw4-ruby-diff-lcs-1.3/lib:/gnu/store/rc2q9qgx5gbjj7ncnnchmw36y5y275zs-ruby-rspec-support-3.8.0/lib' environment variable `GUIX_LOCPATH' set to `/gnu/store/akml58i0q8mikg7xf6hm789mzlijpm5j-glibc-utf8-locales-2.33/lib/locale' phase `set-paths' succeeded after 0.0 seconds starting phase `install-locale' using 'en_US.utf8' locale for category "LC_ALL" phase `install-locale' succeeded after 0.0 seconds starting phase `unpack' Unpacked gem: '/tmp/guix-build-ruby-addressable-2.7.0.drv-0/2qb0zgmlihfjxaj5kcx3diyby0ym86sc-addressable-2.7.0' phase `unpack' succeeded after 0.5 seconds starting phase `remove-unnecessary-dependencies-from-Gemfile' phase `remove-unnecessary-dependencies-from-Gemfile' succeeded after 0.0 seconds starting phase `patch-usr-bin-file' phase `patch-usr-bin-file' succeeded after 0.0 seconds starting phase `patch-source-shebangs' phase `patch-source-shebangs' succeeded after 0.0 seconds starting phase `patch-generated-file-shebangs' phase `patch-generated-file-shebangs' succeeded after 0.0 seconds starting phase `extract-gemspec' phase `extract-gemspec' succeeded after 0.4 seconds starting phase `replace-git-ls-files' phase `replace-git-ls-files' succeeded after 0.0 seconds starting phase `build' Successfully built RubyGem Name: addressable Version: 2.7.0 File: addressable-2.7.0.gem phase `build' succeeded after 0.6 seconds starting phase `delete-network-dependent-test' phase `delete-network-dependent-test' succeeded after 0.0 seconds starting phase `check' NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It will be removed on or after 2018-12-01. Gem::Specification#has_rdoc= called from tasks/gem.rake:14. /gnu/store/wkx81yc5zfxrrwpamg6s4z2v6m3a7m4q-ruby-2.7.4/bin/ruby -I/gnu/store/rc2q9qgx5gbjj7ncnnchmw36y5y275zs-ruby-rspec-support-3.8.0/lib/ruby/vendor_ruby/gems/rspec-support-3.8.0/lib:/gnu/store/lz68phlisvc36x3jcrny6wairb27a2h1-ruby-rspec-core-3.8.0/lib/ruby/vendor_ruby/gems/rspec-core-3.8.0/lib /gnu/store/lz68phlisvc36x3jcrny6wairb27a2h1-ruby-rspec-core-3.8.0/lib/ruby/vendor_ruby/gems/rspec-core-3.8.0/exe/rspec spec/addressable/idna_spec.rb spec/addressable/rack_mount_compat_spec.rb spec/addressable/security_spec.rb spec/addressable/template_spec.rb spec/addressable/uri_spec.rb --color --format documentation warning: coveralls gem not found; skipping Coveralls Could not load native IDN implementation. Addressable::IDNA when using the pure-Ruby implementation should not blow up inside fibers it should behave like converting from unicode to ASCII should convert 'www.google.com' correctly should convert 'AcinusFallumTrompetumNullunCreditumVisumEstAtCuadLongumEtCefallum.com' correctly should convert 'www.詹姆斯.com' correctly should convert 'www.Iñtërnâtiônàlizætiøn.com' correctly should convert 'www.Iñtërnâtiônàlizætiøn.com' correctly should convert 'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' correctly should convert 'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' correctly should convert '点心和烤鸭.w3.mag.keio.ac.jp' correctly should convert '가각갂갃간갅갆갇갈갉힢힣.com' correctly should convert '碼標準萬國碼.com' correctly should convert 'リ宠퐱〹.com' correctly should convert 'リ宠퐱卄.com' correctly should convert 'ᆵ' correctly should convert 'ᆵ' correctly should convert '🌹🌹🌹.ws' correctly should handle two adjacent '.'s correctly it should behave like converting from ASCII to unicode should convert 'AcinusFallumTrompetumNullunCreditumVisumEstAtCuadLongumEtCefallum.com' correctly should return the identity conversion when punycode decode fails should return the identity conversion when the ACE prefix has no suffix should convert 'www.google.com' correctly should convert 'www.詹姆斯.com' correctly should convert '詹姆斯.com' correctly should convert 'www.iñtërnâtiônàlizætiøn.com' correctly should convert 'iñtërnâtiônàlizætiøn.com' correctly should convert 'www.ほんとうにながいわけのわからないどめいんめいのらべるまだながくしないとたりない.w3.mag.keio.ac.jp' correctly should convert '点心和烤鸭.w3.mag.keio.ac.jp' correctly should convert '가각갂갃간갅갆갇갈갉힢힣.com' correctly should convert '碼標準萬國碼.com' correctly should convert 'リ宠퐱卄.com' correctly should convert 'ᆵ' correctly should convert '🌹🌹🌹.ws' correctly should handle two adjacent '.'s correctly should normalize 'string' correctly Rack::Mount should generate from routes with Addressable::Template should generate from routes with Addressable::Template using defaults should recognize routes with Addressable::Template should generate from routes with Addressable::Template should generate from routes with Addressable::Template using defaults should recognize routes with Addressable::Template should recognize routes with derived Regexp Addressable::URI when created with a URI known to cause crashes in certain browsers should parse correctly should parse correctly as a full URI Addressable::URI when created with a URI known to cause crashes in certain browsers should parse correctly should parse correctly as a full URI eql? is equal when the pattern matches is not equal when the pattern differs is not equal to non-templates == is equal when the pattern matches is not equal when the pattern differs is not equal to non-templates Type conversion behaves like expands {var} to true {hello} to 1234 {nothing} to {sym} to symbolic {decimal} to 0.1e1 Level 1: behaves like expands {var} to value {hello} to Hello%20World%21 Level 2 Operator +: behaves like expands {+var} to value {+hello} to Hello%20World! {+path}/here to /foo/bar/here here?ref={+path} to here?ref=/foo/bar Operator #: behaves like expands X{#var} to X#value X{#hello} to X#Hello%20World! Level 3 Operator nil (multiple vars): behaves like expands map?{x,y} to map?1024,768 {x,hello,y} to 1024,Hello%20World%21,768 Operator + (multiple vars): behaves like expands {+x,hello,y} to 1024,Hello%20World!,768 {+path,x}/here to /foo/bar,1024/here Operator # (multiple vars): behaves like expands {#x,hello,y} to #1024,Hello%20World!,768 {#path,x}/here to #/foo/bar,1024/here Operator . behaves like expands X{.var} to X.value X{.x,y} to X.1024.768 Operator / behaves like expands {/var} to /value {/var,x}/here to /value/1024/here Operator ; behaves like expands {;x,y} to ;x=1024;y=768 {;x,y,empty} to ;x=1024;y=768;empty Operator ? behaves like expands {?x,y} to ?x=1024&y=768 {?x,y,empty} to ?x=1024&y=768&empty= Operator & behaves like expands ?fixed=yes{&x} to ?fixed=yes&x=1024 {&x,y,empty} to &x=1024&y=768&empty= Level 4 Expansion with value modifiers behaves like expands {var:3} to val {var:30} to value {list} to red,green,blue {list*} to red,green,blue {keys} to semi,%3B,dot,.,comma,%2C {keys*} to semi=%3B,dot=.,comma=%2C Operator + with value modifiers behaves like expands {+path:6}/here to /foo/b/here {+list} to red,green,blue {+list*} to red,green,blue {+keys} to semi,;,dot,.,comma,, {+keys*} to semi=;,dot=.,comma=, Operator # with value modifiers behaves like expands {#path:6}/here to #/foo/b/here {#list} to #red,green,blue {#list*} to #red,green,blue {#keys} to #semi,;,dot,.,comma,, {#keys*} to #semi=;,dot=.,comma=, Operator . with value modifiers behaves like expands X{.var:3} to X.val X{.list} to X.red,green,blue X{.list*} to X.red.green.blue X{.keys} to X.semi,%3B,dot,.,comma,%2C X{.keys*} to X.semi=%3B.dot=..comma=%2C Operator / with value modifiers behaves like expands {/var:1,var} to /v/value {/list} to /red,green,blue {/list*} to /red/green/blue {/list*,path:4} to /red/green/blue/%2Ffoo {/keys} to /semi,%3B,dot,.,comma,%2C {/keys*} to /semi=%3B/dot=./comma=%2C Operator ; with value modifiers behaves like expands {;hello:5} to ;hello=Hello {;list} to ;list=red,green,blue {;list*} to ;list=red;list=green;list=blue {;keys} to ;keys=semi,%3B,dot,.,comma,%2C {;keys*} to ;semi=%3B;dot=.;comma=%2C Operator ? with value modifiers behaves like expands {?var:3} to ?var=val {?list} to ?list=red,green,blue {?list*} to ?list=red&list=green&list=blue {?keys} to ?keys=semi,%3B,dot,.,comma,%2C {?keys*} to ?semi=%3B&dot=.&comma=%2C Operator & with value modifiers behaves like expands {&var:3} to &var=val {&list} to &list=red,green,blue {&list*} to &list=red&list=green&list=blue {&keys} to &keys=semi,%3B,dot,.,comma,%2C {&keys*} to &semi=%3B&dot=.&comma=%2C Modifiers length behaves like expands {var:3} to val {var:30} to value {var} to value {semi} to %3B {semi:2} to %3B explode behaves like expands find{?year*} to find?year=1965&year=2000&year=2012 www{.dom*} to www.example.com Expansion concatenation behaves like expands {count} to one,two,three {count*} to one,two,three {/count} to /one,two,three {/count*} to /one/two/three {;count} to ;count=one,two,three {;count*} to ;count=one;count=two;count=three {?count} to ?count=one,two,three {?count*} to ?count=one&count=two&count=three {&count*} to &count=one&count=two&count=three simple expansion behaves like expands {var} to value {hello} to Hello%20World%21 {half} to 50%25 O{empty}X to OX O{undef}X to OX {x,y} to 1024,768 {x,hello,y} to 1024,Hello%20World%21,768 ?{x,empty} to ?1024, ?{x,undef} to ?1024 ?{undef,y} to ?768 {var:3} to val {var:30} to value {list} to red,green,blue {list*} to red,green,blue {keys} to semi,%3B,dot,.,comma,%2C {keys*} to semi=%3B,dot=.,comma=%2C reserved expansion (+) behaves like expands {+var} to value {+hello} to Hello%20World! {+half} to 50%25 {base}index to http%3A%2F%2Fexample.com%2Fhome%2Findex {+base}index to http://example.com/home/index O{+empty}X to OX O{+undef}X to OX {+path}/here to /foo/bar/here here?ref={+path} to here?ref=/foo/bar up{+path}{var}/here to up/foo/barvalue/here {+x,hello,y} to 1024,Hello%20World!,768 {+path,x}/here to /foo/bar,1024/here {+path:6}/here to /foo/b/here {+list} to red,green,blue {+list*} to red,green,blue {+keys} to semi,;,dot,.,comma,, {+keys*} to semi=;,dot=.,comma=, fragment expansion (#) behaves like expands {#var} to #value {#hello} to #Hello%20World! {#half} to #50%25 foo{#empty} to foo# foo{#undef} to foo {#x,hello,y} to #1024,Hello%20World!,768 {#path,x}/here to #/foo/bar,1024/here {#path:6}/here to #/foo/b/here {#list} to #red,green,blue {#list*} to #red,green,blue {#keys} to #semi,;,dot,.,comma,, {#keys*} to #semi=;,dot=.,comma=, label expansion (.) behaves like expands {.who} to .fred {.who,who} to .fred.fred {.half,who} to .50%25.fred www{.dom*} to www.example.com X{.var} to X.value X{.empty} to X. X{.undef} to X X{.var:3} to X.val X{.list} to X.red,green,blue X{.list*} to X.red.green.blue X{.keys} to X.semi,%3B,dot,.,comma,%2C X{.keys*} to X.semi=%3B.dot=..comma=%2C X{.empty_keys} to X X{.empty_keys*} to X path expansion (/) behaves like expands {/who} to /fred {/who,who} to /fred/fred {/half,who} to /50%25/fred {/who,dub} to /fred/me%2Ftoo {/var} to /value {/var,empty} to /value/ {/var,undef} to /value {/var,x}/here to /value/1024/here {/var:1,var} to /v/value {/list} to /red,green,blue {/list*} to /red/green/blue {/list*,path:4} to /red/green/blue/%2Ffoo {/keys} to /semi,%3B,dot,.,comma,%2C {/keys*} to /semi=%3B/dot=./comma=%2C path-style expansion (;) behaves like expands {;who} to ;who=fred {;half} to ;half=50%25 {;empty} to ;empty {;v,empty,who} to ;v=6;empty;who=fred {;v,bar,who} to ;v=6;who=fred {;x,y} to ;x=1024;y=768 {;x,y,empty} to ;x=1024;y=768;empty {;x,y,undef} to ;x=1024;y=768 {;hello:5} to ;hello=Hello {;list} to ;list=red,green,blue {;list*} to ;list=red;list=green;list=blue {;keys} to ;keys=semi,%3B,dot,.,comma,%2C {;keys*} to ;semi=%3B;dot=.;comma=%2C form query expansion (?) behaves like expands {?who} to ?who=fred {?half} to ?half=50%25 {?x,y} to ?x=1024&y=768 {?x,y,empty} to ?x=1024&y=768&empty= {?x,y,undef} to ?x=1024&y=768 {?var:3} to ?var=val {?list} to ?list=red,green,blue {?list*} to ?list=red&list=green&list=blue {?keys} to ?keys=semi,%3B,dot,.,comma,%2C {?keys*} to ?semi=%3B&dot=.&comma=%2C form query expansion (&) behaves like expands {&who} to &who=fred {&half} to &half=50%25 ?fixed=yes{&x} to ?fixed=yes&x=1024 {&x,y,empty} to &x=1024&y=768&empty= {&x,y,undef} to &x=1024&y=768 {&var:3} to &var=val {&list} to &list=red,green,blue {&list*} to &list=red&list=green&list=blue {&keys} to &keys=semi,%3B,dot,.,comma,%2C {&keys*} to &semi=%3B&dot=.&comma=%2C non-string key in match data raises TypeError Addressable::Template initialize with a non-string raises a TypeError freeze freezes the template Matching first uri with ExampleTwoProcessor variables should == ["query"] captures should == ["an example search query"] second uri with ExampleTwoProcessor variables should == ["first", "second"] captures should == ["a", "b/c"] second uri with DumbProcessor variables should == ["first", "second"] captures should == ["a", "b/c"] second uri variables should == ["first", "second"] captures should == ["a", ["b", "c"]] third uri variables should == ["hash", "first"] captures should == [{"a"=>"1", "b"=>"2", "c"=>"3", "first"=>"foo"}, nil] fourth uri variables should == ["hash", "first"] captures should == [{"a"=>"1", "b"=>"2", "c"=>"3", "first"=>"foo"}, nil] fifth uri variables should == ["path", "hash", "first"] captures should == ["foo", nil, nil] match when the URI is the same as the template returns the match data itself with an empty mapping extract should be able to extract with queries should be able to extract without queries issue #137 can match empty can match first var can match second var can match both vars Partial expand with symbols partial_expand with two simple values builds a new pattern partial_expand query with missing param in middle builds a new pattern partial_expand form style query with missing param at beginning builds a new pattern issue #307 - partial_expand form query with nil params builds a new pattern with two=nil builds a new pattern with one=nil and two=nil builds a new pattern with one=1 and two=nil builds a new pattern with one=nil and two=2 builds a new pattern with one=nil partial_expand with query string builds a new pattern partial_expand with path operator builds a new pattern partial expand with unicode values normalizes unicode by default does not normalize unicode when byte semantics requested Partial expand with strings partial_expand with two simple values builds a new pattern partial_expand query with missing param in middle builds a new pattern partial_expand with query string builds a new pattern partial_expand with path operator builds a new pattern Expand expand with unicode values normalizes unicode by default does not normalize unicode when byte semantics requested expand with a processor processes spaces validates partial_expand query with missing param in middle builds a new pattern partial_expand with query string builds a new pattern partial_expand with path operator builds a new pattern Matching with operators Level 1: can match can fail can match empty lists vars Level 2: can match can match empty level 2 # can match empty level 2 + lists vars Level 3: no operator can match lists vars + operator can match lists vars . operator can match lists vars / operator can match lists vars ; operator can match lists vars ? operator test can match lists vars issue #137 can match empty can match first var can match second var can match both vars issue #71 can match lists vars & operator can match lists vars support regexes: EXPRESSION should be able to match an expression should fail on non vars VARNAME should be able to match a variable should fail on non vars VARIABLE_LIST should be able to match a variable list should fail on non vars VARSPEC should be able to match a variable with modifier should fail on non vars Addressable::Template::MatchData uri should == #<Addressable::URI:0x2828 URI:ab/cd> template should == #<Addressable::Template:0x283c PATTERN:{foo}/{bar}> mapping should == {"bar"=>"cd", "foo"=>"ab"} variables should == ["foo", "bar"] keys should == ["foo", "bar"] names should == ["foo", "bar"] values should == ["ab", "cd"] captures should == ["ab", "cd"] to_a should == ["ab/cd", "ab", "cd"] to_s should == "ab/cd" string should == "ab/cd" pre_match should == "" post_match should == "" values_at returns an array with the values allows mixing integer an string keys accepts unknown keys [] string key returns the corresponding capture returns nil for unknown keys symbol key returns the corresponding capture returns nil for unknown keys integer key returns the full URI for index 0 returns the corresponding capture returns nil for unknown keys other key raises an exception with length returns an array starting at index with given length Addressable::URI when created with a non-numeric port number should raise an error Addressable::URI when created with a invalid encoded port number should raise an error Addressable::URI when created with a non-string scheme should raise an error Addressable::URI when created with a non-string user should raise an error Addressable::URI when created with a non-string password should raise an error Addressable::URI when created with a non-string userinfo should raise an error Addressable::URI when created with a non-string host should raise an error Addressable::URI when created with a non-string authority should raise an error Addressable::URI when created with a non-string path should raise an error Addressable::URI when created with a non-string query should raise an error Addressable::URI when created with a non-string fragment should raise an error Addressable::URI when created with a scheme but no hierarchical segment should raise an error Addressable::URI quote handling in host name should raise an error for single quote Addressable::URI newline normalization should not accept newlines in scheme should not unescape newline in path should not unescape newline in hostname should not unescape newline in username should not unescape newline in username should not accept newline in hostname Addressable::URI when created with ambiguous path should raise an error Addressable::URI when created with an invalid host should raise an error Addressable::URI when created with a host consisting of sub-delims characters should not raise an error Addressable::URI when created with a host consisting of unreserved characters should not raise an error Addressable::URI when created from nil components should have a nil site value should have an empty path should be an empty uri should have a nil default port should be empty should raise an error if the scheme is set to whitespace should raise an error if the scheme is set to all digits should raise an error if the scheme begins with a digit should raise an error if the scheme begins with a plus should raise an error if the scheme begins with a dot should raise an error if the scheme begins with a dash should raise an error if the scheme contains an illegal character should raise an error if the scheme contains whitespace should raise an error if the scheme contains a newline should raise an error if set into an invalid state should raise an error if set into an invalid state should raise an error if set into an invalid state should raise an error if set into an invalid state Addressable::URI when initialized from individual components returns 'http' for #scheme returns 'http' for #normalized_scheme returns 'user' for #user returns 'user' for #normalized_user returns 'password' for #password returns 'password' for #normalized_password returns 'user:password' for #userinfo returns 'user:password' for #normalized_userinfo returns 'example.com' for #host returns 'example.com' for #normalized_host returns 'com' for #tld returns 'user:password@example.com:8080' for #authority returns 'user:password@example.com:8080' for #normalized_authority returns 8080 for #port returns 8080 for #normalized_port returns 80 for #default_port returns 'http://user:password@example.com:8080' for #site returns 'http://user:password@example.com:8080' for #normalized_site returns '/path' for #path returns '/path' for #normalized_path returns 'query=value' for #query returns 'query=value' for #normalized_query returns 'fragment' for #fragment returns 'fragment' for #normalized_fragment returns #hash returns #to_s should not be empty should not be frozen should allow destructive operations Addressable::URI when initialized from frozen individual components returns 'http' for #scheme returns 'http' for #normalized_scheme returns 'user' for #user returns 'user' for #normalized_user returns 'password' for #password returns 'password' for #normalized_password returns 'user:password' for #userinfo returns 'user:password' for #normalized_userinfo returns 'example.com' for #host returns 'example.com' for #normalized_host returns 'user:password@example.com:8080' for #authority returns 'user:password@example.com:8080' for #normalized_authority returns 8080 for #port returns 8080 for #normalized_port returns 80 for #default_port returns 'http://user:password@example.com:8080' for #site returns 'http://user:password@example.com:8080' for #normalized_site returns '/path' for #path returns '/path' for #normalized_path returns 'query=value' for #query returns 'query=value' for #normalized_query returns 'fragment' for #fragment returns 'fragment' for #normalized_fragment returns #hash returns #to_s should not be empty should not be frozen should allow destructive operations Addressable::URI when parsed from a frozen string returns 'http' for #scheme returns 'http' for #normalized_scheme returns 'user' for #user returns 'user' for #normalized_user returns 'password' for #password returns 'password' for #normalized_password returns 'user:password' for #userinfo returns 'user:password' for #normalized_userinfo returns 'example.com' for #host returns 'example.com' for #normalized_host returns 'user:password@example.com:8080' for #authority returns 'user:password@example.com:8080' for #normalized_authority returns 8080 for #port returns 8080 for #normalized_port returns 80 for #default_port returns 'http://user:password@example.com:8080' for #site returns 'http://user:password@example.com:8080' for #normalized_site returns '/path' for #path returns '/path' for #normalized_path returns 'query=value' for #query returns 'query=value' for #normalized_query returns 'fragment' for #fragment returns 'fragment' for #normalized_fragment returns #hash returns #to_s should not be empty should not be frozen should allow destructive operations Addressable::URI when frozen returns nil for #scheme returns nil for #normalized_scheme returns nil for #user returns nil for #normalized_user returns nil for #password returns nil for #normalized_password returns nil for #userinfo returns nil for #normalized_userinfo returns nil for #host returns nil for #normalized_host returns nil for #authority returns nil for #normalized_authority returns nil for #port returns nil for #normalized_port returns nil for #default_port returns nil for #site returns nil for #normalized_site returns '' for #path returns '' for #normalized_path returns nil for #query returns nil for #normalized_query returns nil for #fragment returns nil for #normalized_fragment returns #hash returns #to_s should be empty should be frozen should not be frozen after duping should not allow destructive operations Addressable::URI when frozen returns 'HTTP' for #scheme returns 'http' for #normalized_scheme returns nil for #user returns nil for #normalized_user returns nil for #password returns nil for #normalized_password returns nil for #userinfo returns nil for #normalized_userinfo returns 'example.com.' for #host returns nil for #normalized_host returns 'example.com.:80' for #authority returns 'example.com:80' for #normalized_authority returns 80 for #port returns nil for #normalized_port returns 80 for #default_port returns 'HTTP://example.com.:80' for #site returns 'http://example.com' for #normalized_site returns '/%70a%74%68' for #path returns '/path' for #normalized_path returns 'a=%31' for #query returns 'a=1' for #normalized_query returns '/%70a%74%68?a=%31' for #request_uri returns '1%323' for #fragment returns '123' for #normalized_fragment returns #hash returns #to_s should not be empty should be frozen should not be frozen after duping should not allow destructive operations Addressable::URI when created from string components should have a site value of 'http://example.com' should be equal to the equivalent parsed URI should raise an error if invalid components omitted Addressable::URI when created with a nil host but non-nil authority components should raise an error Addressable::URI when created with both an authority and a user should raise an error Addressable::URI when created with an authority and no port should not infer a port should have a site value of '//user@example.com' should have a 'null' origin Addressable::URI when created with a host with trailing dots should have a stable normalized form Addressable::URI when created with a host with a backslash should raise an error Addressable::URI when created with a host with a slash should raise an error Addressable::URI when created with a host with a space should raise an error Addressable::URI when created with both a userinfo and a user should raise an error Addressable::URI when created with a path that hasn't been prefixed with a '/' but a host specified should prefix a '/' to the path should have a site value of 'http://example.com' should have an origin of 'http://example.com Addressable::URI when created with a path that hasn't been prefixed with a '/' but no host specified should not prefix a '/' to the path should have a site value of 'http:' should have a 'null' origin Addressable::URI when parsed from an Addressable::URI object should not have unexpected side-effects should not have unexpected side-effects should not have unexpected side-effects should not have unexpected side-effects Addressable::URI when parsed from something that looks like a URI object should parse without error Addressable::URI when parsed from a standard library URI object should parse without error Addressable::URI when parsed from '' should have no scheme should not be considered to be ip-based should have a path of '' should have a request URI of '/' should be considered relative should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'ftp://ftp.is.co.za/rfc/rfc1808.txt' should use the 'ftp' scheme should be considered to be ip-based should have a host of 'ftp.is.co.za' should have inferred_port of 21 should have a path of '/rfc/rfc1808.txt' should not have a request URI should be considered to be in normal form should have an origin of 'ftp://ftp.is.co.za' Addressable::URI when parsed from 'http://www.ietf.org/rfc/rfc2396.txt' should use the 'http' scheme should be considered to be ip-based should have a host of 'www.ietf.org' should have inferred_port of 80 should have a path of '/rfc/rfc2396.txt' should have a request URI of '/rfc/rfc2396.txt' should be considered to be in normal form should correctly omit components should correctly omit components destructively should have an origin of 'http://www.ietf.org' Addressable::URI when parsed from 'ldap://[2001:db8::7]/c=GB?objectClass?one' should use the 'ldap' scheme should be considered to be ip-based should have a host of '[2001:db8::7]' should have inferred_port of 389 should have a path of '/c=GB' should not have a request URI should not allow request URI assignment should have a query of 'objectClass?one' should be considered to be in normal form should correctly omit components should correctly omit components destructively should raise an error if omission would create an invalid URI should have an origin of 'ldap://[2001:db8::7]' Addressable::URI when parsed from 'mailto:John.Doe@example.com' should use the 'mailto' scheme should not be considered to be ip-based should not have an inferred_port should have a path of 'John.Doe@example.com' should not have a request URI should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'mailto:?to=addr1@an.example,addr2@an.example' should use the 'mailto' scheme should not be considered to be ip-based should not have an inferred_port should have a path of '' should not have a request URI should have the To: field value parameterized should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'news:comp.infosystems.www.servers.unix' should use the 'news' scheme should not have an inferred_port should not be considered to be ip-based should have a path of 'comp.infosystems.www.servers.unix' should not have a request URI should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'tel:+1-816-555-1212' should use the 'tel' scheme should not be considered to be ip-based should not have an inferred_port should have a path of '+1-816-555-1212' should not have a request URI should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'telnet://192.0.2.16:80/' should use the 'telnet' scheme should have a host of '192.0.2.16' should have a port of 80 should have a inferred_port of 80 should have a default_port of 23 should be considered to be ip-based should have a path of '/' should not have a request URI should be considered to be in normal form should have an origin of 'telnet://192.0.2.16:80' Addressable::URI when parsed from 'urn:oasis:names:specification:docbook:dtd:xml:4.1.2' should use the 'urn' scheme should not have an inferred_port should not be considered to be ip-based should have a path of 'oasis:names:specification:docbook:dtd:xml:4.1.2' should not have a request URI should be considered to be in normal form should have a 'null' origin Addressable::URI when heuristically parsed from '192.0.2.16:8000/path' should use the 'http' scheme should have a host of '192.0.2.16' should have a port of '8000' should be considered to be ip-based should have a path of '/path' should be considered to be in normal form should have an origin of 'http://192.0.2.16:8000' Addressable::URI when parsed from 'http://example.com' when inspected, should have the correct URI when inspected, should have the correct class name when inspected, should have the correct object id should use the 'http' scheme should be considered to be ip-based should have an authority segment of 'example.com' should have a host of 'example.com' should be considered ip-based should have no username should have no password should use port 80 should not have a specified port should have an empty path should have no query string should have a request URI of '/' should have no fragment should be considered absolute should not be considered relative should not be exactly equal to 42 should not be equal to 42 should not be roughly equal to 42 should be exactly equal to http://example.com should be roughly equal to http://example.com/ should be roughly equal to the string 'http://example.com/' should not be roughly equal to the string 'http://example.com:bogus/' should result in itself when joined with itself should be equivalent to http://EXAMPLE.com should be equivalent to http://EXAMPLE.com:80/ should have the same hash as http://example.com should have the same hash as http://EXAMPLE.com after assignment should have a different hash from http://EXAMPLE.com should not allow origin assignment without scheme should not allow origin assignment without host should not allow origin assignment with bogus type should be equivalent to http://example.com/ should be equivalent to http://example.com:/ should be equivalent to http://example.com:80/ should be equivalent to http://EXAMPLE.COM/ should have a route of '/path/' to 'http://example.com/path/' should have a route of '..' from 'http://example.com/path/' should have a route of '#' to 'http://example.com/' should have a route of 'http://elsewhere.com/' to 'http://elsewhere.com/' when joined with 'relative/path' should be 'http://example.com/relative/path' when joined with a bogus object a TypeError should be raised should have the correct username after assignment should have the correct username after assignment should have the correct password after assignment should have the correct password after assignment should have the correct user/pass after repeated assignment should have the correct user/pass after userinfo assignment should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com' Addressable::URI when parsed from 'HTTP://www.w3.org/pub/WWW/TheProject.html' should have the correct request URI should have the correct request URI after assignment should have the correct request URI after assignment should have the correct request URI after assignment should have the correct request URI after assignment should raise an error if the site value is set to something bogus should raise an error if the request URI is set to something bogus should correctly convert to a hash should have an origin of 'http://www.w3.org' Addressable::URI when parsing IPv6 addresses should not raise an error for 'http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]/' should not raise an error for 'http://[fe80:0:0:0:200:f8ff:fe21:67cf]/' should not raise an error for 'http://[fe80::200:f8ff:fe21:67cf]/' should not raise an error for 'http://[::1]/' should not raise an error for 'http://[fe80::1]/' should raise an error for 'http://[<invalid>]/' Addressable::URI when parsing IPv6 address host should == "[3ffe:1900:4545:3:200:f8ff:fe21:67cf]" hostname should == "3ffe:1900:4545:3:200:f8ff:fe21:67cf" Addressable::URI when assigning IPv6 address should allow to set bare IPv6 address as hostname should allow to set bare IPv6 address as hostname with IPAddr object should not allow to set bare IPv6 address as host (PENDING: not checked) Addressable::URI when parsing IPvFuture addresses should not raise an error for 'http://[v9.3ffe:1900:4545:3:200:f8ff:fe21:67cf]/' should not raise an error for 'http://[vff.fe80:0:0:0:200:f8ff:fe21:67cf]/' should not raise an error for 'http://[v12.fe80::200:f8ff:fe21:67cf]/' should not raise an error for 'http://[va0.::1]/' should not raise an error for 'http://[v255.fe80::1]/' should raise an error for 'http://[v0.<invalid>]/' Addressable::URI when parsed from 'http://example.com/' should be equivalent to http://example.com should be equivalent to HTTP://example.com/ should be equivalent to http://example.com:/ should be equivalent to http://example.com:80/ should be equivalent to http://Example.com/ should have the correct username after assignment should have the correct password after assignment should have a request URI of '/' should correctly convert to a hash should be identical to its duplicate should have the same hash as its duplicate should have a different hash from its equivalent String value should have the same hash as an equal URI should be equivalent to http://EXAMPLE.com should be equivalent to http://EXAMPLE.com:80/ should have the same hash as http://example.com/ should have the same hash as http://example.com after assignment should have the same hash as http://example.com/? after assignment should have the same hash as http://example.com/? after assignment should have the same hash as http://example.com/# after assignment should have a different hash from http://example.com should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://example.com?#' should correctly convert to a hash should have a request URI of '/?' should normalize to 'http://example.com/' should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://@example.com/' should be equivalent to http://example.com should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://example.com./' should be equivalent to http://example.com should not be considered to be in normal form should be identical to its duplicate should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://:@example.com/' should be equivalent to http://example.com should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com' Addressable::URI when parsed from 'HTTP://EXAMPLE.COM/' should be equivalent to http://example.com should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com' should have a tld of 'com' Addressable::URI when parsed from 'http://www.example.co.uk/' should have an origin of 'http://www.example.co.uk' should have a tld of 'co.uk' should have a domain of 'example.co.uk' Addressable::URI when parsed from 'http://sub_domain.blogspot.com/' should have an origin of 'http://sub_domain.blogspot.com' should have a tld of 'com' should have a domain of 'blogspot.com' Addressable::URI when parsed from 'http://example.com/~smith/' should be equivalent to http://example.com/%7Esmith/ should be equivalent to http://example.com/%7esmith/ should be identical to its duplicate Addressable::URI when parsed from 'http://example.com/%E8' should not raise an exception when normalized should be considered to be in normal form should not change if encoded with the normalizing algorithm Addressable::URI when parsed from 'http://example.com/path%2Fsegment/' should be considered to be in normal form should be equal to 'http://example.com/path%2Fsegment/' should not be equal to 'http://example.com/path/segment/' should not be equal to 'http://example.com/path/segment/' Addressable::URI when parsed from 'http://example.com/?%F6' should not raise an exception when normalized should be considered to be in normal form should not change if encoded with the normalizing algorithm Addressable::URI when parsed from 'http://example.com/#%F6' should not raise an exception when normalized should be considered to be in normal form should not change if encoded with the normalizing algorithm Addressable::URI when parsed from 'http://example.com/%C3%87' should be equivalent to 'http://example.com/C%CC%A7' should not change if encoded with the normalizing algorithm should raise an error if encoding with an unexpected return type if percent encoded should be 'http://example.com/C%25CC%25A7' if percent encoded should be 'http://example.com/C%25CC%25A7' should raise an error if encoding with an unexpected return type should be identical to its duplicate Addressable::URI when parsed from 'http://example.com/?q=string' should use the 'http' scheme should have an authority segment of 'example.com' should have a host of 'example.com' should have no username should have no password should use port 80 should have a path of '/' should have a query string of 'q=string' should have no fragment should be considered absolute should not be considered relative should be considered to be in normal form should be identical to its duplicate Addressable::URI when parsed from 'http://example.com:80/' should use the 'http' scheme should have an authority segment of 'example.com:80' should have a host of 'example.com' should have no username should have no password should use port 80 should have explicit port 80 should have a path of '/' should have no query string should have no fragment should be considered absolute should not be considered relative should be exactly equal to http://example.com:80/ should be roughly equal to http://example.com/ should be roughly equal to the string 'http://example.com/' should not be roughly equal to the string 'http://example.com:bogus/' should result in itself when joined with itself should be equal to http://example.com/ should be equal to http://example.com:/ should be equal to http://example.com:80/ should be equal to http://EXAMPLE.COM/ should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com' should not change if encoded with the normalizing algorithm Addressable::URI when parsed from 'http://example.com:8080/' should use the 'http' scheme should have an authority segment of 'example.com:8080' should have a host of 'example.com' should have no username should have no password should use port 8080 should have explicit port 8080 should have default port 80 should have a path of '/' should have no query string should have no fragment should be considered absolute should not be considered relative should be exactly equal to http://example.com:8080/ should have a route of 'http://example.com:8080/' from 'http://example.com/path/to/' should have a route of 'http://example.com:8080/' from 'http://example.com:80/path/to/' should have a route of '../../' from 'http://example.com:8080/path/to/' should have a route of 'http://example.com:8080/' from 'http://user:pass@example.com/path/to/' should correctly convert to a hash should be identical to its duplicate should have an origin of 'http://example.com:8080' should not change if encoded with the normalizing algorithm Addressable::URI when parsed from 'http://example.com:%38%30/' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://example.com/%2E/' should be considered to be in normal form (PENDING: path segment normalization should happen before percent escaping normalization) should normalize to 'http://example.com/%2E/' (PENDING: path segment normalization should happen before percent escaping normalization) Addressable::URI when parsed from 'http://example.com/..' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from 'http://example.com/../..' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from 'http://example.com/path(/..' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from 'http://example.com/(path)/..' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from 'http://example.com/path(/../' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from 'http://example.com/(path)/../' should have the correct port should not be considered to be in normal form should normalize to 'http://example.com/' Addressable::URI when parsed from '/..//example.com' should become invalid when normalized should have a path of '/..//example.com' Addressable::URI when parsed from '/a/b/c/./../../g' should not be considered to be in normal form should normalize to '/a/g' Addressable::URI when parsed from 'mid/content=5/../6' should not be considered to be in normal form should normalize to 'mid/6' Addressable::URI when parsed from 'http://www.example.com///../' should not be considered to be in normal form should normalize to 'http://www.example.com//' Addressable::URI when parsed from 'http://example.com/path/to/resource/' should use the 'http' scheme should have an authority segment of 'example.com' should have a host of 'example.com' should have no username should have no password should use port 80 should have a path of '/path/to/resource/' should have no query string should have no fragment should be considered absolute should not be considered relative should be exactly equal to http://example.com:8080/ should have a route of 'resource/' from 'http://example.com/path/to/' should have a route of '../' from 'http://example.com/path/to/resource/sub' should have a route of 'resource/' from 'http://example.com/path/to/another' should have a route of 'resource/' from 'http://example.com/path/to/res' should have a route of 'resource/' from 'http://example.com:80/path/to/' should have a route of 'http://example.com/path/to/' from 'http://example.com:8080/path/to/' should have a route of 'http://example.com/path/to/' from 'http://user:pass@example.com/path/to/' should have a route of '../../path/to/resource/' from 'http://example.com/to/resource/' should correctly convert to a hash should be identical to its duplicate Addressable::URI when parsed from 'relative/path/to/resource' should not have a scheme should not be considered ip-based should not have an authority segment should not have a host should have no username should have no password should not have a port should have a path of 'relative/path/to/resource' should have no query string should have no fragment should not be considered absolute should be considered relative should raise an error if routing is attempted when joined with 'another/relative/path' should be 'relative/path/to/another/relative/path' should be identical to its duplicate Addressable::URI when parsed from 'relative_path_with_no_slashes' should not have a scheme should not be considered ip-based should not have an authority segment should not have a host should have no username should have no password should not have a port should have a path of 'relative_path_with_no_slashes' should have no query string should have no fragment should not be considered absolute should be considered relative when joined with 'another_relative_path' should be 'another_relative_path' Addressable::URI when parsed from 'http://example.com/file.txt' should have a scheme of 'http' should have an authority segment of 'example.com' should have a host of 'example.com' should have no username should have no password should use port 80 should have a path of '/file.txt' should have a basename of 'file.txt' should have an extname of '.txt' should have no query string should have no fragment Addressable::URI when parsed from 'http://example.com/file.txt;parameter' should have a scheme of 'http' should have an authority segment of 'example.com' should have a host of 'example.com' should have no username should have no password should use port 80 should have a path of '/file.txt;parameter' should have a basename of 'file.txt' should have an extname of '.txt' should have no query string should have no fragment Addressable::URI when parsed from 'http://example.com/file.txt;x=y' should have a scheme of 'http' should have a scheme of 'http' should have an authority segment of 'example.com' should have a host of 'example.com' should have no username should have no password should use port 80 should have a path of '/file.txt;x=y' should have an extname of '.txt' should have no query string should have no fragment should be considered to be in normal form Addressable::URI when parsed from 'svn+ssh://developername@rubyforge.org/var/svn/project' should have a scheme of 'svn+ssh' should be considered to be ip-based should have a path of '/var/svn/project' should have a username of 'developername' should have no password should be considered to be in normal form Addressable::URI when parsed from 'ssh+svn://developername@RUBYFORGE.ORG/var/svn/project' should have a scheme of 'ssh+svn' should have a normalized scheme of 'svn+ssh' should have a normalized site of 'svn+ssh' should not be considered to be ip-based should have a path of '/var/svn/project' should have a username of 'developername' should have no password should not be considered to be in normal form Addressable::URI when parsed from 'mailto:user@example.com' should have a scheme of 'mailto' should not be considered to be ip-based should have a path of 'user@example.com' should have no user should be considered to be in normal form Addressable::URI when parsed from 'tag:example.com,2006-08-18:/path/to/something' should have a scheme of 'tag' should be considered to be ip-based should have a path of 'example.com,2006-08-18:/path/to/something' should have no user should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'http://example.com/x;y/' should be considered to be in normal form Addressable::URI when parsed from 'http://example.com/?x=1&y=2' should be considered to be in normal form Addressable::URI when parsed from 'view-source:http://example.com/' should have a scheme of 'view-source' should have a path of 'http://example.com/' should be considered to be in normal form should have a 'null' origin Addressable::URI when parsed from 'http://user:pass@example.com/path/to/resource?query=x#fragment' should use the 'http' scheme should have an authority segment of 'user:pass@example.com' should have a username of 'user' should have a password of 'pass' should have a host of 'example.com' should use port 80 should have a path of '/path/to/resource' should have a query string of 'query=x' should have a fragment of 'fragment' should be considered to be in normal form should have a route of '../../' to 'http://user:pass@example.com/path/' should have a route of 'to/resource?query=x#fragment' from 'http://user:pass@example.com/path/' should have a route of '?query=x#fragment' from 'http://user:pass@example.com/path/to/resource' should have a route of '#fragment' from 'http://user:pass@example.com/path/to/resource?query=x' should have a route of '#fragment' from 'http://user:pass@example.com/path/to/resource?query=x#fragment' should have a route of 'http://elsewhere.com/' to 'http://elsewhere.com/' should have a route of 'http://user:pass@example.com/path/to/resource?query=x#fragment' from 'http://example.com/path/to/' should have the correct scheme after assignment should have the correct site segment after assignment should have the correct authority segment after assignment should have the correct userinfo segment after assignment should have the correct username after assignment should have the correct password after assignment should have the correct host after assignment should have the correct host after assignment should raise an error if assigning a bogus object to the hostname should have the correct port after assignment should have the correct origin after assignment should have the correct path after assignment should have the correct scheme and authority after nil assignment should have the correct scheme and authority after assignment should have the correct path after nil assignment should have the correct query string after assignment should have the correct query string after hash assignment should have the correct query string after flag hash assignment should raise an error if query values are set to a bogus type should have the correct fragment after assignment should have the correct values after a merge should have the correct values after a merge should have the correct values after a merge should have the correct values after a merge should have the correct values after a merge should have the correct values after a merge should have the correct values after a merge should have the correct values after a destructive merge should fail to merge with bogus values should fail to merge with bogus values should fail to merge with bogus parameters should fail to merge with bogus parameters should fail to merge with both authority and subcomponents should fail to merge with both userinfo and subcomponents should be identical to its duplicate should have an origin of 'http://example.com' Addressable::URI when parsed from 'http://example.com/search?q=Q%26A' should have a query of 'q=Q%26A' should have query_values of {'q' => 'Q&A'} should normalize to the original uri (with the ampersand properly percent-encoded) Addressable::URI when parsed from 'http://example.com/?&x=b' should have a query of '&x=b' should have query_values of {'x' => 'b'} Addressable::URI when parsed from 'http://example.com/?q='one;two'&x=1' should have a query of 'q='one;two'&x=1' should have query_values of {"q" => "'one;two'", "x" => "1"} should escape the ';' character when normalizing to avoid ambiguity with the W3C HTML 4.01 specification Addressable::URI when parsed from 'http://example.com/?&&x=b' should have a query of '&&x=b' should have query_values of {'x' => 'b'} Addressable::URI when parsed from 'http://example.com/?q=a&&x=b' should have a query of 'q=a&&x=b' should have query_values of {'q' => 'a, 'x' => 'b'} Addressable::URI when parsed from 'http://example.com/?q&&x=b' should have a query of 'q&&x=b' should have query_values of {'q' => true, 'x' => 'b'} Addressable::URI when parsed from 'http://example.com/?q=a+b' should have a query of 'q=a+b' should have query_values of {'q' => 'a b'} should have a normalized query of 'q=a+b' Addressable::URI when parsed from 'http://example.com/?q=a%2bb' should have a query of 'q=a+b' should have query_values of {'q' => 'a+b'} should have a normalized query of 'q=a%2Bb' Addressable::URI when parsed from 'http://example.com/?v=%7E&w=%&x=%25&y=%2B&z=C%CC%A7' should have a normalized query of 'v=~&w=%25&x=%25&y=%2B&z=%C3%87' Addressable::URI when parsed from 'http://example.com/?v=%7E&w=%&x=%25&y=+&z=C%CC%A7' should have a normalized query of 'v=~&w=%25&x=%25&y=+&z=%C3%87' Addressable::URI when parsed from 'http://example/?b=1&a=2&c=3' should have a sorted normalized query of 'a=2&b=1&c=3' Addressable::URI when parsed from 'http://example/?&a&&c&' should have a compacted normalized query of 'a&c' Addressable::URI when parsed from 'http://example.com/sound%2bvision' should have a normalized path of '/sound+vision' Addressable::URI when parsed from 'http://example.com/?q=' should have a query of 'q=' should have query_values of {'q' => ''} Addressable::URI when parsed from 'http://user@example.com' should use the 'http' scheme should have a username of 'user' should have no password should have a userinfo of 'user' should have a normalized userinfo of 'user' should have a host of 'example.com' should have default_port 80 should use port 80 should have the correct username after assignment should have the correct password after assignment should have the correct userinfo segment after assignment should have the correct userinfo segment after nil assignment should have the correct authority segment after assignment should raise an error after nil assignment of authority segment Addressable::URI when parsed from 'http://user:@example.com' should use the 'http' scheme should have a username of 'user' should have a password of '' should have a normalized userinfo of 'user:' should have a host of 'example.com' should use port 80 should have the correct username after assignment should have the correct password after assignment should have the correct authority segment after assignment Addressable::URI when parsed from 'http://:pass@example.com' should use the 'http' scheme should have a username of '' should have a password of 'pass' should have a userinfo of ':pass' should have a normalized userinfo of ':pass' should have a host of 'example.com' should use port 80 should have the correct username after assignment should have the correct password after assignment should have the correct authority segment after assignment Addressable::URI when parsed from 'http://:@example.com' should use the 'http' scheme should have a username of '' should have a password of '' should have a normalized userinfo of nil should have a host of 'example.com' should use port 80 should have the correct username after assignment should have the correct password after assignment should have the correct authority segment after assignment Addressable::URI when parsed from '#example' should be considered relative should have a host of nil should have a site of nil should have a normalized_site of nil should have a path of '' should have a query string of nil should have a fragment of 'example' Addressable::URI when parsed from the network-path reference '//example.com/' should be considered relative should have a host of 'example.com' should have a path of '/' should raise an error if routing is attempted should have a 'null' origin Addressable::URI when parsed from 'feed://http://example.com/' should have a host of 'http' should have a path of '//example.com/' Addressable::URI when parsed from 'feed:http://example.com/' should have a path of 'http://example.com/' should normalize to 'http://example.com/' should have a 'null' origin Addressable::URI when parsed from 'example://a/b/c/%7Bfoo%7D' should be equivalent to eXAMPLE://a/./b/../b/%63/%7bfoo%7d should have an origin of 'example://a' Addressable::URI when parsed from 'http://example.com/indirect/path/./to/../resource/' should use the 'http' scheme should have a host of 'example.com' should use port 80 should have a path of '/indirect/path/./to/../resource/' should have a normalized path of '/indirect/path/resource/' Addressable::URI when parsed from 'http://under_score.example.com/' should not cause an error Addressable::URI when parsed from './this:that' should be considered relative should have no scheme should have a 'null' origin Addressable::URI when parsed from 'this:that' should be considered absolute should have a scheme of 'this' should have a 'null' origin Addressable::URI when parsed from '?' should normalize to '' should have the correct return type should have a 'null' origin Addressable::URI when parsed from '?one=1&two=2&three=3' should have the correct query values should raise an error for invalid return type values should have the correct array query values should have a 'null' origin Addressable::URI when parsed from '?one=1=uno&two=2=dos' should have the correct query values should have the correct array query values Addressable::URI when parsed from '?one[two][three]=four' should have the correct query values should have the correct array query values Addressable::URI when parsed from '?one.two.three=four' should have the correct query values should have the correct array query values Addressable::URI when parsed from '?one[two][three]=four&one[two][five]=six' should have the correct query values should have the correct array query values Addressable::URI when parsed from '?one.two.three=four&one.two.five=six' should have the correct query values should have the correct array query values Addressable::URI when parsed from '?one=two&one=three' should have correct array query values should have correct hash query values (PENDING: This is probably more desirable behavior.) should handle assignment with keys of mixed type Addressable::URI when parsed from '?one[two][three][]=four&one[two][three][]=five' should have correct query values should have correct array query values Addressable::URI when parsed from '?one[two][three][0]=four&one[two][three][1]=five' should have the correct query values Addressable::URI when parsed from '?one[two][three][1]=four&one[two][three][0]=five' should have the correct query values Addressable::URI when parsed from '?one[two][three][2]=four&one[two][three][1]=five' should have the correct query values Addressable::URI when parsed from 'http://www.詹姆斯.com/' should be equivalent to 'http://www.xn--8ws00zhy3a.com/' should not have domain name encoded during normalization should have an origin of 'http://www.xn--8ws00zhy3a.com' Addressable::URI when parsed from 'http://www.詹姆斯.com/ some spaces /' should be equivalent to 'http://www.xn--8ws00zhy3a.com/%20some%20spaces%20/' should not have domain name encoded during normalization should have an origin of 'http://www.xn--8ws00zhy3a.com' Addressable::URI when parsed from 'http://www.xn--8ws00zhy3a.com/' should be displayed as http://www.詹姆斯.com/ should properly force the encoding should have an origin of 'http://www.xn--8ws00zhy3a.com' Addressable::URI when parsed from 'http://www.詹姆斯.com/atomtests/iri/詹.html' should normalize to http://www.xn--8ws00zhy3a.com/atomtests/iri/%E8%A9%B9.html Addressable::URI when parsed from a percent-encoded IRI should normalize to something sane should have the correct origin Addressable::URI with a base uri of 'http://a/b/c/d;p?q' when joined with 'g:h' should resolve to g:h when joined with 'g' should resolve to http://a/b/c/g when joined with './g' should resolve to http://a/b/c/g when joined with 'g/' should resolve to http://a/b/c/g/ when joined with '/g' should resolve to http://a/g when joined with '//g' should resolve to http://g when joined with '?y' should resolve to http://a/b/c/d;p?y when joined with 'g?y' should resolve to http://a/b/c/g?y when joined with '#s' should resolve to http://a/b/c/d;p?q#s when joined with 'g#s' should resolve to http://a/b/c/g#s when joined with 'g?y#s' should resolve to http://a/b/c/g?y#s when joined with ';x' should resolve to http://a/b/c/;x when joined with 'g;x' should resolve to http://a/b/c/g;x when joined with 'g;x?y#s' should resolve to http://a/b/c/g;x?y#s when joined with '' should resolve to http://a/b/c/d;p?q when joined with '.' should resolve to http://a/b/c/ when joined with './' should resolve to http://a/b/c/ when joined with '..' should resolve to http://a/b/ when joined with '../' should resolve to http://a/b/ when joined with '../g' should resolve to http://a/b/g when joined with '../..' should resolve to http://a/ when joined with '../../' should resolve to http://a/ when joined with '../../g' should resolve to http://a/g when joined with '../../../g' should resolve to http://a/g when joined with '../.././../g' should resolve to http://a/g when joined with '../../../../g' should resolve to http://a/g when joined with '/./g' should resolve to http://a/g when joined with '/../g' should resolve to http://a/g when joined with 'g.' should resolve to http://a/b/c/g. when joined with '.g' should resolve to http://a/b/c/.g when joined with 'g..' should resolve to http://a/b/c/g.. when joined with '..g' should resolve to http://a/b/c/..g when joined with './../g' should resolve to http://a/b/g when joined with './g/.' should resolve to http://a/b/c/g/ when joined with 'g/./h' should resolve to http://a/b/c/g/h when joined with 'g/../h' should resolve to http://a/b/c/h when joined with 'g;x=1/./y' should resolve to http://a/b/c/g;x=1/y when joined with 'g;x=1/../y' should resolve to http://a/b/c/y when joined with 'g?y/./x' should resolve to http://a/b/c/g?y/./x when joined with 'g?y/../x' should resolve to http://a/b/c/g?y/../x when joined with 'g#s/./x' should resolve to http://a/b/c/g#s/./x when joined with 'g#s/../x' should resolve to http://a/b/c/g#s/../x when joined with 'http:g' should resolve to http:g when joined with '//example.com/' should resolve to http://example.com/ when joined with a bogus object a TypeError should be raised Addressable::URI when converting the path 'relative/path/to/something' should convert to 'relative/path/to/something' should join with an absolute file path correctly Addressable::URI when converting a bogus path should raise a TypeError Addressable::URI when given a UNIX root directory should convert to 'file:///' should have an origin of 'file://' Addressable::URI when given a Windows root directory should convert to 'file:///c:/' should have an origin of 'file://' Addressable::URI when given the path '/one/two/' should convert to 'file:///one/two/' should have an origin of 'file://' Addressable::URI when given the tld 'uk' should have a tld of 'uk' which contains a subdomain is part of the domain Addressable::URI when given the path 'c:\windows\My Documents 100%20\foo.txt' should convert to 'file:///c:/windows/My%20Documents%20100%20/foo.txt' should have an origin of 'file://' Addressable::URI when given the path 'file://c:\windows\My Documents 100%20\foo.txt' should convert to 'file:///c:/windows/My%20Documents%20100%20/foo.txt' should have an origin of 'file://' Addressable::URI when given the path 'file:c:\windows\My Documents 100%20\foo.txt' should convert to 'file:///c:/windows/My%20Documents%20100%20/foo.txt' should have an origin of 'file://' Addressable::URI when given the path 'file:/c:\windows\My Documents 100%20\foo.txt' should convert to 'file:///c:/windows/My%20Documents%20100%20/foo.txt' should have an origin of 'file://' Addressable::URI when given the path 'file:///c|/windows/My%20Documents%20100%20/foo.txt' should convert to 'file:///c:/windows/My%20Documents%20100%20/foo.txt' should have an origin of 'file://' Addressable::URI when given an http protocol URI should not do any conversion at all Addressable::URI when parsing a non-String object should correctly parse anything with a 'to_str' method should raise a TypeError for objects than cannot be converted should correctly parse heuristically anything with a 'to_str' method should raise a TypeError for objects than cannot be converted Addressable::URI when form encoding a hash should result in correct percent encoded sequence should result in correct percent encoded sequence should result in correct percent encoded sequence should result in correct percent encoded sequence should result in correctly encoded newlines should result in a sorted percent encoded sequence Addressable::URI when form encoding a non-Array object should raise a TypeError for objects than cannot be converted Addressable::URI when form encoding the example value from OAuth 2 should result in correct values Addressable::URI when form unencoding the example value from OAuth 2 should result in correct values Addressable::URI when form unencoding a string should result in correct values should result in correct values should result in correct values should result in correct values should result in correct values should result in correct values Addressable::URI when form unencoding a non-String object should correctly parse anything with a 'to_str' method should raise a TypeError for objects than cannot be converted Addressable::URI when normalizing a non-String object should correctly parse anything with a 'to_str' method should raise a TypeError for objects than cannot be converted should raise a TypeError for objects than cannot be converted Addressable::URI when normalizing a path with an encoded slash should result in correct percent encoded sequence Addressable::URI when normalizing a partially encoded string should result in correct percent encoded sequence should result in correct percent encoded sequence Addressable::URI when normalizing a unicode sequence should result in correct percent encoded sequence should result in correct percent encoded sequence Addressable::URI when normalizing a multibyte string should result in correct percent encoded sequence should result in correct percent encoded sequence Addressable::URI when normalizing a string but leaving some characters encoded should result in correct percent encoded sequence should not modify the character class Addressable::URI when encoding a string with existing encodings to upcase should result in correct percent encoded sequence Addressable::URI when encoding a multibyte string should result in correct percent encoded sequence should result in correct percent encoded sequence Addressable::URI when form encoding a multibyte string should result in correct percent encoded sequence Addressable::URI when encoding a string with ASCII chars 0-15 should result in correct percent encoded sequence should result in correct percent encoded sequence Addressable::URI when unencoding a multibyte string should result in correct percent encoded sequence should consistently use UTF-8 internally should result in correct percent encoded sequence as a URI Addressable::URI when partially unencoding a string should unencode all characters by default should unencode characters not in leave_encoded should leave characters in leave_encoded alone Addressable::URI when unencoding a bogus object should raise a TypeError should raise a TypeError Addressable::URI when encoding a bogus object should raise a TypeError should raise a TypeError should raise a TypeError should raise a TypeError Addressable::URI when given the input 'http://example.com/' should heuristically parse to 'http://example.com/' should not raise error when frozen Addressable::URI when given the input 'https://example.com/' should heuristically parse to 'https://example.com/' Addressable::URI when given the input 'http:example.com/' should heuristically parse to 'http://example.com/' should heuristically parse to 'http://example.com/' even with a scheme hint of 'ftp' Addressable::URI when given the input 'https:example.com/' should heuristically parse to 'https://example.com/' should heuristically parse to 'https://example.com/' even with a scheme hint of 'ftp' Addressable::URI when given the input 'http://example.com/example.com/' should heuristically parse to 'http://example.com/example.com/' Addressable::URI when given the input 'http://prefix\.example.com/' should heuristically parse to 'http://prefix/.example.com/' should heuristically parse to 'http://prefix/.example.com/' even with a scheme hint of 'ftp' Addressable::URI when given the input 'http://p:\/' should heuristically parse to 'http://p//' should heuristically parse to 'http://p//' even with a scheme hint of 'ftp' Addressable::URI when given the input 'http://p://' should heuristically parse to 'http://p//' should heuristically parse to 'http://p//' even with a scheme hint of 'ftp' Addressable::URI when given the input 'http://p://p' should heuristically parse to 'http://p//p' should heuristically parse to 'http://p//p' even with a scheme hint of 'ftp' Addressable::URI when given the input 'http://prefix .example.com/' should heuristically parse to 'http://prefix%20.example.com/' should heuristically parse to 'http://prefix%20.example.com/' even with a scheme hint of 'ftp' Addressable::URI when given the input ' http://www.example.com/ ' should heuristically parse to 'http://prefix%20.example.com/' Addressable::URI when given the input 'http://prefix%2F.example.com/' should heuristically parse to 'http://prefix%2F.example.com/' should heuristically parse to 'http://prefix%2F.example.com/' even with a scheme hint of 'ftp' Addressable::URI when given the input '/path/to/resource' should heuristically parse to '/path/to/resource' Addressable::URI when given the input 'relative/path/to/resource' should heuristically parse to 'relative/path/to/resource' Addressable::URI when given the input 'example.com' should heuristically parse to 'http://example.com' Addressable::URI when given the input 'example.com' and a scheme hint of 'ftp' should heuristically parse to 'http://example.com' Addressable::URI when given the input 'example.com:21' and a scheme hint of 'ftp' should heuristically parse to 'http://example.com:21' Addressable::URI when given the input 'example.com/path/to/resource' should heuristically parse to 'http://example.com/path/to/resource' Addressable::URI when given the input 'http:///example.com' should heuristically parse to 'http://example.com' Addressable::URI when given the input which start with digits and has specified port should heuristically parse to 'http://7777.example.org:8089' Addressable::URI when given the input 'feed:///example.com' should heuristically parse to 'feed://example.com' Addressable::URI when given the input 'file://localhost/path/to/resource/' should heuristically parse to 'file:///path/to/resource/' Addressable::URI when given the input 'file://path/to/resource/' should heuristically parse to 'file:///path/to/resource/' Addressable::URI when given the input 'file://///path/to/resource/' should heuristically parse to 'file:////path/to/resource/' Addressable::URI when given the input 'feed://http://example.com' should heuristically parse to 'feed:http://example.com' Addressable::URI when given the input ::URI.parse('http://example.com') should heuristically parse to 'http://example.com' Addressable::URI when given the input: 'user@domain.com' for heuristic parse should remain 'mailto:user@domain.com' should have a scheme of 'mailto' should remain 'acct:user@domain.com' HTTP should remain 'http://user@domain.com/' should have the username 'user' for HTTP basic authentication Addressable::URI when assigning query values should correctly assign {:a => 'a', :b => ['c', 'd', 'e']} should raise an error attempting to assign {'a' => {'b' => ['c']}} should raise an error attempting to assign {:b => '2', :a => {:c => '1'}} should raise an error attempting to assign {:a => 'a', :b => [{:c => 'c', :d => 'd'}, {:e => 'e', :f => 'f'}]} should raise an error attempting to assign {:a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}]} should raise an error attempting to assign {:a => 'a', :b => {:c => true, :d => 'd'}} should raise an error attempting to assign {:a => 'a', :b => {:c => true, :d => 'd'}} should correctly assign {:a => 1, :b => 1.5} should raise an error attempting to assign {:z => 1, :f => [2, {999.1 => [3,'4']}, ['h', 'i']], :a => {:b => ['c', 'd'], :e => true, :y => 0.5}} should correctly assign {} should correctly assign nil should correctly sort {'ab' => 'c', :ab => 'a', :a => 'x'} should correctly assign [['b', 'c'], ['b', 'a'], ['a', 'a']] should preserve query string order when a hash with mixed types is assigned to query_values should not raise an error (PENDING: Issue #94) Addressable::URI when assigning path values should correctly assign paths containing colons should correctly assign paths containing colons should correctly assign paths containing colons should not allow relative paths to be assigned on absolute URIs should not allow relative paths to be assigned on absolute URIs should not allow relative paths to be assigned on absolute URIs Addressable::URI when initializing a subclass of Addressable::URI should have the same class after being parsed should have the same class as its duplicate should have the same class after being normalized should have the same class after being merged should have the same class after being joined Pending: (Failures listed here are expected and do not affect your suite's status) 1) Addressable::URI when assigning IPv6 address should not allow to set bare IPv6 address as host # not checked # ./spec/addressable/uri_spec.rb:2100 2) Addressable::URI when parsed from 'http://example.com/%2E/' should be considered to be in normal form # path segment normalization should happen before percent escaping normalization # ./spec/addressable/uri_spec.rb:2965 3) Addressable::URI when parsed from 'http://example.com/%2E/' should normalize to 'http://example.com/%2E/' # path segment normalization should happen before percent escaping normalization # ./spec/addressable/uri_spec.rb:2973 4) Addressable::URI when parsed from '?one=two&one=three' should have correct hash query values # This is probably more desirable behavior. # ./spec/addressable/uri_spec.rb:4960 5) Addressable::URI when assigning query values when a hash with mixed types is assigned to query_values should not raise an error # Issue #94 # ./spec/addressable/uri_spec.rb:6522 Finished in 2.26 seconds (files took 1.2 seconds to load) 1386 examples, 0 failures, 5 pending Coverage report generated for RSpec to /tmp/guix-build-ruby-addressable-2.7.0.drv-0/gem/coverage. 1545 / 1646 LOC (93.86%) covered. phase `check' succeeded after 4.2 seconds starting phase `install' /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/CHANGELOG.md /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/Gemfile /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/LICENSE.txt /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/README.md /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/Rakefile /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/data/unicode.data /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/idna.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/idna/native.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/idna/pure.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/template.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/uri.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/lib/addressable/version.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/idna_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/net_http_compat_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/rack_mount_compat_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/security_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/template_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/addressable/uri_spec.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/spec/spec_helper.rb /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/clobber.rake /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/gem.rake /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/git.rake /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/metrics.rake /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/rspec.rake /gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/gems/addressable-2.7.0/tasks/yard.rake Successfully installed addressable-2.7.0 Parsing documentation for addressable-2.7.0 Parsing sources... 12% [ 1/ 8] README.md 25% [ 2/ 8] lib/addressable.rb 37% [ 3/ 8] lib/addressable/idna.rb 50% [ 4/ 8] lib/addressable/idna/native.rb 62% [ 5/ 8] lib/addressable/idna/pure.rb 75% [ 6/ 8] lib/addressable/template.rb 87% [ 7/ 8] lib/addressable/uri.rb 100% [ 8/ 8] lib/addressable/version.rb Installing ri documentation for addressable-2.7.0 Done installing documentation for addressable after 1 seconds 1 gem installed deleting '/gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib/ruby/vendor_ruby/cache/./addressable-2.7.0.gem' for reproducibility phase `install' succeeded after 2.3 seconds starting phase `wrap' phase `wrap' succeeded after 0.0 seconds starting phase `patch-shebangs' phase `patch-shebangs' succeeded after 0.0 seconds starting phase `strip' stripping binaries in "/gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib" with "strip" and flags ("--strip-unneeded" "--enable-deterministic-archives") phase `strip' succeeded after 0.1 seconds starting phase `validate-runpath' validating RUNPATH of 0 binaries in "/gnu/store/gmk75b46yq0n38v0rj7fp4x65p17w8n3-ruby-addressable-2.7.0/lib"... phase `validate-runpath' succeeded after 0.0 seconds starting phase `validate-documentation-location' phase `validate-documentation-location' succeeded after 0.0 seconds starting phase `delete-info-dir-file' phase `delete-info-dir-file' succeeded after 0.0 seconds starting phase `patch-dot-desktop-files' phase `patch-dot-desktop-files' succeeded after 0.0 seconds starting phase `make-dynamic-linker-cache' phase `make-dynamic-linker-cache' succeeded after 0.0 seconds starting phase `install-license-files' installing 1 license files from '.' phase `install-license-files' succeeded after 0.0 seconds starting phase `reset-gzip-timestamps' phase `reset-gzip-timestamps' succeeded after 0.0 seconds starting phase `compress-documentation' phase `compress-documentation' succeeded after 0.0 seconds