Diff of the two buildlogs: -- --- b1/build.log 2021-07-22 12:00:41.674408649 +0000 +++ b2/build.log 2021-07-22 12:03:29.784062517 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Jul 21 23:58:37 -12 2021 -I: pbuilder-time-stamp: 1626955117 +I: Current time: Fri Jul 23 02:00:50 +14 2021 +I: pbuilder-time-stamp: 1626955250 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -16,8 +16,8 @@ I: copying [./ruby-http_4.4.1-4.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' -gpgv: keyblock resource '/tmp/dpkg-verify-sig.xTGGlDjz/trustedkeys.kbx': General error -gpgv: Signature made Wed Jul 1 06:39:01 2020 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.OIzjCSQA/trustedkeys.kbx': General error +gpgv: Signature made Thu Jul 2 08:39:01 2020 +14 gpgv: using RSA key 8ED6C3F8BAC9DB7FC130A870F823A2729883C97C gpgv: issuer "kanashiro@debian.org" gpgv: Can't check signature: No public key @@ -32,135 +32,169 @@ dpkg-source: info: applying 0004-Skip-failing-flaky-test.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/27594/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/D01_modify_environment starting +debug: Running on ff4a. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash' +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=3' - DISTRIBUTION='' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=4' + DIRSTACK=() + DISTRIBUTION= + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='32f74833977842b489032490099eef23' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='27594' - PS1='# ' - PS2='> ' + INVOCATION_ID=0754f1c0c48c497194280f180cd79b8b + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=23229 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.xn8y9nQ9k1/pbuilderrc_MDwh --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.xn8y9nQ9k1/b1 --logfile b1/build.log ruby-http_4.4.1-4.dsc' - SUDO_GID='114' - SUDO_UID='108' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:8000/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.xn8y9nQ9k1/pbuilderrc_pwPO --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.xn8y9nQ9k1/b2 --logfile b2/build.log --extrapackages usrmerge ruby-http_4.4.1-4.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:8000/ I: uname -a - Linux virt64a 5.10.0-7-arm64 #1 SMP Debian 5.10.40-1 (2021-05-28) aarch64 GNU/Linux + Linux i-capture-the-hostname 5.10.0-8-armmp-lpae #1 SMP Debian 5.10.46-1 (2021-06-24) armv7l GNU/Linux I: ls -l /bin total 3580 - -rwxr-xr-x 1 root root 816764 Jun 21 14:26 bash - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bzcat - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Jul 20 2020 bzdiff - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4877 Sep 4 2019 bzexe - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Jul 20 2020 bzgrep - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 9636 Jul 20 2020 bzip2recover - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Jul 20 2020 bzmore - -rwxr-xr-x 1 root root 26668 Sep 22 2020 cat - -rwxr-xr-x 1 root root 43104 Sep 22 2020 chgrp - -rwxr-xr-x 1 root root 38984 Sep 22 2020 chmod - -rwxr-xr-x 1 root root 43112 Sep 22 2020 chown - -rwxr-xr-x 1 root root 92616 Sep 22 2020 cp - -rwxr-xr-x 1 root root 75524 Dec 10 2020 dash - -rwxr-xr-x 1 root root 75880 Sep 22 2020 date - -rwxr-xr-x 1 root root 55436 Sep 22 2020 dd - -rwxr-xr-x 1 root root 59912 Sep 22 2020 df - -rwxr-xr-x 1 root root 96764 Sep 22 2020 dir - -rwxr-xr-x 1 root root 55012 Feb 7 02:38 dmesg - lrwxrwxrwx 1 root root 8 Nov 6 2019 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Nov 6 2019 domainname -> hostname - -rwxr-xr-x 1 root root 22508 Sep 22 2020 echo - -rwxr-xr-x 1 root root 28 Nov 9 2020 egrep - -rwxr-xr-x 1 root root 22496 Sep 22 2020 false - -rwxr-xr-x 1 root root 28 Nov 9 2020 fgrep - -rwxr-xr-x 1 root root 47492 Feb 7 02:38 findmnt - -rwsr-xr-x 1 root root 26076 Feb 26 04:12 fusermount - -rwxr-xr-x 1 root root 124508 Nov 9 2020 grep - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 gunzip - -rwxr-xr-x 1 root root 6376 Mar 2 11:30 gzexe - -rwxr-xr-x 1 root root 64212 Mar 2 11:30 gzip - -rwxr-xr-x 1 root root 13784 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 43180 Sep 22 2020 ln - -rwxr-xr-x 1 root root 35068 Feb 7 2020 login - -rwxr-xr-x 1 root root 96764 Sep 22 2020 ls - -rwxr-xr-x 1 root root 99940 Feb 7 02:38 lsblk - -rwxr-xr-x 1 root root 51408 Sep 22 2020 mkdir - -rwxr-xr-x 1 root root 43184 Sep 22 2020 mknod - -rwxr-xr-x 1 root root 30780 Sep 22 2020 mktemp - -rwxr-xr-x 1 root root 34408 Feb 7 02:38 more - -rwsr-xr-x 1 root root 34400 Feb 7 02:38 mount - -rwxr-xr-x 1 root root 9824 Feb 7 02:38 mountpoint - -rwxr-xr-x 1 root root 88524 Sep 22 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 18 03:38 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 26652 Sep 22 2020 pwd - lrwxrwxrwx 1 root root 4 Jun 21 14:26 rbash -> bash - -rwxr-xr-x 1 root root 30740 Sep 22 2020 readlink - -rwxr-xr-x 1 root root 43104 Sep 22 2020 rm - -rwxr-xr-x 1 root root 30732 Sep 22 2020 rmdir - -rwxr-xr-x 1 root root 14144 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 76012 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Jul 20 21:25 sh -> dash - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sleep - -rwxr-xr-x 1 root root 55360 Sep 22 2020 stty - -rwsr-xr-x 1 root root 46704 Feb 7 02:38 su - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sync - -rwxr-xr-x 1 root root 340872 Feb 16 21:55 tar - -rwxr-xr-x 1 root root 9808 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 67696 Sep 22 2020 touch - -rwxr-xr-x 1 root root 22496 Sep 22 2020 true - -rwxr-xr-x 1 root root 9636 Feb 26 04:12 ulockmgr_server - -rwsr-xr-x 1 root root 22108 Feb 7 02:38 umount - -rwxr-xr-x 1 root root 22520 Sep 22 2020 uname - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 uncompress - -rwxr-xr-x 1 root root 96764 Sep 22 2020 vdir - -rwxr-xr-x 1 root root 38512 Feb 7 02:38 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Mar 2 11:30 zcat - -rwxr-xr-x 1 root root 1678 Mar 2 11:30 zcmp - -rwxr-xr-x 1 root root 5880 Mar 2 11:30 zdiff - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zegrep - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zfgrep - -rwxr-xr-x 1 root root 2081 Mar 2 11:30 zforce - -rwxr-xr-x 1 root root 7585 Mar 2 11:30 zgrep - -rwxr-xr-x 1 root root 2206 Mar 2 11:30 zless - -rwxr-xr-x 1 root root 1842 Mar 2 11:30 zmore - -rwxr-xr-x 1 root root 4553 Mar 2 11:30 znew -I: user script /srv/workspace/pbuilder/27594/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 816764 Jun 22 16:26 bash + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzcat + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 9636 Jul 21 2020 bzip2recover + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore + -rwxr-xr-x 1 root root 26668 Sep 23 2020 cat + -rwxr-xr-x 1 root root 43104 Sep 23 2020 chgrp + -rwxr-xr-x 1 root root 38984 Sep 23 2020 chmod + -rwxr-xr-x 1 root root 43112 Sep 23 2020 chown + -rwxr-xr-x 1 root root 92616 Sep 23 2020 cp + -rwxr-xr-x 1 root root 75524 Dec 11 2020 dash + -rwxr-xr-x 1 root root 75880 Sep 23 2020 date + -rwxr-xr-x 1 root root 55436 Sep 23 2020 dd + -rwxr-xr-x 1 root root 59912 Sep 23 2020 df + -rwxr-xr-x 1 root root 96764 Sep 23 2020 dir + -rwxr-xr-x 1 root root 55012 Feb 8 04:38 dmesg + lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname + -rwxr-xr-x 1 root root 22508 Sep 23 2020 echo + -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep + -rwxr-xr-x 1 root root 22496 Sep 23 2020 false + -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep + -rwxr-xr-x 1 root root 47492 Feb 8 04:38 findmnt + -rwsr-xr-x 1 root root 26076 Feb 27 06:12 fusermount + -rwxr-xr-x 1 root root 124508 Nov 10 2020 grep + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 gunzip + -rwxr-xr-x 1 root root 6376 Mar 3 13:30 gzexe + -rwxr-xr-x 1 root root 64212 Mar 3 13:30 gzip + -rwxr-xr-x 1 root root 13784 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 43180 Sep 23 2020 ln + -rwxr-xr-x 1 root root 35068 Feb 8 2020 login + -rwxr-xr-x 1 root root 96764 Sep 23 2020 ls + -rwxr-xr-x 1 root root 99940 Feb 8 04:38 lsblk + -rwxr-xr-x 1 root root 51408 Sep 23 2020 mkdir + -rwxr-xr-x 1 root root 43184 Sep 23 2020 mknod + -rwxr-xr-x 1 root root 30780 Sep 23 2020 mktemp + -rwxr-xr-x 1 root root 34408 Feb 8 04:38 more + -rwsr-xr-x 1 root root 34400 Feb 8 04:38 mount + -rwxr-xr-x 1 root root 9824 Feb 8 04:38 mountpoint + -rwxr-xr-x 1 root root 88524 Sep 23 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 19 05:38 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 26652 Sep 23 2020 pwd + lrwxrwxrwx 1 root root 4 Jun 22 16:26 rbash -> bash + -rwxr-xr-x 1 root root 30740 Sep 23 2020 readlink + -rwxr-xr-x 1 root root 43104 Sep 23 2020 rm + -rwxr-xr-x 1 root root 30732 Sep 23 2020 rmdir + -rwxr-xr-x 1 root root 14144 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 76012 Dec 23 2018 sed + lrwxrwxrwx 1 root root 4 Jul 23 02:01 sh -> bash + lrwxrwxrwx 1 root root 4 Jul 21 23:27 sh.distrib -> dash + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sleep + -rwxr-xr-x 1 root root 55360 Sep 23 2020 stty + -rwsr-xr-x 1 root root 46704 Feb 8 04:38 su + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sync + -rwxr-xr-x 1 root root 340872 Feb 17 23:55 tar + -rwxr-xr-x 1 root root 9808 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 67696 Sep 23 2020 touch + -rwxr-xr-x 1 root root 22496 Sep 23 2020 true + -rwxr-xr-x 1 root root 9636 Feb 27 06:12 ulockmgr_server + -rwsr-xr-x 1 root root 22108 Feb 8 04:38 umount + -rwxr-xr-x 1 root root 22520 Sep 23 2020 uname + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 uncompress + -rwxr-xr-x 1 root root 96764 Sep 23 2020 vdir + -rwxr-xr-x 1 root root 38512 Feb 8 04:38 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Mar 3 13:30 zcat + -rwxr-xr-x 1 root root 1678 Mar 3 13:30 zcmp + -rwxr-xr-x 1 root root 5880 Mar 3 13:30 zdiff + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zegrep + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zfgrep + -rwxr-xr-x 1 root root 2081 Mar 3 13:30 zforce + -rwxr-xr-x 1 root root 7585 Mar 3 13:30 zgrep + -rwxr-xr-x 1 root root 2206 Mar 3 13:30 zless + -rwxr-xr-x 1 root root 1842 Mar 3 13:30 zmore + -rwxr-xr-x 1 root root 4553 Mar 3 13:30 znew +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -380,7 +414,7 @@ Get: 162 http://deb.debian.org/debian bullseye/main armhf ruby-rspec-mocks all 3.9.0c2e2m1s3-2 [81.4 kB] Get: 163 http://deb.debian.org/debian bullseye/main armhf ruby-rspec all 3.9.0c2e2m1s3-2 [8348 B] Get: 164 http://deb.debian.org/debian bullseye/main armhf ruby-rspec-its all 1.3.0-1 [6864 B] -Fetched 44.3 MB in 6s (7892 kB/s) +Fetched 44.3 MB in 4s (10.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19398 files and directories currently installed.) @@ -1060,8 +1094,45 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +The following additional packages will be installed: + libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl +The following NEW packages will be installed: + libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl usrmerge +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Need to get 59.5 kB of archives. +After this operation, 157 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian bullseye/main armhf libnumber-compare-perl all 0.03-1.1 [6956 B] +Get:2 http://deb.debian.org/debian bullseye/main armhf libtext-glob-perl all 0.11-1 [8888 B] +Get:3 http://deb.debian.org/debian bullseye/main armhf libfile-find-rule-perl all 0.34-1 [30.6 kB] +Get:4 http://deb.debian.org/debian bullseye/main armhf usrmerge all 25 [13.0 kB] +debconf: delaying package configuration, since apt-utils is not installed +Fetched 59.5 kB in 0s (1019 kB/s) +Selecting previously unselected package libnumber-compare-perl. +(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 27729 files and directories currently installed.) +Preparing to unpack .../libnumber-compare-perl_0.03-1.1_all.deb ... +Unpacking libnumber-compare-perl (0.03-1.1) ... +Selecting previously unselected package libtext-glob-perl. +Preparing to unpack .../libtext-glob-perl_0.11-1_all.deb ... +Unpacking libtext-glob-perl (0.11-1) ... +Selecting previously unselected package libfile-find-rule-perl. +Preparing to unpack .../libfile-find-rule-perl_0.34-1_all.deb ... +Unpacking libfile-find-rule-perl (0.34-1) ... +Selecting previously unselected package usrmerge. +Preparing to unpack .../archives/usrmerge_25_all.deb ... +Unpacking usrmerge (25) ... +Setting up libtext-glob-perl (0.11-1) ... +Setting up libnumber-compare-perl (0.03-1.1) ... +Setting up libfile-find-rule-perl (0.34-1) ... +Setting up usrmerge (25) ... +The system has been successfully converted. +Processing triggers for man-db (2.9.4-2) ... +Not building database; man-db/auto-update is not 'true'. I: Building the package -I: Running cd /build/ruby-http-4.4.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-http_4.4.1-4_source.changes +hostname: Name or service not known +I: Running cd /build/ruby-http-4.4.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-http_4.4.1-4_source.changes dpkg-buildpackage: info: source package ruby-http dpkg-buildpackage: info: source version 4.4.1-4 dpkg-buildpackage: info: source distribution unstable @@ -1096,40 +1167,40 @@ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby +install -D -m644 /build/ruby-http-4.4.1/lib/http.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/client.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/client.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/request/writer.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request/writer.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/request/body.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request/body.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/headers.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/headers.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/errors.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/errors.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/version.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/version.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/mime_type.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/mime_type.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/connection.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/connection.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/options.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/options.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response/inflater.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/inflater.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response/body.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/body.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response/status.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/status.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response/status/reasons.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/status/reasons.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/response/parser.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/parser.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/feature.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/feature.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/features/instrumentation.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/instrumentation.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/mime_type/json.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/mime_type/json.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/mime_type/adapter.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/mime_type/adapter.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/request.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/per_operation.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/per_operation.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/global.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/global.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/null.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/null.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/features/auto_deflate.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/auto_deflate.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/features/logging.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/logging.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/features/auto_inflate.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/auto_inflate.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/features/normalize_uri.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/normalize_uri.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/client.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/client.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/connection.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/connection.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/mime_type/json.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/mime_type/json.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/mime_type/adapter.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/mime_type/adapter.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/features/instrumentation.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/features/instrumentation.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/chainable.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/chainable.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/feature.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/feature.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response/status/reasons.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/status/reasons.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response/body.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/body.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response/inflater.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/inflater.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response/status.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/status.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/response/parser.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/response/parser.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/version.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/version.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/uri.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/uri.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/redirector.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/redirector.rb +install -D -m644 /build/ruby-http-4.4.1/lib/http/errors.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/errors.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/headers/known.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/headers/known.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/headers/mixin.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/headers/mixin.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/request.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/request/body.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request/body.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/request/writer.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/request/writer.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/chainable.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/chainable.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/global.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/global.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/per_operation.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/per_operation.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/timeout/null.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/timeout/null.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http/uri.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/uri.rb install -D -m644 /build/ruby-http-4.4.1/lib/http/content_type.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http/content_type.rb -install -D -m644 /build/ruby-http-4.4.1/lib/http.rb /build/ruby-http-4.4.1/debian/ruby-http/usr/lib/ruby/vendor_ruby/http.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ @@ -1163,65 +1234,7 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 43987 - -HTTP::Options proxy - accepts proxy address, port, username, and password - may be specified with with_proxy - defaults to {} - -HTTP::Request::Body - #initialize - when body is nil - does not raise an error - when body is an Enumerable - does not raise an error - when body is a string - does not raise an error - when body is an IO - does not raise an error - when body is of unrecognized type - raises an error - #size - when body is an Enumerable - raises a RequestError - when body is a string - returns string bytesize - when body is nil - returns zero - when body is an IO without size - raises a RequestError - when body is an IO with size - returns IO size - #== - when objects are not of the same class - returns false - when sources are not equivalent - returns false - when sources are equivalent - returns true - #source - returns the original object - #each - when body is a non-Enumerable IO - yields chunks of content - when body is nil - yields nothing - when body is a string - yields the string - when body is an Enumerable - yields elements - when body is a pipe - yields chunks of content - when body is an Enumerable IO - yields chunks of content - allows to enumerate multiple times - -HTTP::Features::Logging - logging the response - should log the response - logging the request - should log the request +Randomized with seed 40440 HTTP::Response::Parser response in many parts @@ -1231,602 +1244,440 @@ parses headers parses body -HTTP::Options new - supports a Options instance - with a Hash - coerces :headers correctly - coerces :form correctly - coerces :proxy correctly - coerces :response correctly - -HTTP::Options form - may be specified with with_form_data - defaults to nil - -HTTP::Headers::Mixin - #[]= - proxies to headers#[] - #[] - proxies to headers#[] - #headers - returns @headers instance variable - -HTTP::Options json - defaults to nil - may be specified with with_json data - -HTTP::Features::AutoDeflate - raises error for wrong type - uses gzip by default - accepts deflate method - accepts gzip method - accepts string as method - #deflated_body - when method is gzip - returns object which yields gzipped content of the given body - caches compressed content when size is called - when method is deflate - returns object which yields deflated content of the given body - caches compressed content when size is called - -HTTP::Client - parsing params - properly encodes colons - accepts params within the provided URL - combines GET params from the URI with the passed in params - merges duplicate values - does not corrupts index-less arrays - does not convert newlines into \r\n before encoding string values - does not modifies query part if no params were given - #perform - calls finish_response once body was fully flushed - when server fully flushes response in one chunk - properly reads body - with HEAD request - does not iterates through body - finishes response after headers were received - when uses chunked transfer encoding - properly reads body - with broken body (too early closed connection) - raises HTTP::ConnectionError - working with SSL - fails with OpenSSL::SSL::SSLError if host mismatch (PENDING: Temporarily skipped with xdescribe) - just works (PENDING: Temporarily skipped with xdescribe) - with a per operation timeout - works (PENDING: Temporarily skipped with xdescribe) - connection - of 1 - does not time out (PENDING: Temporarily skipped with xdescribe) - read - of 2.5 - does not time out (PENDING: Temporarily skipped with xdescribe) - of 0 - times out (PENDING: Temporarily skipped with xit) - with a global timeout - errors if reading takes too long (PENDING: Temporarily skipped with xdescribe) - errors if connecting takes too long (PENDING: Temporarily skipped with xdescribe) - it resets state when reusing connections - does not timeout (PENDING: Temporarily skipped with xdescribe) - connection reuse - when disabled - opens new sockets (PENDING: Temporarily skipped with xdescribe) - when enabled - re-uses the socket (PENDING: Temporarily skipped with xdescribe) - when reading a cached body - succeeds (PENDING: Temporarily skipped with xdescribe) - with a socket issue - transparently reopens (PENDING: Temporarily skipped with xdescribe) - without a host - infers host from persistent config (PENDING: Temporarily skipped with xdescribe) - on a mixed state - re-opens the connection (PENDING: Temporarily skipped with xdescribe) - when trying to read a stale body - errors (PENDING: Temporarily skipped with xdescribe) - with a change in host - errors (PENDING: Temporarily skipped with xdescribe) - without timeouts - works (PENDING: Temporarily skipped with xdescribe) - with SSL options instead of a context - just works (PENDING: Temporarily skipped with xdescribe) - with a per operation timeout - works - read - of 0 - times out (PENDING: Temporarily skipped with xit) - of 2.5 - does not time out - connection - of 1 - does not time out - connection reuse - when enabled - re-uses the socket - with a change in host - errors - when trying to read a stale body - errors - without a host - infers host from persistent config - with a socket issue - transparently reopens - on a mixed state - re-opens the connection - when reading a cached body - succeeds - when disabled - opens new sockets - following redirects - prepends previous request uri scheme and host if needed - fails if max amount of hops reached - fails upon endless redirects - returns response of new location - with non-ASCII URLs - theoretically works like a charm (PENDING: Temporarily skipped with xit) - works like a charm in real world (PENDING: Temporarily skipped with xit) - passing json - encodes given object - without timeouts - works - passing multipart form data - creates url encoded form data object - creates multipart form data object - when passing an HTTP::FormData object directly - creates url encoded form data object - #request - with non-ASCII URLs - works like a charm in real world (PENDING: Temporarily skipped with xit) - theoretically works like a charm (PENDING: Temporarily skipped with xit) - with explicitly given `Host` header - keeps `Host` header as is (PENDING: Temporarily skipped with xit) - when :auto_deflate was specified - sets Content-Encoding header - deletes Content-Length header - and there is no body - doesn't set Content-Encoding header - with a global timeout - errors if reading takes too long - errors if connecting takes too long - it resets state when reusing connections - does not timeout - HTTP::Options merge - merges as excepted in complex cases supports another Options + merges as excepted in complex cases supports a Hash -HTTP -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized -/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized - unifies socket errors into HTTP::ConnectionError - .nodelay - sets TCP_NODELAY on the underlying socket - passing a string encoding type - finds encoding - .use - turns on given feature - with :normalize_uri - uses the default URI normalizer - normalizes URI - uses the custom URI Normalizer method - with :auto_deflate - sends deflated body - sends gzipped body - with :auto_inflate - returns deflated body - returns raw body when Content-Encoding type is missing - returns decoded body - posting with an explicit body - is easy - .timeout - specifying a global timeout - sets timeout_class to Global - sets given timeout option - specifying per operation timeouts - sets timeout_class to PerOperation - sets given timeout options - specifying a null timeout - sets timeout_class to Null - head requests - is easy - .persistent - with host only given - example at ./spec/lib/http_spec.rb:260 (PENDING: Temporarily skipped with xit) - example at ./spec/lib/http_spec.rb:261 (PENDING: Temporarily skipped with xit) - with timeout specified - sets keep_alive_timeout - with host and block given - auto-closes connection (PENDING: Temporarily skipped with xit) - returns last evaluation of last expression (PENDING: Temporarily skipped with xit) - .cookies - passes correct `Cookie` header - properly merges Cookie headers and cookies - properly merges cookies - properly works with cookie jars from response - .auth - accepts any #to_s object - sets Authorization header to the given value - .basic_auth - fails when options is not a Hash - fails when :user is not given - fails when :pass is not given - sets Authorization header with proper BasicAuth value - loading binary data - is encoded as bytes - loading text with no charset - is binary encoded - loading endpoint with charset - uses charset from headers - with encoding option - respects option - .via - proxy with authentication - responds with the endpoint's body - proxies the request - responds with 407 if no credentials given - responds with 407 when wrong credentials given - ssl - responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) - responds with 407 if no credentials given (PENDING: Temporarily skipped with xcontext) - responds with 407 when wrong credentials given (PENDING: Temporarily skipped with xcontext) - anonymous proxy - raises an argument error if no port given - ignores credentials - responds with the endpoint's body - proxies the request - ssl - ignores credentials (PENDING: Temporarily skipped with xcontext) - responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) - with redirects - is easy for 302 - is easy for 301 - posting forms to resources - is easy - getting resources - is easy - with headers - is easy - with URI instance - is easy - with query string parameters - is easy - with two leading slashes in path - is allowed - with query string parameters in the URI and opts hash - includes both - with a large request body - with `.timeout(:null)` - writes the whole body - with `.timeout({:read=>2, :write=>2, :connect=>2})` - writes the whole body - with `.timeout(6)` - writes the whole body - HTTP::Connection #read_headers! reads data in parts #readpartial reads data in parts -HTTP::Options headers - accepts any object that respond to :to_hash - may be specified with with_headers - defaults to be empty - -HTTP::Redirector - #strict - by default - is expected to equal true - #perform - fails with TooManyRedirectsError if max hops reached - fails with StateError if there were no Location header - fails with EndlessRedirectError if endless loop detected - returns first non-redirect response - concatenates multiple Location headers - following 303 redirect - follows with HEAD if original request was HEAD - follows with GET if original request was GET - follows with GET if original request was neither GET nor HEAD - following 300 redirect - with strict mode - it follows with original verb if it's safe - raises StateError if original request was PUT - raises StateError if original request was POST - raises StateError if original request was DELETE - with non-strict mode - it follows with GET if original request was PUT - it follows with GET if original request was POST - it follows with GET if original request was DELETE - it follows with original verb if it's safe - following 302 redirect - with strict mode - raises StateError if original request was DELETE - it follows with original verb if it's safe - raises StateError if original request was PUT - raises StateError if original request was POST - with non-strict mode - it follows with GET if original request was POST - it follows with original verb if it's safe - it follows with GET if original request was PUT - it follows with GET if original request was DELETE - following 301 redirect - with non-strict mode - it follows with GET if original request was DELETE - it follows with GET if original request was POST - it follows with original verb if it's safe - it follows with GET if original request was PUT - with strict mode - raises StateError if original request was POST - raises StateError if original request was PUT - it follows with original verb if it's safe - raises StateError if original request was DELETE - following 307 redirect - follows with original request's verb - following 308 redirect - follows with original request's verb - #max_hops - by default - is expected to eq 5 - -HTTP::ContentType - .parse - with text/plain; foo=bar; charset=utf-8 - mime_type - is expected to eq "text/plain" - charset - is expected to eq "utf-8" - with text/plain; charSET=utf-8 - charset - is expected to eq "utf-8" - mime_type - is expected to eq "text/plain" - with text/plain; charset="utf-8" - mime_type - is expected to eq "text/plain" - charset - is expected to eq "utf-8" - with tEXT/plaIN - mime_type - is expected to eq "text/plain" - charset - is expected to be nil - with text/plain; charset=utf-8 - charset - is expected to eq "utf-8" - mime_type - is expected to eq "text/plain" - with text/plain;charset=utf-8;foo=bar - mime_type - is expected to eq "text/plain" - charset - is expected to eq "utf-8" - with text/plain - mime_type - is expected to eq "text/plain" - charset - is expected to be nil +HTTP::Headers::Mixin + #[] + proxies to headers#[] + #[]= + proxies to headers#[] + #headers + returns @headers instance variable -HTTP::Options body +HTTP::Options form + may be specified with with_form_data defaults to nil - may be specified with with_body HTTP::Response::Body streams bodies from responses - #readpartial - returns content in specified encoding - without size given - calls underlying connection readpartial without specific size - does not blows up - with size given - passes value to underlying connection when body is gzipped decodes body #readpartial streams decoded body when body empty returns responds to empty? with true + #readpartial + returns content in specified encoding + with size given + passes value to underlying connection + without size given + calls underlying connection readpartial without specific size + does not blows up -HTTP::Options features - raises error for not supported features - accepts feature name with its options in array - accepts plain symbols in array - defaults to be empty +HTTP::Request::Writer + #stream + when body is empty + doesn't write anything to the socket and sets Content-Length + when Transfer-Encoding is chunked + writes encoded content and omits Content-Length + when body is nonempty + writes it to the socket and sets Content-Length + when writing to socket raises an exception + raises a ConnectionError + when server won't accept any more data + aborts silently + when Content-Length header is set + keeps the given value + when multiple headers are set + separates headers with carriage return and line feed + +HTTP::Options proxy + may be specified with with_proxy + defaults to {} + accepts proxy address, port, username, and password + +HTTP::Options + coerces to a Hash + has reader methods for attributes HTTP::URI - sets default ports for HTTP URIs sets default ports for HTTPS URIs + sets default ports for HTTP URIs knows URI schemes #dup doesn't share internal value between duplicates -HTTP::Features::Instrumentation - logging the response - should log the response - logging the request - should log the request +HTTP::Headers + is Enumerable + #[] + when header has a single value + normalizes header name + returns it returns a single value + when header does not exists + returns nil + when header has a multiple values + returns array of associated values + normalizes header name + #dup + is expected to be a kind of HTTP::Headers + is expected not to equal ["Content-Type", "application/json"] + has headers copied + modifying a copy + does not affects original headers + modifies dupped copy + #get + returns array of associated values + fails with invalid header name + fails with empty header name + normalizes header name + when header does not exists + returns empty array + .empty? + when last header was removed + is expected to equal true + when header exists + is expected to equal false + initially + is expected to equal true + #each + yields each key/value pair separatedly + returns self instance if block given + yields headers in the same order they were added + returns Enumerator if no block given + .coerce + accepts any object that respond to #to_h + is aliased as .[] + accepts any object that respond to #to_hash + accepts any object that respond to #to_a + fails if given object cannot be coerced + with duplicate header keys (mixed case) + adds all headers + #merge! + overwrites existing values + appends other headers, not presented in base + leaves headers not presented in other as is + #merge + does not affects original headers + is expected not to equal ["Host", "example.com"] and ["Accept", "application/json"] + is expected to be a kind of HTTP::Headers + overwrites existing values + leaves headers not presented in other as is + appends other headers, not presented in base + #to_a + returns Array of key/value pairs with normalized keys + returns an Array + #set + sets header value + normalizes header name + fails with invalid header name + fails with empty header name + allows set multiple values + overwrites previous value + #keys + returns uniq keys only + normalizes keys + #to_h + returns a Hash + returns Hash with normalized keys + for a header with single value + provides a value as is + for a header with multiple values + provides an array of values + #include? + normalizes given header name + tells whenever given headers is set or not + #inspect + is expected to eq "#[\"hoo=ray\", \"woo=hoo\"]}>" + #[]= + sets header value + allows set multiple values + normalizes header name + overwrites previous value + #== + compares header keys and values + sensitive to headers order + allows comparison with Array of key/value pairs + sensitive to header values order + #hash + equals if two headers equals + #add + normalizes header name + allows append multiple values + sets header value + fails with invalid header name + fails with empty header name + appends new value if header exists + #delete + fails with invalid header name + normalizes header name + removes given header + fails with empty header name + +HTTP::Request + includes HTTP::Headers::Mixin + provides a #scheme accessor + provides a #verb accessor +/build/ruby-http-4.4.1/lib/http/request.rb:91: warning: instance variable @scheme not initialized + requires URI to have scheme part + sets given headers + User-Agent header + was not given + is expected to eq "http.rb/4.4.1" + was explicitly given + is expected to eq "MrCrawly/123" + #redirect + presets new Host header + verb + is expected to eq :post + with new verb given + verb + is expected to equal :get + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + with relative URL that misses leading slash given + keeps Host header + verb + is expected to eq :post + with original URI having non-standard port + uri + is expected to eq # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + uri + is expected to eq # + body + is expected to eq # + with URL with non-standard port given + presets new Host header + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + verb + is expected to eq :post + uri + is expected to eq # + body + is expected to eq # + with schema-less absolute URL given + presets new Host header + body + is expected to eq # + verb + is expected to eq :post + uri + is expected to eq # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + uri + is expected to eq # + body + is expected to eq # + with relative URL given + keeps Host header + verb + is expected to eq :post + uri + is expected to eq # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + with original URI having non-standard port + uri + is expected to eq # + body + is expected to eq # + #inspect + is expected to eq "#" + Host header + was explicitly given + is expected to eq "github.com" + was not given + is expected to eq "example.com" + and request URI has non-standard port + is expected to eq "example.com:3000" + #headline + is expected to eq "GET /foo?bar=baz HTTP/1.1" + when URI contains fragment + omits fragment part + when URI contains encoded query + does not unencodes query part + with proxy + is expected to eq "GET http://example.com/foo?bar=baz HTTP/1.1" + and HTTPS uri + is expected to eq "GET /foo?bar=baz HTTP/1.1" + when URI contains non-ASCII path + encodes non-ASCII path part + +HTTP::Options new + supports a Options instance + with a Hash + coerces :proxy correctly + coerces :form correctly + coerces :response correctly + coerces :headers correctly HTTP::Response::Status + .coerce + fails if coercion failed + is aliased as `.[]` + with String + coerces reasons + fails when reason is unknown + with Symbol + fails when symbolized reason is unknown + coerces symbolized reasons + with Numeric + coerces as Fixnum code #payload_too_large? - when code is 413 - is expected to equal true when code is lower than 413 is expected to equal false when code is higher than 413 is expected to equal false - #switching_protocols? - when code is higher than 101 + when code is 413 + is expected to equal true + #ok? + when code is lower than 200 is expected to equal false - when code is lower than 101 + when code is higher than 200 is expected to equal false - when code is 101 + when code is 200 is expected to equal true - #code - is expected to be a kind of Integer - is expected to eq 200 - #processing? - when code is higher than 102 - is expected to equal false - when code is 102 + #not_found? + when code is 404 is expected to equal true - when code is lower than 102 + when code is lower than 404 is expected to equal false - #temporary_redirect? - when code is lower than 307 + when code is higher than 404 is expected to equal false - when code is 307 + #proxy_authentication_required? + when code is 407 is expected to equal true - when code is higher than 307 + when code is higher than 407 is expected to equal false - #reset_content? - when code is lower than 205 + when code is lower than 407 is expected to equal false - when code is higher than 205 + #uri_too_long? + when code is higher than 414 is expected to equal false - when code is 205 + when code is 414 is expected to equal true - .new -/build/ruby-http-4.4.1/lib/http/response/status.rb:148: warning: instance variable @code not initialized - fails if given value does not respond to #to_i - accepts any object that responds to #to_i - #payment_required? - when code is lower than 402 + when code is lower than 414 is expected to equal false - when code is 402 - is expected to equal true - when code is higher than 402 + #moved_permanently? + when code is higher than 301 is expected to equal false - #loop_detected? - when code is higher than 508 + when code is lower than 301 is expected to equal false - when code is 508 + when code is 301 is expected to equal true - when code is lower than 508 + #see_other? + when code is lower than 303 is expected to equal false - #network_authentication_required? - when code is lower than 511 + when code is higher than 303 is expected to equal false - when code is 511 + when code is 303 is expected to equal true - when code is higher than 511 + #not_implemented? + when code is higher than 501 is expected to equal false - #request_timeout? - when code is higher than 408 + when code is lower than 501 is expected to equal false - when code is 408 + when code is 501 is expected to equal true - when code is lower than 408 - is expected to equal false - #not_modified? - when code is higher than 304 + #processing? + when code is 102 + is expected to equal true + when code is higher than 102 is expected to equal false - when code is lower than 304 + when code is lower than 102 is expected to equal false - when code is 304 - is expected to equal true - #unprocessable_entity? - when code is 422 + #code + is expected to be a kind of Integer + is expected to eq 200 + #expectation_failed? + when code is 417 is expected to equal true - when code is lower than 422 + when code is lower than 417 is expected to equal false - when code is higher than 422 + when code is higher than 417 is expected to equal false + with 3xx codes + is not #client_error? + is not #success? + is #redirect? + is not #informational? + is not #server_error? + .new +/build/ruby-http-4.4.1/lib/http/response/status.rb:148: warning: instance variable @code not initialized + fails if given value does not respond to #to_i + accepts any object that responds to #to_i #already_reported? - when code is 208 - is expected to equal true when code is lower than 208 is expected to equal false + when code is 208 + is expected to equal true when code is higher than 208 is expected to equal false - with 5xx codes - is not #informational? - is not #client_error? - is #server_error? - is not #redirect? - is not #success? - #proxy_authentication_required? - when code is higher than 407 - is expected to equal false - when code is 407 + #insufficient_storage? + when code is 507 is expected to equal true - when code is lower than 407 + when code is higher than 507 is expected to equal false - #multiple_choices? - when code is higher than 300 + when code is lower than 507 is expected to equal false - when code is 300 + #loop_detected? + when code is 508 is expected to equal true - when code is lower than 300 + when code is lower than 508 + is expected to equal false + when code is higher than 508 is expected to equal false with 4xx codes - is not #informational? is not #success? is not #redirect? - is not #server_error? + is not #informational? is #client_error? - #forbidden? - when code is higher than 403 - is expected to equal false - when code is 403 - is expected to equal true - when code is lower than 403 - is expected to equal false - #unauthorized? - when code is lower than 401 - is expected to equal false - when code is 401 - is expected to equal true - when code is higher than 401 - is expected to equal false + is not #server_error? + with 5xx codes + is not #client_error? + is not #redirect? + is not #informational? + is #server_error? + is not #success? #request_header_fields_too_large? when code is lower than 431 is expected to equal false - when code is 431 - is expected to equal true when code is higher than 431 is expected to equal false - with 3xx codes - is not #informational? - is #redirect? - is not #success? - is not #server_error? - is not #client_error? - #multi_status? - when code is 207 + when code is 431 is expected to equal true - when code is higher than 207 - is expected to equal false - when code is lower than 207 - is expected to equal false #method_not_allowed? - when code is 405 - is expected to equal true when code is lower than 405 is expected to equal false + when code is 405 + is expected to equal true when code is higher than 405 is expected to equal false - #precondition_required? - when code is higher than 428 - is expected to equal false - when code is 428 + #upgrade_required? + when code is 426 is expected to equal true - when code is lower than 428 + when code is lower than 426 is expected to equal false - #insufficient_storage? - when code is lower than 507 + when code is higher than 426 is expected to equal false - when code is 507 - is expected to equal true - when code is higher than 507 + #reset_content? + when code is lower than 205 is expected to equal false - #service_unavailable? - when code is 503 + when code is 205 is expected to equal true - when code is lower than 503 - is expected to equal false - when code is higher than 503 + when code is higher than 205 is expected to equal false #im_used? when code is higher than 226 @@ -1835,717 +1686,753 @@ is expected to equal true when code is lower than 226 is expected to equal false - #http_version_not_supported? - when code is lower than 505 - is expected to equal false - when code is 505 - is expected to equal true - when code is higher than 505 - is expected to equal false - #accepted? - when code is lower than 202 + #forbidden? + when code is lower than 403 is expected to equal false - when code is 202 + when code is 403 is expected to equal true - when code is higher than 202 - is expected to equal false - #length_required? - when code is higher than 411 + when code is higher than 403 is expected to equal false - when code is lower than 411 + #partial_content? + when code is lower than 206 is expected to equal false - when code is 411 - is expected to equal true - #unsupported_media_type? - when code is 415 + when code is 206 is expected to equal true - when code is higher than 415 - is expected to equal false - when code is lower than 415 - is expected to equal false - #gateway_timeout? - when code is lower than 504 + when code is higher than 206 is expected to equal false - when code is 504 - is expected to equal true - when code is higher than 504 + #failed_dependency? + when code is lower than 424 is expected to equal false - #see_other? - when code is 303 + when code is 424 is expected to equal true - when code is higher than 303 - is expected to equal false - when code is lower than 303 + when code is higher than 424 is expected to equal false #gone? when code is higher than 410 is expected to equal false - when code is lower than 410 - is expected to equal false when code is 410 is expected to equal true - #no_content? - when code is lower than 204 + when code is lower than 410 is expected to equal false - when code is 204 + #not_extended? + when code is 510 is expected to equal true - when code is higher than 204 + when code is higher than 510 is expected to equal false - #partial_content? - when code is 206 - is expected to equal true - when code is higher than 206 + when code is lower than 510 is expected to equal false - when code is lower than 206 + #non_authoritative_information? + when code is lower than 203 is expected to equal false - #uri_too_long? - when code is lower than 414 + when code is higher than 203 is expected to equal false - when code is 414 + when code is 203 is expected to equal true - when code is higher than 414 - is expected to equal false - #use_proxy? - when code is lower than 305 + #not_modified? + when code is higher than 304 is expected to equal false - when code is higher than 305 + when code is 304 + is expected to equal true + when code is lower than 304 is expected to equal false - when code is 305 + #bad_request? + when code is 400 is expected to equal true + when code is lower than 400 + is expected to equal false + when code is higher than 400 + is expected to equal false with 2xx codes - is #success? - is not #informational? is not #redirect? + is #success? is not #client_error? is not #server_error? - #to_sym - with well-known code: 501 - is expected to equal :not_implemented - with well-known code: 307 - is expected to equal :temporary_redirect - with well-known code: 204 - is expected to equal :no_content - with well-known code: 410 - is expected to equal :gone - with well-known code: 404 - is expected to equal :not_found - with well-known code: 426 - is expected to equal :upgrade_required - with well-known code: 417 - is expected to equal :expectation_failed - with well-known code: 451 - is expected to equal :unavailable_for_legal_reasons - with well-known code: 407 - is expected to equal :proxy_authentication_required - with well-known code: 413 - is expected to equal :payload_too_large - with well-known code: 300 - is expected to equal :multiple_choices - with well-known code: 305 - is expected to equal :use_proxy - with well-known code: 203 - is expected to equal :non_authoritative_information - with well-known code: 411 - is expected to equal :length_required - with well-known code: 403 - is expected to equal :forbidden - with unknown code - is expected to be nil - with well-known code: 102 - is expected to equal :processing - with well-known code: 304 - is expected to equal :not_modified - with well-known code: 401 - is expected to equal :unauthorized - with well-known code: 504 - is expected to equal :gateway_timeout - with well-known code: 100 - is expected to equal :continue - with well-known code: 302 - is expected to equal :found - with well-known code: 511 - is expected to equal :network_authentication_required - with well-known code: 415 - is expected to equal :unsupported_media_type - with well-known code: 429 - is expected to equal :too_many_requests - with well-known code: 208 - is expected to equal :already_reported - with well-known code: 505 - is expected to equal :http_version_not_supported - with well-known code: 503 - is expected to equal :service_unavailable - with well-known code: 502 - is expected to equal :bad_gateway - with well-known code: 303 - is expected to equal :see_other - with well-known code: 101 - is expected to equal :switching_protocols - with well-known code: 400 - is expected to equal :bad_request - with well-known code: 500 - is expected to equal :internal_server_error - with well-known code: 414 - is expected to equal :uri_too_long - with well-known code: 422 - is expected to equal :unprocessable_entity - with well-known code: 507 - is expected to equal :insufficient_storage - with well-known code: 510 - is expected to equal :not_extended - with well-known code: 408 - is expected to equal :request_timeout - with well-known code: 421 - is expected to equal :misdirected_request - with well-known code: 506 - is expected to equal :variant_also_negotiates - with well-known code: 207 - is expected to equal :multi_status - with well-known code: 206 - is expected to equal :partial_content - with well-known code: 508 - is expected to equal :loop_detected - with well-known code: 402 - is expected to equal :payment_required - with well-known code: 202 - is expected to equal :accepted - with well-known code: 205 - is expected to equal :reset_content - with well-known code: 431 - is expected to equal :request_header_fields_too_large - with well-known code: 424 - is expected to equal :failed_dependency - with well-known code: 301 - is expected to equal :moved_permanently - with well-known code: 416 - is expected to equal :range_not_satisfiable - with well-known code: 428 - is expected to equal :precondition_required - with well-known code: 409 - is expected to equal :conflict - with well-known code: 226 - is expected to equal :im_used - with well-known code: 201 - is expected to equal :created - with well-known code: 200 - is expected to equal :ok - with well-known code: 406 - is expected to equal :not_acceptable - with well-known code: 412 - is expected to equal :precondition_failed - with well-known code: 405 - is expected to equal :method_not_allowed - with well-known code: 423 - is expected to equal :locked - with well-known code: 308 - is expected to equal :permanent_redirect - ::SYMBOLS - [400] - is expected to equal :bad_request - [200] - is expected to equal :ok - #ok? - when code is lower than 200 - is expected to equal false - when code is higher than 200 - is expected to equal false - when code is 200 - is expected to equal true - #failed_dependency? - when code is 424 - is expected to equal true - when code is higher than 424 - is expected to equal false - when code is lower than 424 - is expected to equal false - #not_found? - when code is lower than 404 - is expected to equal false - when code is higher than 404 - is expected to equal false - when code is 404 - is expected to equal true - #found? - when code is lower than 302 - is expected to equal false - when code is 302 - is expected to equal true - when code is higher than 302 - is expected to equal false - #conflict? - when code is higher than 409 - is expected to equal false - when code is lower than 409 - is expected to equal false - when code is 409 - is expected to equal true - #permanent_redirect? - when code is lower than 308 - is expected to equal false - when code is higher than 308 - is expected to equal false - when code is 308 - is expected to equal true - #non_authoritative_information? - when code is lower than 203 - is expected to equal false - when code is higher than 203 + is not #informational? + #network_authentication_required? + when code is lower than 511 is expected to equal false - when code is 203 + when code is 511 is expected to equal true - #inspect - returns quoted code and reason phrase - #too_many_requests? - when code is higher than 429 - is expected to equal false - when code is lower than 429 + when code is higher than 511 is expected to equal false - when code is 429 - is expected to equal true - #bad_gateway? - when code is higher than 502 + #accepted? + when code is higher than 202 is expected to equal false - when code is 502 + when code is 202 is expected to equal true - when code is lower than 502 + when code is lower than 202 is expected to equal false #reason - with well-known code: 510 - is expected to eq "Not Extended" + with well-known code: 307 is expected to be frozen - with well-known code: 304 - is expected to eq "Not Modified" + is expected to eq "Temporary Redirect" + with well-known code: 417 is expected to be frozen - with well-known code: 428 - is expected to eq "Precondition Required" + is expected to eq "Expectation Failed" + with well-known code: 415 is expected to be frozen - with well-known code: 508 + is expected to eq "Unsupported Media Type" + with well-known code: 301 + is expected to eq "Moved Permanently" is expected to be frozen - is expected to eq "Loop Detected" - with well-known code: 205 + with well-known code: 429 + is expected to eq "Too Many Requests" is expected to be frozen - is expected to eq "Reset Content" - with well-known code: 207 + with well-known code: 424 + is expected to eq "Failed Dependency" is expected to be frozen - is expected to eq "Multi-Status" - with well-known code: 407 - is expected to eq "Proxy Authentication Required" + with well-known code: 200 is expected to be frozen - with well-known code: 203 + is expected to eq "OK" + with well-known code: 501 + is expected to eq "Not Implemented" is expected to be frozen - is expected to eq "Non-Authoritative Information" - with well-known code: 431 + with well-known code: 423 is expected to be frozen - is expected to eq "Request Header Fields Too Large" - with well-known code: 451 - is expected to eq "Unavailable For Legal Reasons" + is expected to eq "Locked" + with well-known code: 408 is expected to be frozen - with well-known code: 417 - is expected to eq "Expectation Failed" + is expected to eq "Request Timeout" + with well-known code: 308 is expected to be frozen - with well-known code: 302 + is expected to eq "Permanent Redirect" + with well-known code: 403 is expected to be frozen - is expected to eq "Found" - with well-known code: 400 - is expected to eq "Bad Request" + is expected to eq "Forbidden" + with well-known code: 411 + is expected to eq "Length Required" is expected to be frozen - with well-known code: 204 - is expected to eq "No Content" + with well-known code: 401 is expected to be frozen - with well-known code: 208 - is expected to eq "Already Reported" + is expected to eq "Unauthorized" + with well-known code: 503 + is expected to eq "Service Unavailable" is expected to be frozen - with well-known code: 201 + with well-known code: 505 + is expected to eq "HTTP Version Not Supported" is expected to be frozen - is expected to eq "Created" - with well-known code: 409 + with well-known code: 406 + is expected to eq "Not Acceptable" is expected to be frozen - is expected to eq "Conflict" - with unknown code - is expected to be nil - with well-known code: 226 + with well-known code: 507 + is expected to eq "Insufficient Storage" is expected to be frozen - is expected to eq "IM Used" - with well-known code: 416 + with well-known code: 504 is expected to be frozen - is expected to eq "Range Not Satisfiable" - with well-known code: 422 + is expected to eq "Gateway Timeout" + with well-known code: 410 + is expected to eq "Gone" is expected to be frozen - is expected to eq "Unprocessable Entity" - with well-known code: 503 + with well-known code: 400 is expected to be frozen - is expected to eq "Service Unavailable" - with well-known code: 305 + is expected to eq "Bad Request" + with well-known code: 506 + is expected to eq "Variant Also Negotiates" is expected to be frozen - is expected to eq "Use Proxy" - with well-known code: 424 + with well-known code: 502 + is expected to eq "Bad Gateway" is expected to be frozen - is expected to eq "Failed Dependency" - with well-known code: 404 - is expected to eq "Not Found" + with well-known code: 102 is expected to be frozen - with well-known code: 408 - is expected to eq "Request Timeout" + is expected to eq "Processing" + with well-known code: 510 + is expected to eq "Not Extended" is expected to be frozen - with well-known code: 410 - is expected to eq "Gone" + with well-known code: 304 + is expected to eq "Not Modified" is expected to be frozen - with well-known code: 102 - is expected to eq "Processing" + with well-known code: 409 is expected to be frozen - with well-known code: 411 - is expected to eq "Length Required" + is expected to eq "Conflict" + with well-known code: 303 + is expected to eq "See Other" + is expected to be frozen + with well-known code: 305 is expected to be frozen + is expected to eq "Use Proxy" with well-known code: 421 is expected to eq "Misdirected Request" is expected to be frozen - with well-known code: 301 - is expected to eq "Moved Permanently" - is expected to be frozen - with well-known code: 405 + with well-known code: 500 + is expected to eq "Internal Server Error" is expected to be frozen - is expected to eq "Method Not Allowed" - with well-known code: 403 + with well-known code: 431 is expected to be frozen - is expected to eq "Forbidden" - with well-known code: 202 + is expected to eq "Request Header Fields Too Large" + with well-known code: 413 is expected to be frozen - is expected to eq "Accepted" - with well-known code: 414 - is expected to eq "URI Too Long" + is expected to eq "Payload Too Large" + with unknown code + is expected to be nil + with well-known code: 226 is expected to be frozen - with well-known code: 307 + is expected to eq "IM Used" + with well-known code: 508 is expected to be frozen - is expected to eq "Temporary Redirect" - with well-known code: 415 + is expected to eq "Loop Detected" + with well-known code: 451 is expected to be frozen - is expected to eq "Unsupported Media Type" - with well-known code: 402 - is expected to eq "Payment Required" + is expected to eq "Unavailable For Legal Reasons" + with well-known code: 206 is expected to be frozen - with well-known code: 100 + is expected to eq "Partial Content" + with well-known code: 511 + is expected to eq "Network Authentication Required" is expected to be frozen - is expected to eq "Continue" - with well-known code: 300 - is expected to eq "Multiple Choices" + with well-known code: 405 + is expected to eq "Method Not Allowed" is expected to be frozen - with well-known code: 101 + with well-known code: 416 + is expected to eq "Range Not Satisfiable" is expected to be frozen - is expected to eq "Switching Protocols" - with well-known code: 423 + with well-known code: 201 is expected to be frozen - is expected to eq "Locked" - with well-known code: 501 - is expected to eq "Not Implemented" + is expected to eq "Created" + with well-known code: 203 + is expected to eq "Non-Authoritative Information" is expected to be frozen - with well-known code: 429 + with well-known code: 205 + is expected to eq "Reset Content" is expected to be frozen - is expected to eq "Too Many Requests" - with well-known code: 406 + with well-known code: 202 is expected to be frozen - is expected to eq "Not Acceptable" - with well-known code: 502 + is expected to eq "Accepted" + with well-known code: 204 is expected to be frozen - is expected to eq "Bad Gateway" - with well-known code: 506 - is expected to eq "Variant Also Negotiates" + is expected to eq "No Content" + with well-known code: 402 is expected to be frozen - with well-known code: 200 + is expected to eq "Payment Required" + with well-known code: 426 + is expected to eq "Upgrade Required" is expected to be frozen - is expected to eq "OK" - with well-known code: 500 + with well-known code: 208 is expected to be frozen - is expected to eq "Internal Server Error" - with well-known code: 413 - is expected to eq "Payload Too Large" + is expected to eq "Already Reported" + with well-known code: 101 is expected to be frozen - with well-known code: 412 - is expected to eq "Precondition Failed" + is expected to eq "Switching Protocols" + with well-known code: 207 is expected to be frozen - with well-known code: 308 + is expected to eq "Multi-Status" + with well-known code: 302 + is expected to eq "Found" is expected to be frozen - is expected to eq "Permanent Redirect" - with well-known code: 505 + with well-known code: 300 is expected to be frozen - is expected to eq "HTTP Version Not Supported" - with well-known code: 507 - is expected to eq "Insufficient Storage" + is expected to eq "Multiple Choices" + with well-known code: 428 is expected to be frozen - with well-known code: 504 - is expected to eq "Gateway Timeout" + is expected to eq "Precondition Required" + with well-known code: 414 + is expected to eq "URI Too Long" is expected to be frozen - with well-known code: 401 + with well-known code: 412 is expected to be frozen - is expected to eq "Unauthorized" - with well-known code: 206 - is expected to eq "Partial Content" + is expected to eq "Precondition Failed" + with well-known code: 404 is expected to be frozen - with well-known code: 303 + is expected to eq "Not Found" + with well-known code: 422 + is expected to eq "Unprocessable Entity" is expected to be frozen - is expected to eq "See Other" - with well-known code: 426 - is expected to eq "Upgrade Required" + with well-known code: 407 is expected to be frozen - with well-known code: 511 - is expected to eq "Network Authentication Required" + is expected to eq "Proxy Authentication Required" + with well-known code: 100 + is expected to eq "Continue" is expected to be frozen - #not_acceptable? - when code is 406 + #switching_protocols? + when code is 101 is expected to equal true + when code is higher than 101 + is expected to equal false + when code is lower than 101 + is expected to equal false + #not_acceptable? when code is lower than 406 is expected to equal false when code is higher than 406 is expected to equal false - #moved_permanently? - when code is higher than 301 + when code is 406 + is expected to equal true + #permanent_redirect? + when code is lower than 308 is expected to equal false - when code is lower than 301 + when code is higher than 308 is expected to equal false - when code is 301 + when code is 308 is expected to equal true - #range_not_satisfiable? - when code is 416 + #precondition_required? + when code is higher than 428 + is expected to equal false + when code is lower than 428 + is expected to equal false + when code is 428 is expected to equal true - when code is lower than 416 + #found? + when code is 302 + is expected to equal true + when code is lower than 302 is expected to equal false - when code is higher than 416 + when code is higher than 302 is expected to equal false - #created? - when code is higher than 201 + #precondition_failed? + when code is lower than 412 is expected to equal false - when code is 201 + when code is 412 is expected to equal true - when code is lower than 201 + when code is higher than 412 is expected to equal false - #unavailable_for_legal_reasons? - when code is 451 + ::SYMBOLS + [200] + is expected to equal :ok + [400] + is expected to equal :bad_request + #multiple_choices? + when code is lower than 300 + is expected to equal false + when code is 300 is expected to equal true - when code is lower than 451 + when code is higher than 300 is expected to equal false - when code is higher than 451 + #misdirected_request? + when code is lower than 421 + is expected to equal false + when code is 421 + is expected to equal true + when code is higher than 421 + is expected to equal false + #service_unavailable? + when code is 503 + is expected to equal true + when code is higher than 503 + is expected to equal false + when code is lower than 503 + is expected to equal false + #too_many_requests? + when code is 429 + is expected to equal true + when code is higher than 429 + is expected to equal false + when code is lower than 429 is expected to equal false #internal_server_error? + when code is lower than 500 + is expected to equal false when code is higher than 500 is expected to equal false when code is 500 is expected to equal true - when code is lower than 500 + #multi_status? + when code is higher than 207 is expected to equal false - #not_implemented? - when code is 501 + when code is lower than 207 + is expected to equal false + when code is 207 is expected to equal true - when code is higher than 501 + #no_content? + when code is higher than 204 is expected to equal false - when code is lower than 501 + when code is 204 + is expected to equal true + when code is lower than 204 + is expected to equal false + #http_version_not_supported? + when code is higher than 505 + is expected to equal false + when code is 505 + is expected to equal true + when code is lower than 505 + is expected to equal false + #temporary_redirect? + when code is lower than 307 + is expected to equal false + when code is higher than 307 + is expected to equal false + when code is 307 + is expected to equal true + #payment_required? + when code is lower than 402 + is expected to equal false + when code is 402 + is expected to equal true + when code is higher than 402 is expected to equal false #locked? + when code is 423 + is expected to equal true + when code is lower than 423 + is expected to equal false when code is higher than 423 is expected to equal false - when code is lower than 423 + #unauthorized? + when code is higher than 401 is expected to equal false - when code is 423 + when code is 401 is expected to equal true - #expectation_failed? - when code is lower than 417 + when code is lower than 401 is expected to equal false - when code is 417 + #unavailable_for_legal_reasons? + when code is higher than 451 + is expected to equal false + when code is 451 is expected to equal true - when code is higher than 417 + when code is lower than 451 is expected to equal false - #not_extended? - when code is lower than 510 + #inspect + returns quoted code and reason phrase + #range_not_satisfiable? + when code is lower than 416 is expected to equal false - when code is 510 + when code is higher than 416 + is expected to equal false + when code is 416 is expected to equal true - when code is higher than 510 + #bad_gateway? + when code is lower than 502 is expected to equal false - #misdirected_request? - when code is higher than 421 + when code is higher than 502 is expected to equal false - when code is lower than 421 + when code is 502 + is expected to equal true + #use_proxy? + when code is lower than 305 is expected to equal false - when code is 421 + when code is higher than 305 + is expected to equal false + when code is 305 + is expected to equal true + #request_timeout? + when code is 408 is expected to equal true + when code is lower than 408 + is expected to equal false + when code is higher than 408 + is expected to equal false with 1xx codes - is not #client_error? - is not #server_error? - is not #success? - is #informational? is not #redirect? - #upgrade_required? - when code is 426 + is #informational? + is not #success? + is not #server_error? + is not #client_error? + #to_sym + with well-known code: 205 + is expected to equal :reset_content + with well-known code: 508 + is expected to equal :loop_detected + with well-known code: 506 + is expected to equal :variant_also_negotiates + with well-known code: 406 + is expected to equal :not_acceptable + with well-known code: 102 + is expected to equal :processing + with well-known code: 404 + is expected to equal :not_found + with well-known code: 407 + is expected to equal :proxy_authentication_required + with well-known code: 431 + is expected to equal :request_header_fields_too_large + with well-known code: 202 + is expected to equal :accepted + with well-known code: 502 + is expected to equal :bad_gateway + with well-known code: 400 + is expected to equal :bad_request + with well-known code: 408 + is expected to equal :request_timeout + with well-known code: 405 + is expected to equal :method_not_allowed + with well-known code: 409 + is expected to equal :conflict + with well-known code: 204 + is expected to equal :no_content + with well-known code: 403 + is expected to equal :forbidden + with well-known code: 416 + is expected to equal :range_not_satisfiable + with well-known code: 501 + is expected to equal :not_implemented + with well-known code: 415 + is expected to equal :unsupported_media_type + with well-known code: 410 + is expected to equal :gone + with well-known code: 429 + is expected to equal :too_many_requests + with well-known code: 504 + is expected to equal :gateway_timeout + with well-known code: 500 + is expected to equal :internal_server_error + with well-known code: 503 + is expected to equal :service_unavailable + with well-known code: 428 + is expected to equal :precondition_required + with well-known code: 426 + is expected to equal :upgrade_required + with well-known code: 303 + is expected to equal :see_other + with well-known code: 422 + is expected to equal :unprocessable_entity + with well-known code: 414 + is expected to equal :uri_too_long + with well-known code: 451 + is expected to equal :unavailable_for_legal_reasons + with well-known code: 201 + is expected to equal :created + with well-known code: 401 + is expected to equal :unauthorized + with well-known code: 505 + is expected to equal :http_version_not_supported + with well-known code: 226 + is expected to equal :im_used + with well-known code: 423 + is expected to equal :locked + with well-known code: 100 + is expected to equal :continue + with well-known code: 307 + is expected to equal :temporary_redirect + with well-known code: 412 + is expected to equal :precondition_failed + with well-known code: 507 + is expected to equal :insufficient_storage + with well-known code: 413 + is expected to equal :payload_too_large + with well-known code: 302 + is expected to equal :found + with well-known code: 510 + is expected to equal :not_extended + with well-known code: 301 + is expected to equal :moved_permanently + with well-known code: 300 + is expected to equal :multiple_choices + with unknown code + is expected to be nil + with well-known code: 304 + is expected to equal :not_modified + with well-known code: 511 + is expected to equal :network_authentication_required + with well-known code: 417 + is expected to equal :expectation_failed + with well-known code: 402 + is expected to equal :payment_required + with well-known code: 305 + is expected to equal :use_proxy + with well-known code: 208 + is expected to equal :already_reported + with well-known code: 207 + is expected to equal :multi_status + with well-known code: 411 + is expected to equal :length_required + with well-known code: 421 + is expected to equal :misdirected_request + with well-known code: 101 + is expected to equal :switching_protocols + with well-known code: 424 + is expected to equal :failed_dependency + with well-known code: 308 + is expected to equal :permanent_redirect + with well-known code: 200 + is expected to equal :ok + with well-known code: 203 + is expected to equal :non_authoritative_information + with well-known code: 206 + is expected to equal :partial_content + #created? + when code is higher than 201 + is expected to equal false + when code is 201 is expected to equal true - when code is higher than 426 + when code is lower than 201 is expected to equal false - when code is lower than 426 + #unsupported_media_type? + when code is higher than 415 is expected to equal false - #continue? - when code is 100 + when code is lower than 415 + is expected to equal false + when code is 415 + is expected to equal true + #unprocessable_entity? + when code is lower than 422 + is expected to equal false + when code is higher than 422 + is expected to equal false + when code is 422 is expected to equal true + #continue? when code is lower than 100 is expected to equal false + when code is 100 + is expected to equal true when code is higher than 100 is expected to equal false - #bad_request? - when code is 400 + #gateway_timeout? + when code is 504 is expected to equal true - when code is lower than 400 + when code is higher than 504 is expected to equal false - when code is higher than 400 + when code is lower than 504 is expected to equal false #variant_also_negotiates? + when code is 506 + is expected to equal true + when code is lower than 506 + is expected to equal false when code is higher than 506 is expected to equal false - when code is lower than 506 + #conflict? + when code is higher than 409 is expected to equal false - when code is 506 - is expected to equal true - #precondition_failed? - when code is higher than 412 + when code is lower than 409 is expected to equal false - when code is lower than 412 + when code is 409 + is expected to equal true + #length_required? + when code is higher than 411 is expected to equal false - when code is 412 + when code is 411 is expected to equal true - .coerce - is aliased as `.[]` - fails if coercion failed - with Numeric - coerces as Fixnum code - with Symbol - fails when symbolized reason is unknown - coerces symbolized reasons - with String - coerces reasons - fails when reason is unknown + when code is lower than 411 + is expected to equal false -HTTP::Request - provides a #verb accessor -/build/ruby-http-4.4.1/lib/http/request.rb:91: warning: instance variable @scheme not initialized - requires URI to have scheme part - provides a #scheme accessor - includes HTTP::Headers::Mixin - sets given headers - #redirect - presets new Host header - with schema-less absolute URL given - presets new Host header - uri - is expected to eq # - body - is expected to eq # - verb - is expected to eq :post - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - with relative URL given - keeps Host header - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - body - is expected to eq # - verb - is expected to eq :post - uri - is expected to eq # - with original URI having non-standard port - uri - is expected to eq # - with URL with non-standard port given - presets new Host header - uri - is expected to eq # - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - body - is expected to eq # - verb - is expected to eq :post - uri - is expected to eq # - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - with relative URL that misses leading slash given - keeps Host header - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - with original URI having non-standard port - uri - is expected to eq # - uri - is expected to eq # - body - is expected to eq # - verb - is expected to eq :post - verb - is expected to eq :post - body - is expected to eq # - with new verb given - verb - is expected to equal :get - #inspect - is expected to eq "#" - Host header - was not given - is expected to eq "example.com" - and request URI has non-standard port - is expected to eq "example.com:3000" - was explicitly given - is expected to eq "github.com" - User-Agent header - was explicitly given - is expected to eq "MrCrawly/123" - was not given - is expected to eq "http.rb/4.4.1" - #headline - is expected to eq "GET /foo?bar=baz HTTP/1.1" - when URI contains non-ASCII path - encodes non-ASCII path part - when URI contains fragment - omits fragment part - with proxy - is expected to eq "GET http://example.com/foo?bar=baz HTTP/1.1" - and HTTPS uri - is expected to eq "GET /foo?bar=baz HTTP/1.1" - when URI contains encoded query - does not unencodes query part +HTTP::Features::AutoDeflate + accepts deflate method + raises error for wrong type + accepts string as method + accepts gzip method + uses gzip by default + #deflated_body + when method is gzip + returns object which yields gzipped content of the given body + caches compressed content when size is called + when method is deflate + returns object which yields deflated content of the given body + caches compressed content when size is called -HTTP::Request::Writer - #stream - when body is nonempty - writes it to the socket and sets Content-Length - when server won't accept any more data - aborts silently - when multiple headers are set - separates headers with carriage return and line feed - when body is empty - doesn't write anything to the socket and sets Content-Length - when Content-Length header is set - keeps the given value - when writing to socket raises an exception - raises a ConnectionError - when Transfer-Encoding is chunked - writes encoded content and omits Content-Length +HTTP::Request::Body + #source + returns the original object + #== + when sources are equivalent + returns true + when objects are not of the same class + returns false + when sources are not equivalent + returns false + #each + when body is nil + yields nothing + when body is an Enumerable IO + yields chunks of content + allows to enumerate multiple times + when body is a non-Enumerable IO + yields chunks of content + when body is an Enumerable + yields elements + when body is a string + yields the string + when body is a pipe + yields chunks of content + #initialize + when body is an IO + does not raise an error + when body is of unrecognized type + raises an error + when body is an Enumerable + does not raise an error + when body is nil + does not raise an error + when body is a string + does not raise an error + #size + when body is a string + returns string bytesize + when body is an Enumerable + raises a RequestError + when body is an IO without size + raises a RequestError + when body is an IO with size + returns IO size + when body is nil + returns zero + +HTTP::Features::Instrumentation + logging the response + should log the response + logging the request + should log the request + +HTTP::Options body + may be specified with with_body + defaults to nil + +HTTP::Options headers + may be specified with with_headers + accepts any object that respond to :to_hash + defaults to be empty + +HTTP::ContentType + .parse + with text/plain; charset="utf-8" + charset + is expected to eq "utf-8" + mime_type + is expected to eq "text/plain" + with text/plain; charset=utf-8 + mime_type + is expected to eq "text/plain" + charset + is expected to eq "utf-8" + with text/plain; foo=bar; charset=utf-8 + charset + is expected to eq "utf-8" + mime_type + is expected to eq "text/plain" + with text/plain + mime_type + is expected to eq "text/plain" + charset + is expected to be nil + with text/plain;charset=utf-8;foo=bar + mime_type + is expected to eq "text/plain" + charset + is expected to eq "utf-8" + with text/plain; charSET=utf-8 + mime_type + is expected to eq "text/plain" + charset + is expected to eq "utf-8" + with tEXT/plaIN + mime_type + is expected to eq "text/plain" + charset + is expected to be nil + +HTTP::Options features + defaults to be empty + raises error for not supported features + accepts feature name with its options in array + accepts plain symbols in array + +HTTP::Options json + defaults to nil + may be specified with with_json data HTTP::Response includes HTTP::Headers::Mixin - #parse - with explicitly given mime type - supports MIME type aliases - ignores mime_type of response - with unknown content type - raises HTTP::Error - with known content type - returns parsed body - charset - with Content-Type: text/html + #content_length + with invalid Content-Length is expected to be nil - with Content-Type: text/html; charset=utf-8 - is expected to eq "utf-8" - without Content-Type header + without Content-Length header is expected to be nil + with Content-Length: 5 + is expected to eq 5 + #chunked? + is expected not to be chunked + when encoding is set to chunked + is expected to be chunked + to_a + returns a Rack-like array mime_type with Content-Type: text/html is expected to eq "text/html" @@ -2553,345 +2440,529 @@ is expected to eq "text/html" without Content-Type header is expected to be nil - #content_length - with Content-Length: 5 - is expected to eq 5 - without Content-Length header + charset + with Content-Type: text/html is expected to be nil - with invalid Content-Length + without Content-Type header is expected to be nil - #connection - returns the connection object used to instantiate the response + with Content-Type: text/html; charset=utf-8 + is expected to eq "utf-8" + #cookies + contains cookies limited to domain of request uri + does not contains cookies limited to non-requeted uri + is expected to be a kind of HTTP::CookieJar + contains cookies without domain restriction #flush flushes body returns response self-reference - to_a - returns a Rack-like array + #parse + with known content type + returns parsed body + with explicitly given mime type + supports MIME type aliases + ignores mime_type of response + with unknown content type + raises HTTP::Error + #connection + returns the connection object used to instantiate the response #inspect is expected to eq "#\"text/plain\"}>" - #chunked? - is expected not to be chunked - when encoding is set to chunked - is expected to be chunked - #cookies - contains cookies without domain restriction - is expected to be a kind of HTTP::CookieJar - does not contains cookies limited to non-requeted uri - contains cookies limited to domain of request uri -HTTP::Headers - is Enumerable - #merge! - appends other headers, not presented in base - overwrites existing values - leaves headers not presented in other as is - #get - returns array of associated values - fails with invalid header name - fails with empty header name - normalizes header name - when header does not exists - returns empty array - #include? - normalizes given header name - tells whenever given headers is set or not - #set - allows set multiple values - fails with empty header name - fails with invalid header name - overwrites previous value - normalizes header name - sets header value - #to_a - returns an Array - returns Array of key/value pairs with normalized keys - #each - yields each key/value pair separatedly - returns Enumerator if no block given - returns self instance if block given - yields headers in the same order they were added - #merge - overwrites existing values - leaves headers not presented in other as is - appends other headers, not presented in base - is expected not to equal ["Host", "example.com"] and ["Accept", "application/json"] - does not affects original headers - is expected to be a kind of HTTP::Headers - .coerce - is aliased as .[] - accepts any object that respond to #to_a - accepts any object that respond to #to_h - accepts any object that respond to #to_hash - fails if given object cannot be coerced - with duplicate header keys (mixed case) - adds all headers - #inspect - is expected to eq "#[\"hoo=ray\", \"woo=hoo\"]}>" - #to_h - returns a Hash - returns Hash with normalized keys - for a header with multiple values - provides an array of values - for a header with single value - provides a value as is - #keys - normalizes keys - returns uniq keys only - #[] - when header has a single value - returns it returns a single value - normalizes header name - when header does not exists - returns nil - when header has a multiple values - returns array of associated values - normalizes header name - #add - appends new value if header exists - allows append multiple values - normalizes header name - sets header value - fails with invalid header name - fails with empty header name - #[]= - allows set multiple values - sets header value - overwrites previous value - normalizes header name - #hash - equals if two headers equals - #delete - fails with empty header name - fails with invalid header name - normalizes header name - removes given header - .empty? - when header exists - is expected to equal false - when last header was removed - is expected to equal true - initially +HTTP::Client + following redirects + fails upon endless redirects + returns response of new location + prepends previous request uri scheme and host if needed + fails if max amount of hops reached + with non-ASCII URLs + works like a charm in real world (PENDING: Temporarily skipped with xit) + theoretically works like a charm (PENDING: Temporarily skipped with xit) + #request + with explicitly given `Host` header + keeps `Host` header as is (PENDING: Temporarily skipped with xit) + when :auto_deflate was specified + deletes Content-Length header + sets Content-Encoding header + and there is no body + doesn't set Content-Encoding header + with non-ASCII URLs + works like a charm in real world (PENDING: Temporarily skipped with xit) + theoretically works like a charm (PENDING: Temporarily skipped with xit) + parsing params + properly encodes colons + does not modifies query part if no params were given + does not convert newlines into \r\n before encoding string values + merges duplicate values + combines GET params from the URI with the passed in params + accepts params within the provided URL + does not corrupts index-less arrays + connection reuse + when disabled + opens new sockets + when enabled + re-uses the socket + with a change in host + errors + on a mixed state + re-opens the connection + without a host + infers host from persistent config + when trying to read a stale body + errors + when reading a cached body + succeeds + with a socket issue + transparently reopens + working with SSL + just works (PENDING: Temporarily skipped with xdescribe) + fails with OpenSSL::SSL::SSLError if host mismatch (PENDING: Temporarily skipped with xdescribe) + without timeouts + works (PENDING: Temporarily skipped with xdescribe) + with a global timeout + errors if connecting takes too long (PENDING: Temporarily skipped with xdescribe) + errors if reading takes too long (PENDING: Temporarily skipped with xdescribe) + it resets state when reusing connections + does not timeout (PENDING: Temporarily skipped with xdescribe) + with SSL options instead of a context + just works (PENDING: Temporarily skipped with xdescribe) + connection reuse + when enabled + re-uses the socket (PENDING: Temporarily skipped with xdescribe) + without a host + infers host from persistent config (PENDING: Temporarily skipped with xdescribe) + when trying to read a stale body + errors (PENDING: Temporarily skipped with xdescribe) + when reading a cached body + succeeds (PENDING: Temporarily skipped with xdescribe) + with a socket issue + transparently reopens (PENDING: Temporarily skipped with xdescribe) + with a change in host + errors (PENDING: Temporarily skipped with xdescribe) + on a mixed state + re-opens the connection (PENDING: Temporarily skipped with xdescribe) + when disabled + opens new sockets (PENDING: Temporarily skipped with xdescribe) + with a per operation timeout + works (PENDING: Temporarily skipped with xdescribe) + connection + of 1 + does not time out (PENDING: Temporarily skipped with xdescribe) + read + of 0 + times out (PENDING: Temporarily skipped with xit) + of 2.5 + does not time out (PENDING: Temporarily skipped with xdescribe) + passing multipart form data + creates url encoded form data object + creates multipart form data object + when passing an HTTP::FormData object directly + creates url encoded form data object + with a per operation timeout + works + read + of 2.5 + does not time out + of 0 + times out (PENDING: Temporarily skipped with xit) + connection + of 1 + does not time out + passing json + encodes given object + without timeouts + works + #perform + calls finish_response once body was fully flushed + when uses chunked transfer encoding + properly reads body + with broken body (too early closed connection) + raises HTTP::ConnectionError + when server fully flushes response in one chunk + properly reads body + with HEAD request + finishes response after headers were received + does not iterates through body + with a global timeout + errors if reading takes too long + errors if connecting takes too long + it resets state when reusing connections + does not timeout + +HTTP::Redirector + #max_hops + by default + is expected to eq 5 + #perform + concatenates multiple Location headers + fails with EndlessRedirectError if endless loop detected + returns first non-redirect response + fails with StateError if there were no Location header + fails with TooManyRedirectsError if max hops reached + following 308 redirect + follows with original request's verb + following 302 redirect + with strict mode + raises StateError if original request was PUT + raises StateError if original request was DELETE + raises StateError if original request was POST + it follows with original verb if it's safe + with non-strict mode + it follows with GET if original request was DELETE + it follows with GET if original request was POST + it follows with GET if original request was PUT + it follows with original verb if it's safe + following 307 redirect + follows with original request's verb + following 303 redirect + follows with GET if original request was neither GET nor HEAD + follows with GET if original request was GET + follows with HEAD if original request was HEAD + following 300 redirect + with non-strict mode + it follows with GET if original request was PUT + it follows with GET if original request was DELETE + it follows with original verb if it's safe + it follows with GET if original request was POST + with strict mode + raises StateError if original request was POST + it follows with original verb if it's safe + raises StateError if original request was PUT + raises StateError if original request was DELETE + following 301 redirect + with strict mode + raises StateError if original request was PUT + it follows with original verb if it's safe + raises StateError if original request was POST + raises StateError if original request was DELETE + with non-strict mode + it follows with original verb if it's safe + it follows with GET if original request was PUT + it follows with GET if original request was POST + it follows with GET if original request was DELETE + #strict + by default is expected to equal true - #dup - is expected not to equal ["Content-Type", "application/json"] - is expected to be a kind of HTTP::Headers - has headers copied - modifying a copy - does not affects original headers - modifies dupped copy - #== - compares header keys and values - allows comparison with Array of key/value pairs - sensitive to headers order - sensitive to header values order -HTTP::Options - coerces to a Hash - has reader methods for attributes +HTTP::Features::Logging + logging the request + should log the request + logging the response + should log the response + +HTTP +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized +/usr/lib/ruby/vendor_ruby/certificate_authority/extensions.rb:70: warning: instance variable @path_len not initialized + unifies socket errors into HTTP::ConnectionError + .nodelay + sets TCP_NODELAY on the underlying socket + .via + proxy with authentication + responds with the endpoint's body + proxies the request + responds with 407 when wrong credentials given + responds with 407 if no credentials given + ssl + responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) + responds with 407 if no credentials given (PENDING: Temporarily skipped with xcontext) + responds with 407 when wrong credentials given (PENDING: Temporarily skipped with xcontext) + anonymous proxy + ignores credentials + raises an argument error if no port given + responds with the endpoint's body + proxies the request + ssl + responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) + ignores credentials (PENDING: Temporarily skipped with xcontext) + loading text with no charset + is binary encoded + passing a string encoding type + finds encoding + .cookies + properly merges Cookie headers and cookies + properly works with cookie jars from response + properly merges cookies + passes correct `Cookie` header + posting forms to resources + is easy + .timeout + specifying a global timeout + sets timeout_class to Global + sets given timeout option + specifying per operation timeouts + sets given timeout options + sets timeout_class to PerOperation + specifying a null timeout + sets timeout_class to Null + getting resources + is easy + with query string parameters in the URI and opts hash + includes both + with two leading slashes in path + is allowed + with headers + is easy + with query string parameters + is easy + with a large request body + with `.timeout(:null)` + writes the whole body + with `.timeout(6)` + writes the whole body + with `.timeout({:read=>2, :write=>2, :connect=>2})` + writes the whole body + with URI instance + is easy + .basic_auth + fails when :pass is not given + fails when options is not a Hash + fails when :user is not given + sets Authorization header with proper BasicAuth value + loading endpoint with charset + uses charset from headers + with encoding option + respects option + with redirects + is easy for 301 + is easy for 302 + head requests + is easy + .persistent + with host only given + example at ./spec/lib/http_spec.rb:261 (PENDING: Temporarily skipped with xit) + example at ./spec/lib/http_spec.rb:260 (PENDING: Temporarily skipped with xit) + with timeout specified + sets keep_alive_timeout + with host and block given + auto-closes connection (PENDING: Temporarily skipped with xit) + returns last evaluation of last expression (PENDING: Temporarily skipped with xit) + .use + turns on given feature + with :auto_deflate + sends gzipped body + sends deflated body + with :normalize_uri + uses the default URI normalizer + normalizes URI + uses the custom URI Normalizer method + with :auto_inflate + returns decoded body + returns deflated body + returns raw body when Content-Encoding type is missing + loading binary data + is encoded as bytes + posting with an explicit body + is easy + .auth + sets Authorization header to the given value + accepts any #to_s object HTTP::Features::AutoInflate #wrap_response - when response has uri - preserves uri in wrapped response - for unknown Content-Encoding header - returns original request when there is no Content-Encoding header returns original request + for unknown Content-Encoding header + returns original request for x-gzip Content-Encoding header returns a HTTP::Response wrapping the inflated response body for deflate Content-Encoding header returns a HTTP::Response wrapping the inflated response body - for identity Content-Encoding header - returns original request + when response has uri + preserves uri in wrapped response for gzip Content-Encoding header returns a HTTP::Response wrapping the inflated response body + for identity Content-Encoding header + returns original request Pending: (Failures listed here are expected and do not affect your suite's status) - 1) HTTP::Client working with SSL fails with OpenSSL::SSL::SSLError if host mismatch - # Temporarily skipped with xdescribe - # ./spec/lib/http/client_spec.rb:309 + 1) HTTP::Client following redirects with non-ASCII URLs works like a charm in real world + # Temporarily skipped with xit + # ./spec/lib/http/client_spec.rb:100 + + 2) HTTP::Client following redirects with non-ASCII URLs theoretically works like a charm + # Temporarily skipped with xit + # ./spec/lib/http/client_spec.rb:91 + + 3) HTTP::Client#request with explicitly given `Host` header keeps `Host` header as is + # Temporarily skipped with xit + # ./spec/lib/http/client_spec.rb:241 + + 4) HTTP::Client#request with non-ASCII URLs works like a charm in real world + # Temporarily skipped with xit + # ./spec/lib/http/client_spec.rb:230 + + 5) HTTP::Client#request with non-ASCII URLs theoretically works like a charm + # Temporarily skipped with xit + # ./spec/lib/http/client_spec.rb:225 - 2) HTTP::Client working with SSL just works + 6) HTTP::Client working with SSL just works # Temporarily skipped with xdescribe # ./spec/lib/http/client_spec.rb:304 - 3) HTTP::Client working with SSL with a per operation timeout works + 7) HTTP::Client working with SSL fails with OpenSSL::SSL::SSLError if host mismatch # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:29 + # ./spec/lib/http/client_spec.rb:309 - 4) HTTP::Client working with SSL with a per operation timeout connection of 1 does not time out + 8) HTTP::Client working with SSL without timeouts works # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:37 + # ./spec/support/http_handling_shared.rb:7 - 5) HTTP::Client working with SSL with a per operation timeout read of 2.5 does not time out + 9) HTTP::Client working with SSL with a global timeout errors if connecting takes too long # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:55 - - 6) HTTP::Client working with SSL with a per operation timeout read of 0 times out - # Temporarily skipped with xit - # ./spec/support/http_handling_shared.rb:47 + # ./spec/support/http_handling_shared.rb:75 - 7) HTTP::Client working with SSL with a global timeout errors if reading takes too long + 10) HTTP::Client working with SSL with a global timeout errors if reading takes too long # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:83 - 8) HTTP::Client working with SSL with a global timeout errors if connecting takes too long - # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:75 - - 9) HTTP::Client working with SSL with a global timeout it resets state when reusing connections does not timeout + 11) HTTP::Client working with SSL with a global timeout it resets state when reusing connections does not timeout # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:93 - 10) HTTP::Client working with SSL connection reuse when disabled opens new sockets + 12) HTTP::Client working with SSL with SSL options instead of a context just works # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:184 + # ./spec/lib/http/client_spec.rb:319 - 11) HTTP::Client working with SSL connection reuse when enabled re-uses the socket + 13) HTTP::Client working with SSL connection reuse when enabled re-uses the socket # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:117 - 12) HTTP::Client working with SSL connection reuse when enabled when reading a cached body succeeds + 14) HTTP::Client working with SSL connection reuse when enabled without a host infers host from persistent config + # Temporarily skipped with xdescribe + # ./spec/support/http_handling_shared.rb:112 + + 15) HTTP::Client working with SSL connection reuse when enabled when trying to read a stale body errors + # Temporarily skipped with xdescribe + # ./spec/support/http_handling_shared.rb:135 + + 16) HTTP::Client working with SSL connection reuse when enabled when reading a cached body succeeds # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:142 - 13) HTTP::Client working with SSL connection reuse when enabled with a socket issue transparently reopens + 17) HTTP::Client working with SSL connection reuse when enabled with a socket issue transparently reopens # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:154 - 14) HTTP::Client working with SSL connection reuse when enabled without a host infers host from persistent config + 18) HTTP::Client working with SSL connection reuse when enabled with a change in host errors # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:112 + # ./spec/support/http_handling_shared.rb:175 - 15) HTTP::Client working with SSL connection reuse when enabled on a mixed state re-opens the connection + 19) HTTP::Client working with SSL connection reuse when enabled on a mixed state re-opens the connection # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:123 - 16) HTTP::Client working with SSL connection reuse when enabled when trying to read a stale body errors + 20) HTTP::Client working with SSL connection reuse when disabled opens new sockets # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:135 + # ./spec/support/http_handling_shared.rb:184 - 17) HTTP::Client working with SSL connection reuse when enabled with a change in host errors + 21) HTTP::Client working with SSL with a per operation timeout works # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:175 + # ./spec/support/http_handling_shared.rb:29 - 18) HTTP::Client working with SSL without timeouts works + 22) HTTP::Client working with SSL with a per operation timeout connection of 1 does not time out # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:7 + # ./spec/support/http_handling_shared.rb:37 - 19) HTTP::Client working with SSL with SSL options instead of a context just works + 23) HTTP::Client working with SSL with a per operation timeout read of 0 times out + # Temporarily skipped with xit + # ./spec/support/http_handling_shared.rb:47 + + 24) HTTP::Client working with SSL with a per operation timeout read of 2.5 does not time out # Temporarily skipped with xdescribe - # ./spec/lib/http/client_spec.rb:319 + # ./spec/support/http_handling_shared.rb:55 - 20) HTTP::Client with a per operation timeout read of 0 times out + 25) HTTP::Client with a per operation timeout read of 0 times out # Temporarily skipped with xit # ./spec/support/http_handling_shared.rb:47 - 21) HTTP::Client following redirects with non-ASCII URLs theoretically works like a charm - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:91 + 26) HTTP.via proxy with authentication ssl responds with the endpoint's body + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:135 - 22) HTTP::Client following redirects with non-ASCII URLs works like a charm in real world - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:100 + 27) HTTP.via proxy with authentication ssl responds with 407 if no credentials given + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:145 - 23) HTTP::Client#request with non-ASCII URLs works like a charm in real world - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:230 + 28) HTTP.via proxy with authentication ssl responds with 407 when wrong credentials given + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:140 - 24) HTTP::Client#request with non-ASCII URLs theoretically works like a charm - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:225 + 29) HTTP.via anonymous proxy ssl responds with the endpoint's body + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:99 - 25) HTTP::Client#request with explicitly given `Host` header keeps `Host` header as is - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:241 + 30) HTTP.via anonymous proxy ssl ignores credentials + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:104 - 26) HTTP.persistent with host only given + 31) HTTP.persistent with host only given # Temporarily skipped with xit - # ./spec/lib/http_spec.rb:260 + # ./spec/lib/http_spec.rb:261 - 27) HTTP.persistent with host only given + 32) HTTP.persistent with host only given # Temporarily skipped with xit - # ./spec/lib/http_spec.rb:261 + # ./spec/lib/http_spec.rb:260 - 28) HTTP.persistent with host and block given auto-closes connection + 33) HTTP.persistent with host and block given auto-closes connection # Temporarily skipped with xit # ./spec/lib/http_spec.rb:269 - 29) HTTP.persistent with host and block given returns last evaluation of last expression + 34) HTTP.persistent with host and block given returns last evaluation of last expression # Temporarily skipped with xit # ./spec/lib/http_spec.rb:265 - 30) HTTP.via proxy with authentication ssl responds with the endpoint's body - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:135 - - 31) HTTP.via proxy with authentication ssl responds with 407 if no credentials given - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:145 - - 32) HTTP.via proxy with authentication ssl responds with 407 when wrong credentials given - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:140 - - 33) HTTP.via anonymous proxy ssl ignores credentials - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:104 - - 34) HTTP.via anonymous proxy ssl responds with the endpoint's body - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:99 - -Top 10 slowest examples (12.78 seconds, 78.5% of total time): - HTTP unifies socket errors into HTTP::ConnectionError - 4.42 seconds ./spec/lib/http_spec.rb:455 +Top 10 slowest examples (11.04 seconds, 78.6% of total time): HTTP::Client with a global timeout it resets state when reusing connections does not timeout 4.03 seconds ./spec/support/http_handling_shared.rb:93 + HTTP unifies socket errors into HTTP::ConnectionError + 2.62 seconds ./spec/lib/http_spec.rb:455 HTTP::Client with a per operation timeout read of 2.5 does not time out - 2.02 seconds ./spec/support/http_handling_shared.rb:55 + 2.01 seconds ./spec/support/http_handling_shared.rb:55 HTTP::Client with a global timeout errors if reading takes too long 1.01 seconds ./spec/support/http_handling_shared.rb:83 HTTP::Client with a global timeout errors if connecting takes too long 1.01 seconds ./spec/support/http_handling_shared.rb:75 - HTTP getting resources with a large request body with `.timeout({:read=>2, :write=>2, :connect=>2})` writes the whole body - 0.07204 seconds ./spec/lib/http_spec.rb:64 - HTTP getting resources with a large request body with `.timeout(6)` writes the whole body - 0.06997 seconds ./spec/lib/http_spec.rb:64 HTTP getting resources with a large request body with `.timeout(:null)` writes the whole body - 0.06279 seconds ./spec/lib/http_spec.rb:64 - HTTP.cookies properly merges cookies - 0.05417 seconds ./spec/lib/http_spec.rb:340 - HTTP::Client connection reuse when enabled with a socket issue transparently reopens - 0.04672 seconds ./spec/support/http_handling_shared.rb:154 + 0.11401 seconds ./spec/lib/http_spec.rb:64 + HTTP getting resources with a large request body with `.timeout(6)` writes the whole body + 0.09869 seconds ./spec/lib/http_spec.rb:64 + HTTP getting resources with a large request body with `.timeout({:read=>2, :write=>2, :connect=>2})` writes the whole body + 0.08646 seconds ./spec/lib/http_spec.rb:64 + HTTP.use with :normalize_uri uses the default URI normalizer + 0.03609 seconds ./spec/lib/http_spec.rb:446 + HTTP::Connection#read_headers! reads data in parts + 0.03262 seconds ./spec/lib/http/connection_spec.rb:28 Top 10 slowest example groups: HTTP::Client - 0.13563 seconds average (8.68 seconds / 64 examples) ./spec/lib/http/client_spec.rb:8 + 0.13315 seconds average (8.52 seconds / 64 examples) ./spec/lib/http/client_spec.rb:8 HTTP - 0.08789 seconds average (5.54 seconds / 63 examples) ./spec/lib/http_spec.rb:9 - HTTP::Headers::Mixin - 0.01148 seconds average (0.03443 seconds / 3 examples) ./spec/lib/http/headers/mixin_spec.rb:3 + 0.05823 seconds average (3.67 seconds / 63 examples) ./spec/lib/http_spec.rb:9 HTTP::Connection - 0.00835 seconds average (0.0167 seconds / 2 examples) ./spec/lib/http/connection_spec.rb:3 - HTTP::Redirector - 0.00647 seconds average (0.233 seconds / 36 examples) ./spec/lib/http/redirector_spec.rb:3 + 0.0234 seconds average (0.0468 seconds / 2 examples) ./spec/lib/http/connection_spec.rb:3 HTTP::Request - 0.0064 seconds average (0.28822 seconds / 45 examples) ./spec/lib/http/request_spec.rb:4 - HTTP::ContentType - 0.00639 seconds average (0.08951 seconds / 14 examples) ./spec/lib/http/content_type_spec.rb:3 + 0.00686 seconds average (0.3088 seconds / 45 examples) ./spec/lib/http/request_spec.rb:4 + HTTP::Response::Body + 0.00623 seconds average (0.04985 seconds / 8 examples) ./spec/lib/http/response/body_spec.rb:3 HTTP::Response::Parser - 0.00524 seconds average (0.02096 seconds / 4 examples) ./spec/lib/http/response/parser_spec.rb:3 + 0.00581 seconds average (0.02325 seconds / 4 examples) ./spec/lib/http/response/parser_spec.rb:3 + HTTP::Features::AutoInflate + 0.00569 seconds average (0.03986 seconds / 7 examples) ./spec/lib/http/features/auto_inflate_spec.rb:3 + HTTP::Redirector + 0.00433 seconds average (0.15571 seconds / 36 examples) ./spec/lib/http/redirector_spec.rb:3 HTTP::Features::Instrumentation - 0.00461 seconds average (0.00921 seconds / 2 examples) ./spec/lib/http/features/instrumentation_spec.rb:3 - HTTP::Response::Body - 0.00417 seconds average (0.03335 seconds / 8 examples) ./spec/lib/http/response/body_spec.rb:3 + 0.00357 seconds average (0.00714 seconds / 2 examples) ./spec/lib/http/features/instrumentation_spec.rb:3 + HTTP::Options merge + 0.00337 seconds average (0.0101 seconds / 3 examples) ./spec/lib/http/options/merge_spec.rb:3 -Finished in 16.28 seconds (files took 3.02 seconds to load) +Finished in 14.05 seconds (files took 3.36 seconds to load) 811 examples, 0 failures, 34 pending -Randomized with seed 43987 +Randomized with seed 40440 Coverage report generated for RSpec to /build/ruby-http-4.4.1/coverage. 1268 / 1361 LOC (93.17%) covered. [Coveralls] Outside the CI environment, not sending data. @@ -2928,12 +2999,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/23229/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/27594 and its subdirectories -I: Current time: Thu Jul 22 00:00:37 -12 2021 -I: pbuilder-time-stamp: 1626955237 +I: removing directory /srv/workspace/pbuilder/23229 and its subdirectories +I: Current time: Fri Jul 23 02:03:25 +14 2021 +I: pbuilder-time-stamp: 1626955405