Diff of the two buildlogs: -- --- b1/build.log 2023-06-05 09:23:07.205118367 +0000 +++ b2/build.log 2023-06-05 09:25:12.411628756 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Jul 7 03:44:08 -12 2024 -I: pbuilder-time-stamp: 1720367048 +I: Current time: Mon Jun 5 23:23:09 +14 2023 +I: pbuilder-time-stamp: 1685956989 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -16,7 +16,7 @@ I: copying [./ruby-http_4.4.1.orig.tar.gz] I: copying [./ruby-http_4.4.1-5.debian.tar.xz] I: Extracting source -gpgv: Signature made Tue Nov 16 12:45:03 2021 -12 +gpgv: Signature made Wed Nov 17 14:45:03 2021 +14 gpgv: using EDDSA key 84CFFDC21520F88306EC29D152699AB63F9F2BC3 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-http_4.4.1-5.dsc: no acceptable signature found @@ -31,135 +31,167 @@ dpkg-source: info: applying 0005-Fix-passing-a-hash-as-argument-for-Ruby3.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/300240/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2987915/tmp/hooks/D01_modify_environment starting +debug: Running on ionos1-amd64. +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 +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jun 5 23:23 /bin/sh -> /bin/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/2987915/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2987915/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' - DISTRIBUTION='bookworm' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.15(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=15 ' + DIRSTACK=() + DISTRIBUTION=bookworm + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='df74023b636d46058819a0ce07d8ae34' - 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='300240' - PS1='# ' - PS2='> ' + INVOCATION_ID=793512f9b4de487497573f13a2950782 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + 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=2987915 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/r-b-build.mfkmxQCm/pbuilderrc_soS0 --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.mfkmxQCm/b1 --logfile b1/build.log ruby-http_4.4.1-5.dsc' - SUDO_GID='111' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://85.184.249.68:3128' + 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/r-b-build.mfkmxQCm/pbuilderrc_A8Dz --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.mfkmxQCm/b2 --logfile b2/build.log --extrapackages usrmerge ruby-http_4.4.1-5.dsc' + SUDO_GID=110 + SUDO_UID=105 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://78.137.99.97:3128 I: uname -a - Linux ionos15-amd64 6.1.0-0.deb11.7-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.20-2~bpo11+1 (2023-04-23) x86_64 GNU/Linux + Linux i-capture-the-hostname 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux I: ls -l /bin total 5632 - -rwxr-xr-x 1 root root 1265648 Apr 23 2023 bash - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bunzip2 - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bzcat - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Sep 18 2022 bzdiff - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Sep 18 2022 bzgrep - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bzip2 - -rwxr-xr-x 1 root root 14568 Sep 18 2022 bzip2recover - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Sep 18 2022 bzmore - -rwxr-xr-x 1 root root 44016 Sep 20 2022 cat - -rwxr-xr-x 1 root root 68656 Sep 20 2022 chgrp - -rwxr-xr-x 1 root root 64496 Sep 20 2022 chmod - -rwxr-xr-x 1 root root 72752 Sep 20 2022 chown - -rwxr-xr-x 1 root root 151152 Sep 20 2022 cp - -rwxr-xr-x 1 root root 125640 Jan 5 2023 dash - -rwxr-xr-x 1 root root 121904 Sep 20 2022 date - -rwxr-xr-x 1 root root 89240 Sep 20 2022 dd - -rwxr-xr-x 1 root root 102200 Sep 20 2022 df - -rwxr-xr-x 1 root root 151344 Sep 20 2022 dir - -rwxr-xr-x 1 root root 88656 Mar 22 2023 dmesg - lrwxrwxrwx 1 root root 8 Dec 19 2022 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Dec 19 2022 domainname -> hostname - -rwxr-xr-x 1 root root 43856 Sep 20 2022 echo - -rwxr-xr-x 1 root root 41 Jan 24 2023 egrep - -rwxr-xr-x 1 root root 35664 Sep 20 2022 false - -rwxr-xr-x 1 root root 41 Jan 24 2023 fgrep - -rwxr-xr-x 1 root root 85600 Mar 22 2023 findmnt - -rwsr-xr-x 1 root root 35128 Mar 22 2023 fusermount - -rwxr-xr-x 1 root root 203152 Jan 24 2023 grep - -rwxr-xr-x 2 root root 2346 Apr 9 2022 gunzip - -rwxr-xr-x 1 root root 6447 Apr 9 2022 gzexe - -rwxr-xr-x 1 root root 98136 Apr 9 2022 gzip - -rwxr-xr-x 1 root root 22680 Dec 19 2022 hostname - -rwxr-xr-x 1 root root 72824 Sep 20 2022 ln - -rwxr-xr-x 1 root root 53024 Mar 23 2023 login - -rwxr-xr-x 1 root root 151344 Sep 20 2022 ls - -rwxr-xr-x 1 root root 207168 Mar 22 2023 lsblk - -rwxr-xr-x 1 root root 97552 Sep 20 2022 mkdir - -rwxr-xr-x 1 root root 72912 Sep 20 2022 mknod - -rwxr-xr-x 1 root root 43952 Sep 20 2022 mktemp - -rwxr-xr-x 1 root root 59712 Mar 22 2023 more - -rwsr-xr-x 1 root root 59704 Mar 22 2023 mount - -rwxr-xr-x 1 root root 18744 Mar 22 2023 mountpoint - -rwxr-xr-x 1 root root 142968 Sep 20 2022 mv - lrwxrwxrwx 1 root root 8 Dec 19 2022 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 2 2023 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 43952 Sep 20 2022 pwd - lrwxrwxrwx 1 root root 4 Apr 23 2023 rbash -> bash - -rwxr-xr-x 1 root root 52112 Sep 20 2022 readlink - -rwxr-xr-x 1 root root 72752 Sep 20 2022 rm - -rwxr-xr-x 1 root root 56240 Sep 20 2022 rmdir - -rwxr-xr-x 1 root root 27560 Nov 2 2022 run-parts - -rwxr-xr-x 1 root root 126424 Jan 5 2023 sed - lrwxrwxrwx 1 root root 4 Jan 5 2023 sh -> dash - -rwxr-xr-x 1 root root 43888 Sep 20 2022 sleep - -rwxr-xr-x 1 root root 85008 Sep 20 2022 stty - -rwsr-xr-x 1 root root 72000 Mar 22 2023 su - -rwxr-xr-x 1 root root 39824 Sep 20 2022 sync - -rwxr-xr-x 1 root root 531984 Apr 6 2023 tar - -rwxr-xr-x 1 root root 14520 Nov 2 2022 tempfile - -rwxr-xr-x 1 root root 109616 Sep 20 2022 touch - -rwxr-xr-x 1 root root 35664 Sep 20 2022 true - -rwxr-xr-x 1 root root 14568 Mar 22 2023 ulockmgr_server - -rwsr-xr-x 1 root root 35128 Mar 22 2023 umount - -rwxr-xr-x 1 root root 43888 Sep 20 2022 uname - -rwxr-xr-x 2 root root 2346 Apr 9 2022 uncompress - -rwxr-xr-x 1 root root 151344 Sep 20 2022 vdir - -rwxr-xr-x 1 root root 72024 Mar 22 2023 wdctl - lrwxrwxrwx 1 root root 8 Dec 19 2022 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Apr 9 2022 zcat - -rwxr-xr-x 1 root root 1678 Apr 9 2022 zcmp - -rwxr-xr-x 1 root root 6460 Apr 9 2022 zdiff - -rwxr-xr-x 1 root root 29 Apr 9 2022 zegrep - -rwxr-xr-x 1 root root 29 Apr 9 2022 zfgrep - -rwxr-xr-x 1 root root 2081 Apr 9 2022 zforce - -rwxr-xr-x 1 root root 8103 Apr 9 2022 zgrep - -rwxr-xr-x 1 root root 2206 Apr 9 2022 zless - -rwxr-xr-x 1 root root 1842 Apr 9 2022 zmore - -rwxr-xr-x 1 root root 4577 Apr 9 2022 znew -I: user script /srv/workspace/pbuilder/300240/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 1265648 Apr 24 11:23 bash + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bunzip2 + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzcat + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4893 Nov 28 2021 bzexe + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzip2 + -rwxr-xr-x 1 root root 14568 Sep 19 2022 bzip2recover + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore + -rwxr-xr-x 1 root root 44016 Sep 21 2022 cat + -rwxr-xr-x 1 root root 68656 Sep 21 2022 chgrp + -rwxr-xr-x 1 root root 64496 Sep 21 2022 chmod + -rwxr-xr-x 1 root root 72752 Sep 21 2022 chown + -rwxr-xr-x 1 root root 151152 Sep 21 2022 cp + -rwxr-xr-x 1 root root 125640 Jan 6 03:20 dash + -rwxr-xr-x 1 root root 121904 Sep 21 2022 date + -rwxr-xr-x 1 root root 89240 Sep 21 2022 dd + -rwxr-xr-x 1 root root 102200 Sep 21 2022 df + -rwxr-xr-x 1 root root 151344 Sep 21 2022 dir + -rwxr-xr-x 1 root root 88656 Mar 24 00:02 dmesg + lrwxrwxrwx 1 root root 8 Dec 20 03:33 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Dec 20 03:33 domainname -> hostname + -rwxr-xr-x 1 root root 43856 Sep 21 2022 echo + -rwxr-xr-x 1 root root 41 Jan 25 04:43 egrep + -rwxr-xr-x 1 root root 35664 Sep 21 2022 false + -rwxr-xr-x 1 root root 41 Jan 25 04:43 fgrep + -rwxr-xr-x 1 root root 85600 Mar 24 00:02 findmnt + -rwsr-xr-x 1 root root 35128 Mar 23 22:35 fusermount + -rwxr-xr-x 1 root root 203152 Jan 25 04:43 grep + -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip + -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe + -rwxr-xr-x 1 root root 98136 Apr 10 2022 gzip + -rwxr-xr-x 1 root root 22680 Dec 20 03:33 hostname + -rwxr-xr-x 1 root root 72824 Sep 21 2022 ln + -rwxr-xr-x 1 root root 53024 Mar 24 02:40 login + -rwxr-xr-x 1 root root 151344 Sep 21 2022 ls + -rwxr-xr-x 1 root root 207168 Mar 24 00:02 lsblk + -rwxr-xr-x 1 root root 97552 Sep 21 2022 mkdir + -rwxr-xr-x 1 root root 72912 Sep 21 2022 mknod + -rwxr-xr-x 1 root root 43952 Sep 21 2022 mktemp + -rwxr-xr-x 1 root root 59712 Mar 24 00:02 more + -rwsr-xr-x 1 root root 59704 Mar 24 00:02 mount + -rwxr-xr-x 1 root root 18744 Mar 24 00:02 mountpoint + -rwxr-xr-x 1 root root 142968 Sep 21 2022 mv + lrwxrwxrwx 1 root root 8 Dec 20 03:33 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 3 20:25 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 43952 Sep 21 2022 pwd + lrwxrwxrwx 1 root root 4 Apr 24 11:23 rbash -> bash + -rwxr-xr-x 1 root root 52112 Sep 21 2022 readlink + -rwxr-xr-x 1 root root 72752 Sep 21 2022 rm + -rwxr-xr-x 1 root root 56240 Sep 21 2022 rmdir + -rwxr-xr-x 1 root root 27560 Nov 3 2022 run-parts + -rwxr-xr-x 1 root root 126424 Jan 6 09:55 sed + lrwxrwxrwx 1 root root 9 Jun 5 23:23 sh -> /bin/bash + -rwxr-xr-x 1 root root 43888 Sep 21 2022 sleep + -rwxr-xr-x 1 root root 85008 Sep 21 2022 stty + -rwsr-xr-x 1 root root 72000 Mar 24 00:02 su + -rwxr-xr-x 1 root root 39824 Sep 21 2022 sync + -rwxr-xr-x 1 root root 531984 Apr 7 04:25 tar + -rwxr-xr-x 1 root root 14520 Nov 3 2022 tempfile + -rwxr-xr-x 1 root root 109616 Sep 21 2022 touch + -rwxr-xr-x 1 root root 35664 Sep 21 2022 true + -rwxr-xr-x 1 root root 14568 Mar 23 22:35 ulockmgr_server + -rwsr-xr-x 1 root root 35128 Mar 24 00:02 umount + -rwxr-xr-x 1 root root 43888 Sep 21 2022 uname + -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress + -rwxr-xr-x 1 root root 151344 Sep 21 2022 vdir + -rwxr-xr-x 1 root root 72024 Mar 24 00:02 wdctl + lrwxrwxrwx 1 root root 8 Dec 20 03:33 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat + -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp + -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff + -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep + -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep + -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce + -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep + -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless + -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore + -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew +I: user script /srv/workspace/pbuilder/2987915/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -380,7 +412,7 @@ Get: 161 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec-mocks all 3.12.0c0e1m1s0-1 [79.5 kB] Get: 162 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec all 3.12.0c0e1m1s0-1 [5084 B] Get: 163 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec-its all 1.3.0-1 [6864 B] -Fetched 48.7 MB in 1s (39.1 MB/s) +Fetched 48.7 MB in 2s (21.1 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (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 ... 19591 files and directories currently installed.) @@ -1055,8 +1087,19 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +usrmerge is already the newest version (35). +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 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-5_source.changes +I: user script /srv/workspace/pbuilder/2987915/tmp/hooks/A99_set_merged_usr starting +Re-configuring usrmerge... +removed '/etc/unsupported-skip-usrmerge-conversion' +The system has been successfully converted. +I: user script /srv/workspace/pbuilder/2987915/tmp/hooks/A99_set_merged_usr finished +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-5_source.changes dpkg-buildpackage: info: source package ruby-http dpkg-buildpackage: info: source version 4.4.1-5 dpkg-buildpackage: info: source distribution unstable @@ -1156,477 +1199,331 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 23862 +Randomized with seed 12762 -HTTP::Request::Body - #== - when sources are equivalent - returns true - when objects are not of the same class - returns false - when sources are not equivalent - returns false - #initialize - when body is an Enumerable - does not raise an error - when body is a string - does not raise an error - when body is of unrecognized type - raises an error - when body is nil - does not raise an error - when body is an IO - does not raise an error - #size - when body is nil - returns zero - when body is an Enumerable - raises a RequestError - when body is an IO without size - raises a RequestError - when body is a string - returns string bytesize - when body is an IO with size - returns IO size - #each - when body is an Enumerable - yields elements - when body is an Enumerable IO - yields chunks of content - allows to enumerate multiple times - when body is nil - yields nothing - when body is a pipe - yields chunks of content - when body is a string - yields the string - when body is a non-Enumerable IO - yields chunks of content - #source - returns the original object +HTTP::Headers::Mixin + #headers + returns @headers instance variable + #[]= + proxies to headers#[] + #[] + proxies to headers#[] -HTTP::Options - has reader methods for attributes - coerces to a Hash +HTTP::Features::AutoInflate + #wrap_response + for deflate Content-Encoding header + returns a HTTP::Response wrapping the inflated response body + for unknown Content-Encoding header + returns original request + for identity Content-Encoding header + returns original request + for x-gzip Content-Encoding header + returns a HTTP::Response wrapping the inflated response body + for gzip Content-Encoding header + returns a HTTP::Response wrapping the inflated response body + when response has uri + preserves uri in wrapped response + when there is no Content-Encoding header + returns original request + +HTTP::Response + includes HTTP::Headers::Mixin + #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 + charset + without Content-Type header + is expected to be nil + with Content-Type: text/html + is expected to be nil + with Content-Type: text/html; charset=utf-8 + is expected to eq "utf-8" + #connection + returns the connection object used to instantiate the response + #parse + with known content type + returns parsed body + with unknown content type + raises HTTP::Error + with explicitly given mime type + ignores mime_type of response + supports MIME type aliases + #flush + flushes body + returns response self-reference + #inspect + is expected to eq "#\"text/plain\"}>" + mime_type + with Content-Type: text/html + is expected to eq "text/html" + without Content-Type header + is expected to be nil + with Content-Type: text/html; charset=utf-8 + is expected to eq "text/html" + #content_length + without Content-Length header + is expected to be nil + with invalid Content-Length + 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 HTTP::Response::Body streams bodies from responses + when body empty + returns responds to empty? with true 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 does not blows up calls underlying connection readpartial without specific size + with size given + passes value to underlying connection -HTTP::URI - knows URI schemes - sets default ports for HTTPS URIs - sets default ports for HTTP URIs - #dup - doesn't share internal value between duplicates - -HTTP::Client - connection reuse - when disabled - opens new sockets - when enabled - re-uses the socket - on a mixed state - re-opens the connection - with a change in host - errors - when reading a cached body - succeeds - without a host - infers host from persistent config - when trying to read a stale body - errors - with a socket issue - transparently reopens - 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 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) - with a per operation timeout - works (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) - connection - of 1 - does not time out (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) - 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) - with a change in host - errors (PENDING: Temporarily skipped with xdescribe) - when trying to read a stale body - errors (PENDING: Temporarily skipped with xdescribe) - with a socket issue - transparently reopens (PENDING: Temporarily skipped with xdescribe) - when reading a cached body - succeeds (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) - #request - 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 explicitly given `Host` header - keeps `Host` header as is (PENDING: Temporarily skipped with xit) - 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 a global timeout - errors if reading takes too long - errors if connecting takes too long - it resets state when reusing connections - does not timeout - 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 - following redirects - prepends previous request uri scheme and host if needed - returns response of new location - fails if max amount of hops reached - fails upon endless redirects - 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) - #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 - does not iterates through body - finishes response after headers were received - parsing params - properly encodes colons - accepts params within the provided URL - does not modifies query part if no params were given - merges duplicate values - combines GET params from the URI with the passed in params - does not corrupts index-less arrays - does not convert newlines into \r\n before encoding string values - passing json - encodes given object - without timeouts - works - with a per operation timeout - works - connection - of 1 - does not time out - read - of 2.5 - does not time out - of 0 - times out (PENDING: Temporarily skipped with xit) - -HTTP::Features::AutoDeflate - accepts string as method - accepts gzip method - accepts deflate method - raises error for wrong type - 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::Features::Instrumentation - logging the request - should log the request - logging the response - should log the response - -HTTP::Options new - supports a Options instance - with a Hash - coerces :form correctly - coerces :proxy correctly - coerces :response correctly - coerces :headers correctly - -HTTP::Options features - defaults to be empty - accepts feature name with its options in array - accepts plain symbols in array - raises error for not supported features - -HTTP::Features::AutoInflate - #wrap_response - when response has uri - preserves uri in wrapped response - when there is no Content-Encoding header - returns original request - for 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 x-gzip Content-Encoding header - returns a HTTP::Response wrapping the inflated response body - for unknown Content-Encoding header - returns original request - for identity Content-Encoding header - returns original request - -HTTP::Options proxy - accepts proxy address, port, username, and password - may be specified with with_proxy - defaults to {} - -HTTP::Headers::Mixin - #headers - returns @headers instance variable - #[]= - proxies to headers#[] - #[] - proxies to headers#[] - -HTTP::Request::Writer - #stream - when Content-Length header is set - keeps the given value - when multiple headers are set - separates headers with carriage return and line feed - when server won't accept any more data - aborts silently - when body is nonempty - writes it to the socket and sets Content-Length - 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 writing to socket raises an exception - raises a ConnectionError +HTTP::Request + provides a #verb accessor + includes HTTP::Headers::Mixin + provides a #scheme accessor + requires URI to have scheme part + sets given headers + #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 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 + when URI contains fragment + omits fragment part + 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 + with relative URL given + keeps Host header + verb + is expected to eq :post + uri + is expected to eq # + body + 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 # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + uri + is expected to eq # + with new verb given + verb + is expected to equal :get + with URL with non-standard port given + presets new Host header + body + is expected to eq # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + uri + is expected to eq # + verb + is expected to eq :post + with relative URL that misses leading slash given + keeps Host header + uri + is expected to eq # + verb + is expected to eq :post + body + 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 # + with schema-less absolute URL given + presets new Host header + uri + is expected to eq # + body + is expected to eq # + proxy + is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} + verb + is expected to eq :post + body + is expected to eq # + verb + is expected to eq :post -HTTP::Options body - may be specified with with_body +HTTP::Options json + may be specified with with_json data defaults to nil -HTTP::Headers - is Enumerable - #merge - does not affects original headers - leaves headers not presented in other as is - is expected to be a kind of HTTP::Headers - is expected not to equal ["Host", "example.com"] and ["Accept", "application/json"] - overwrites existing values - appends other headers, not presented in base - #get - fails with invalid header name - normalizes header name - fails with empty header name - returns array of associated values - when header does not exists - returns empty array - #dup - is expected to be a kind of HTTP::Headers - has headers copied - is expected not to equal ["Content-Type", "application/json"] - modifying a copy - modifies dupped copy - does not affects original headers - #hash - equals if two headers equals - #delete - normalizes header name - fails with empty header name - fails with invalid header name - removes given header +HTTP::Options + has reader methods for attributes + coerces to a Hash + +HTTP::Request::Body + #source + returns the original object #each - returns Enumerator if no block given - returns self instance if block given - yields headers in the same order they were added - yields each key/value pair separatedly - #keys - returns uniq keys only - normalizes keys - #add - appends new value if header exists - sets header value - normalizes header name - fails with invalid header name - fails with empty header name - allows append multiple values - #[] - when header has a multiple values - returns array of associated values - normalizes header name - when header does not exists - returns nil - when header has a single value - returns it returns a single value - normalizes header name - #[]= - overwrites previous value - sets header value - normalizes header name - allows set multiple values - .coerce - accepts any object that respond to #to_h - fails if given object cannot be coerced - is aliased as .[] - accepts any object that respond to #to_a - accepts any object that respond to #to_hash - with duplicate header keys (mixed case) - adds all headers - #inspect - is expected to eq "#[\"hoo=ray\", \"woo=hoo\"]}>" - #to_a - returns Array of key/value pairs with normalized keys - returns an Array - #set - normalizes header name - sets header value - fails with invalid header name - allows set multiple values - fails with empty header name - overwrites previous value - .empty? - initially - is expected to equal true - when header exists - is expected to equal false - when last header was removed - is expected to equal true + when body is a pipe + yields chunks of content + when body is a string + yields the string + when body is an Enumerable IO + allows to enumerate multiple times + yields chunks of content + when body is nil + yields nothing + when body is an Enumerable + yields elements + when body is a non-Enumerable IO + yields chunks of content #== - compares header keys and values - sensitive to header values order - allows comparison with Array of key/value pairs - sensitive to headers order - #merge! - overwrites existing values - leaves headers not presented in other as is - appends other headers, not presented in base - #include? - tells whenever given headers is set or not - normalizes given header name - #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 - -HTTP::Options form - defaults to nil - may be specified with with_form_data + when sources are equivalent + returns true + when sources are not equivalent + returns false + when objects are not of the same class + returns false + #size + when body is a string + returns string bytesize + when body is an IO with size + returns IO size + when body is nil + returns zero + when body is an Enumerable + raises a RequestError + when body is an IO without size + raises a RequestError + #initialize + when body is an IO + 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 of unrecognized type + raises an error + when body is nil + does not raise an error HTTP::Options headers + may be specified with with_headers defaults to be empty /build/ruby-http-4.4.1/spec/lib/http/options/headers_spec.rb:17: warning: Passing only keyword arguments to Struct#initialize will behave differently from Ruby 3.2. Please use a Hash literal like .new({k: v}) instead of .new(k: v). accepts any object that respond to :to_hash - may be specified with with_headers HTTP::Redirector - #max_hops - by default - is expected to eq 5 #strict by default is expected to equal true + #max_hops + by default + is expected to eq 5 #perform - returns first non-redirect response + fails with EndlessRedirectError if endless loop detected fails with StateError if there were no Location header - fails with TooManyRedirectsError if max hops reached concatenates multiple Location headers - fails with EndlessRedirectError if endless loop detected - following 307 redirect - follows with original request's verb - following 303 redirect - follows with HEAD if original request was HEAD - follows with GET if original request was neither GET nor HEAD - follows with GET if original request was GET + fails with TooManyRedirectsError if max hops reached + returns first non-redirect response 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 DELETE + raises StateError if original request was POST with non-strict mode it follows with original verb if it's safe + 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 GET if original request was DELETE + following 308 redirect + follows with original request's verb + following 301 redirect 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 DELETE raises StateError if original request was PUT - following 302 redirect - with strict mode raises StateError if original request was POST raises StateError if original request was DELETE - raises StateError if original request was PUT it follows with original verb if it's safe with non-strict mode it follows with original verb if it's safe - it follows with GET if original request was POST it follows with GET if original request was DELETE it follows with GET if original request was PUT - following 301 redirect - 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 + it follows with GET if original request was POST + following 302 redirect with non-strict mode it follows with original verb if it's safe it follows with GET if original request was POST it follows with GET if original request was PUT it follows with GET if original request was DELETE - following 308 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 POST + raises StateError if original request was PUT + following 307 redirect follows with original request's verb + following 303 redirect + follows with HEAD if original request was HEAD + follows with GET if original request was neither GET nor HEAD + follows with GET if original request was GET -HTTP::Features::Logging - logging the request - should log the request - logging the response - should log the response +HTTP::Connection + #readpartial + reads data in parts + #read_headers! + reads data in parts HTTP::ContentType .parse - with text/plain;charset=utf-8;foo=bar + with text/plain charset - is expected to eq "utf-8" + is expected to be nil mime_type is expected to eq "text/plain" - with 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 - with text/plain; charset=utf-8 + with text/plain; foo=bar; charset=utf-8 charset is expected to eq "utf-8" mime_type @@ -1636,688 +1533,672 @@ is expected to eq "text/plain" charset is expected to eq "utf-8" - with tEXT/plaIN - mime_type - is expected to eq "text/plain" + with text/plain; charset=utf-8 charset - is expected to be nil - with text/plain; charSET=utf-8 + is expected to eq "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 + with text/plain; charSET=utf-8 mime_type is expected to eq "text/plain" charset is expected to eq "utf-8" -HTTP::Connection - #read_headers! - reads data in parts - #readpartial - reads data in parts +HTTP::Features::Logging + logging the response + should log the response + logging the request + should log the request HTTP::Response::Status - #non_authoritative_information? - when code is lower than 203 + #method_not_allowed? + when code is higher than 405 is expected to equal false - when code is 203 + when code is 405 is expected to equal true - when code is higher than 203 + when code is lower than 405 is expected to equal false - #multi_status? - when code is higher than 207 + #gateway_timeout? + when code is lower than 504 is expected to equal false - when code is lower than 207 + when code is 504 + is expected to equal true + when code is higher than 504 is expected to equal false - when code is 207 + #permanent_redirect? + when code is 308 is expected to equal true - #precondition_failed? - when code is higher than 412 + when code is higher than 308 is expected to equal false - when code is lower than 412 + when code is lower than 308 is expected to equal false - when code is 412 - is expected to equal true - #found? - when code is lower than 302 + #moved_permanently? + when code is lower than 301 is expected to equal false - when code is 302 + when code is 301 is expected to equal true - when code is higher than 302 + when code is higher than 301 is expected to equal false - with 1xx codes - is not #redirect? - is not #success? - is not #server_error? - is not #client_error? - is #informational? - #payload_too_large? - when code is lower than 413 + #temporary_redirect? + when code is lower than 307 is expected to equal false - when code is higher than 413 + when code is higher than 307 is expected to equal false - when code is 413 + when code is 307 is expected to equal true - #range_not_satisfiable? - when code is 416 + #switching_protocols? + when code is 101 is expected to equal true - when code is lower than 416 + when code is higher than 101 is expected to equal false - when code is higher than 416 + when code is lower than 101 is expected to equal false - #locked? - when code is higher than 423 + #unsupported_media_type? + when code is lower than 415 is expected to equal false - when code is lower than 423 + when code is higher than 415 is expected to equal false - when code is 423 - is expected to equal true - #forbidden? - when code is 403 + when code is 415 is expected to equal true - when code is lower than 403 - is expected to equal false - when code is higher than 403 - is expected to equal false - #conflict? - when code is lower than 409 + #unprocessable_entity? + when code is lower than 422 is expected to equal false - when code is 409 + when code is 422 is expected to equal true - when code is higher than 409 + when code is higher than 422 is expected to equal false - #payment_required? - when code is higher than 402 + #found? + when code is lower than 302 is expected to equal false - when code is lower than 402 + when code is higher than 302 is expected to equal false - when code is 402 + when code is 302 is expected to equal true - #processing? - when code is higher than 102 - is expected to equal false - when code is lower than 102 - is expected to equal false - when code is 102 + #not_acceptable? + when code is 406 is expected to equal true - #already_reported? - when code is higher than 208 - is expected to equal false - when code is lower than 208 + when code is lower than 406 is expected to equal false - when code is 208 - is expected to equal true - #precondition_required? - when code is lower than 428 + when code is higher than 406 is expected to equal false - when code is 428 - is expected to equal true - when code is higher than 428 + #variant_also_negotiates? + when code is lower than 506 is expected to equal false - #gateway_timeout? - when code is higher than 504 + when code is higher than 506 is expected to equal false - when code is 504 + when code is 506 is expected to equal true - when code is lower than 504 - is expected to equal false #im_used? when code is 226 is expected to equal true - when code is higher than 226 - is expected to equal false when code is lower than 226 is expected to equal false - #not_implemented? - when code is 501 + when code is higher than 226 + is expected to equal false + #inspect + returns quoted code and reason phrase + #bad_gateway? + when code is 502 is expected to equal true - when code is lower than 501 + when code is higher than 502 is expected to equal false - when code is higher than 501 + when code is lower than 502 is expected to equal false - #length_required? - when code is lower than 411 + #not_extended? + when code is higher than 510 is expected to equal false - when code is 411 + when code is lower than 510 + is expected to equal false + when code is 510 is expected to equal true - when code is higher than 411 + #not_modified? + when code is 304 + is expected to equal true + when code is lower than 304 is expected to equal false - #to_sym - with well-known code: 508 - is expected to equal :loop_detected - 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: 501 - is expected to equal :not_implemented - with well-known code: 428 - is expected to equal :precondition_required - with well-known code: 410 - is expected to equal :gone - with well-known code: 204 - is expected to equal :no_content - with well-known code: 415 - is expected to equal :unsupported_media_type - with well-known code: 426 - is expected to equal :upgrade_required - with well-known code: 421 - is expected to equal :misdirected_request - with well-known code: 304 - is expected to equal :not_modified - with well-known code: 300 - is expected to equal :multiple_choices - with well-known code: 502 - is expected to equal :bad_gateway - with well-known code: 405 - is expected to equal :method_not_allowed - with well-known code: 406 - is expected to equal :not_acceptable - with well-known code: 507 - is expected to equal :insufficient_storage - with well-known code: 407 - is expected to equal :proxy_authentication_required - with well-known code: 205 - is expected to equal :reset_content - with well-known code: 201 - is expected to equal :created - with well-known code: 403 - is expected to equal :forbidden - with well-known code: 202 - is expected to equal :accepted - with well-known code: 100 - is expected to equal :continue - with well-known code: 408 - is expected to equal :request_timeout - 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: 417 - is expected to equal :expectation_failed - with well-known code: 511 - is expected to equal :network_authentication_required - with well-known code: 451 - is expected to equal :unavailable_for_legal_reasons - with well-known code: 414 - is expected to equal :uri_too_long - with well-known code: 510 - is expected to equal :not_extended - with well-known code: 429 - is expected to equal :too_many_requests - with well-known code: 101 - is expected to equal :switching_protocols - with well-known code: 307 - is expected to equal :temporary_redirect - with well-known code: 203 - is expected to equal :non_authoritative_information - with well-known code: 412 - is expected to equal :precondition_failed - with well-known code: 409 - is expected to equal :conflict - with well-known code: 200 - is expected to equal :ok - with well-known code: 431 - is expected to equal :request_header_fields_too_large - with well-known code: 503 - is expected to equal :service_unavailable - with well-known code: 500 - is expected to equal :internal_server_error - with well-known code: 416 - is expected to equal :range_not_satisfiable - with well-known code: 505 - is expected to equal :http_version_not_supported - with well-known code: 303 - is expected to equal :see_other - with well-known code: 401 - is expected to equal :unauthorized - with well-known code: 302 - is expected to equal :found - with well-known code: 413 - is expected to equal :payload_too_large - with well-known code: 301 - is expected to equal :moved_permanently - with well-known code: 424 - is expected to equal :failed_dependency - with well-known code: 206 - is expected to equal :partial_content - with unknown code - is expected to be nil - with well-known code: 308 - is expected to equal :permanent_redirect - with well-known code: 102 - is expected to equal :processing - with well-known code: 506 - is expected to equal :variant_also_negotiates - with well-known code: 404 - is expected to equal :not_found - with well-known code: 504 - is expected to equal :gateway_timeout - with well-known code: 411 - is expected to equal :length_required - with well-known code: 208 - is expected to equal :already_reported - with well-known code: 400 - is expected to equal :bad_request - with well-known code: 422 - is expected to equal :unprocessable_entity - with well-known code: 207 - is expected to equal :multi_status + when code is higher than 304 + is expected to equal false + .new + fails if given value does not respond to #to_i + accepts any object that responds to #to_i + with 4xx codes + is not #redirect? + is not #informational? + is not #server_error? + is #client_error? + is not #success? #reason - with well-known code: 202 - is expected to eq "Accepted" - is expected to be frozen - with well-known code: 308 - is expected to eq "Permanent Redirect" - is expected to be frozen - with well-known code: 304 - is expected to be frozen - is expected to eq "Not Modified" - with well-known code: 204 + with well-known code: 506 is expected to be frozen - is expected to eq "No Content" - with well-known code: 200 - is expected to eq "OK" + is expected to eq "Variant Also Negotiates" + with well-known code: 426 is expected to be frozen - with well-known code: 226 + is expected to eq "Upgrade Required" + with well-known code: 202 + is expected to eq "Accepted" is expected to be frozen - is expected to eq "IM Used" - with well-known code: 409 - is expected to eq "Conflict" + with well-known code: 507 + is expected to eq "Insufficient Storage" is expected to be frozen - with well-known code: 511 + with well-known code: 308 is expected to be frozen - is expected to eq "Network Authentication Required" - with well-known code: 410 + is expected to eq "Permanent Redirect" + with well-known code: 201 is expected to be frozen - is expected to eq "Gone" - with well-known code: 406 - is expected to eq "Not Acceptable" + is expected to eq "Created" + with well-known code: 416 is expected to be frozen - with well-known code: 510 - is expected to eq "Not Extended" + is expected to eq "Range Not Satisfiable" + with well-known code: 305 + is expected to eq "Use Proxy" is expected to be frozen - with well-known code: 400 + with well-known code: 208 + is expected to eq "Already Reported" is expected to be frozen - is expected to eq "Bad Request" with well-known code: 503 is expected to eq "Service Unavailable" is expected to be frozen - with well-known code: 302 - is expected to eq "Found" - is expected to be frozen - with well-known code: 401 - is expected to be frozen - is expected to eq "Unauthorized" - with well-known code: 403 - is expected to eq "Forbidden" - is expected to be frozen - with well-known code: 428 - is expected to eq "Precondition Required" - is expected to be frozen - with well-known code: 502 - is expected to eq "Bad Gateway" - is expected to be frozen - with well-known code: 508 - is expected to eq "Loop Detected" + with well-known code: 408 is expected to be frozen - with well-known code: 411 - is expected to eq "Length Required" + is expected to eq "Request Timeout" + with well-known code: 402 + is expected to eq "Payment Required" is expected to be frozen - with well-known code: 424 - is expected to eq "Failed Dependency" + with well-known code: 203 is expected to be frozen + is expected to eq "Non-Authoritative Information" with well-known code: 307 is expected to be frozen is expected to eq "Temporary Redirect" - with unknown code - is expected to be nil - with well-known code: 208 - is expected to eq "Already Reported" - is expected to be frozen - with well-known code: 102 + with well-known code: 421 + is expected to eq "Misdirected Request" is expected to be frozen - is expected to eq "Processing" - with well-known code: 402 - is expected to eq "Payment Required" + with well-known code: 409 + is expected to eq "Conflict" is expected to be frozen - with well-known code: 205 + with well-known code: 428 is expected to be frozen - is expected to eq "Reset Content" - with well-known code: 206 + is expected to eq "Precondition Required" + with well-known code: 303 is expected to be frozen - is expected to eq "Partial Content" + is expected to eq "See Other" with well-known code: 207 is expected to be frozen is expected to eq "Multi-Status" - with well-known code: 412 - is expected to eq "Precondition Failed" - is expected to be frozen - with well-known code: 101 - is expected to eq "Switching Protocols" - is expected to be frozen - with well-known code: 405 + with well-known code: 100 + is expected to eq "Continue" is expected to be frozen - is expected to eq "Method Not Allowed" - with well-known code: 301 + with well-known code: 510 + is expected to eq "Not Extended" is expected to be frozen - is expected to eq "Moved Permanently" with well-known code: 504 is expected to be frozen is expected to eq "Gateway Timeout" - with well-known code: 507 - is expected to eq "Insufficient Storage" + with well-known code: 429 is expected to be frozen - with well-known code: 506 + is expected to eq "Too Many Requests" + with well-known code: 403 is expected to be frozen - is expected to eq "Variant Also Negotiates" - with well-known code: 303 + is expected to eq "Forbidden" + with well-known code: 412 + is expected to eq "Precondition Failed" + is expected to be frozen + with well-known code: 102 + is expected to be frozen + is expected to eq "Processing" + with well-known code: 413 + is expected to eq "Payload Too Large" is expected to be frozen - is expected to eq "See Other" with well-known code: 407 is expected to be frozen is expected to eq "Proxy Authentication Required" + with well-known code: 101 + is expected to eq "Switching Protocols" + is expected to be frozen with well-known code: 451 + is expected to be frozen is expected to eq "Unavailable For Legal Reasons" + with well-known code: 423 + is expected to eq "Locked" is expected to be frozen - with well-known code: 201 - is expected to eq "Created" + with well-known code: 304 + is expected to eq "Not Modified" is expected to be frozen - with well-known code: 203 - is expected to eq "Non-Authoritative Information" + with well-known code: 415 is expected to be frozen - with well-known code: 426 + is expected to eq "Unsupported Media Type" + with unknown code + is expected to be nil + with well-known code: 406 is expected to be frozen - is expected to eq "Upgrade Required" - with well-known code: 431 - is expected to eq "Request Header Fields Too Large" + is expected to eq "Not Acceptable" + with well-known code: 206 + is expected to eq "Partial Content" is expected to be frozen - with well-known code: 505 - is expected to eq "HTTP Version Not Supported" + with well-known code: 226 + is expected to eq "IM Used" is expected to be frozen - with well-known code: 404 + with well-known code: 502 + is expected to eq "Bad Gateway" is expected to be frozen - is expected to eq "Not Found" + with well-known code: 501 + is expected to be frozen + is expected to eq "Not Implemented" with well-known code: 417 + is expected to be frozen is expected to eq "Expectation Failed" + with well-known code: 511 is expected to be frozen - with well-known code: 300 + is expected to eq "Network Authentication Required" + with well-known code: 301 is expected to be frozen - is expected to eq "Multiple Choices" - with well-known code: 305 + is expected to eq "Moved Permanently" + with well-known code: 424 is expected to be frozen - is expected to eq "Use Proxy" - with well-known code: 416 - is expected to eq "Range Not Satisfiable" + is expected to eq "Failed Dependency" + with well-known code: 508 + is expected to eq "Loop Detected" is expected to be frozen - with well-known code: 421 - is expected to eq "Misdirected Request" + with well-known code: 302 + is expected to eq "Found" is expected to be frozen - with well-known code: 423 - is expected to eq "Locked" + with well-known code: 200 + is expected to eq "OK" is expected to be frozen - with well-known code: 413 + with well-known code: 405 + is expected to be frozen + is expected to eq "Method Not Allowed" + with well-known code: 414 + is expected to be frozen + is expected to eq "URI Too Long" + with well-known code: 505 + is expected to be frozen + is expected to eq "HTTP Version Not Supported" + with well-known code: 204 + is expected to eq "No Content" + is expected to be frozen + with well-known code: 205 + is expected to eq "Reset Content" is expected to be frozen - is expected to eq "Payload Too Large" with well-known code: 422 is expected to be frozen is expected to eq "Unprocessable Entity" - with well-known code: 414 - is expected to eq "URI Too Long" + with well-known code: 404 + is expected to eq "Not Found" is expected to be frozen - with well-known code: 500 - is expected to eq "Internal Server Error" + with well-known code: 410 is expected to be frozen - with well-known code: 415 - is expected to eq "Unsupported Media Type" + is expected to eq "Gone" + with well-known code: 431 + is expected to eq "Request Header Fields Too Large" is expected to be frozen - with well-known code: 408 + with well-known code: 400 + is expected to eq "Bad Request" is expected to be frozen - is expected to eq "Request Timeout" - with well-known code: 429 - is expected to eq "Too Many Requests" + with well-known code: 401 + is expected to eq "Unauthorized" is expected to be frozen - with well-known code: 100 - is expected to eq "Continue" + with well-known code: 300 + is expected to eq "Multiple Choices" is expected to be frozen - with well-known code: 501 + with well-known code: 411 + is expected to eq "Length Required" is expected to be frozen - is expected to eq "Not Implemented" - #unprocessable_entity? - when code is higher than 422 + with well-known code: 500 + is expected to be frozen + is expected to eq "Internal Server Error" + #service_unavailable? + when code is 503 + is expected to equal true + when code is lower than 503 is expected to equal false - when code is lower than 422 + when code is higher than 503 is expected to equal false - when code is 422 - is expected to equal true - #moved_permanently? - when code is 301 + with 3xx codes + is not #success? + is #redirect? + is not #server_error? + is not #client_error? + is not #informational? + #created? + when code is lower than 201 + is expected to equal false + when code is 201 is expected to equal true - when code is lower than 301 + when code is higher than 201 is expected to equal false - when code is higher than 301 + with 5xx codes + is not #success? + is not #informational? + is not #client_error? + is not #redirect? + is #server_error? + #forbidden? + when code is lower than 403 is expected to equal false - ::SYMBOLS - [400] - is expected to equal :bad_request - [200] - is expected to equal :ok - #not_found? - when code is 404 - is expected to equal true - when code is higher than 404 + when code is higher than 403 is expected to equal false - when code is lower than 404 + when code is 403 + is expected to equal true + #unavailable_for_legal_reasons? + when code is 451 + is expected to equal true + when code is higher than 451 is expected to equal false - #failed_dependency? - when code is higher than 424 + when code is lower than 451 is expected to equal false - when code is lower than 424 + #code + is expected to eq 200 + is expected to be a kind of Integer + #accepted? + when code is higher than 202 is expected to equal false - when code is 424 + when code is 202 is expected to equal true - #misdirected_request? - when code is lower than 421 + when code is lower than 202 is expected to equal false - when code is 421 - is expected to equal true - when code is higher than 421 + #multi_status? + when code is lower than 207 is expected to equal false - #partial_content? - when code is 206 + when code is 207 is expected to equal true - when code is higher than 206 + when code is higher than 207 is expected to equal false - when code is lower than 206 + #to_sym + with well-known code: 429 + is expected to equal :too_many_requests + with well-known code: 204 + is expected to equal :no_content + with well-known code: 415 + is expected to equal :unsupported_media_type + with well-known code: 202 + is expected to equal :accepted + with well-known code: 401 + is expected to equal :unauthorized + with well-known code: 206 + is expected to equal :partial_content + 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: 203 + is expected to equal :non_authoritative_information + with well-known code: 308 + is expected to equal :permanent_redirect + with well-known code: 505 + is expected to equal :http_version_not_supported + with well-known code: 451 + is expected to equal :unavailable_for_legal_reasons + with well-known code: 504 + is expected to equal :gateway_timeout + with well-known code: 305 + is expected to equal :use_proxy + with well-known code: 408 + is expected to equal :request_timeout + with well-known code: 205 + is expected to equal :reset_content + with well-known code: 407 + is expected to equal :proxy_authentication_required + with well-known code: 510 + is expected to equal :not_extended + with well-known code: 423 + is expected to equal :locked + with well-known code: 424 + is expected to equal :failed_dependency + with well-known code: 414 + is expected to equal :uri_too_long + with well-known code: 102 + is expected to equal :processing + with well-known code: 506 + is expected to equal :variant_also_negotiates + with well-known code: 405 + is expected to equal :method_not_allowed + with well-known code: 402 + is expected to equal :payment_required + with well-known code: 503 + is expected to equal :service_unavailable + with well-known code: 403 + is expected to equal :forbidden + with well-known code: 508 + is expected to equal :loop_detected + with well-known code: 431 + is expected to equal :request_header_fields_too_large + with well-known code: 400 + is expected to equal :bad_request + with well-known code: 501 + is expected to equal :not_implemented + with well-known code: 412 + is expected to equal :precondition_failed + with well-known code: 404 + is expected to equal :not_found + with well-known code: 422 + is expected to equal :unprocessable_entity + with well-known code: 428 + is expected to equal :precondition_required + with well-known code: 411 + is expected to equal :length_required + with well-known code: 307 + is expected to equal :temporary_redirect + with well-known code: 301 + is expected to equal :moved_permanently + with well-known code: 511 + is expected to equal :network_authentication_required + with well-known code: 302 + is expected to equal :found + with well-known code: 417 + is expected to equal :expectation_failed + with well-known code: 409 + is expected to equal :conflict + with well-known code: 200 + is expected to equal :ok + 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: 300 + is expected to equal :multiple_choices + with well-known code: 100 + is expected to equal :continue + with well-known code: 410 + is expected to equal :gone + with well-known code: 426 + is expected to equal :upgrade_required + with well-known code: 201 + is expected to equal :created + with unknown code + is expected to be nil + with well-known code: 207 + is expected to equal :multi_status + with well-known code: 208 + is expected to equal :already_reported + with well-known code: 416 + is expected to equal :range_not_satisfiable + with well-known code: 406 + is expected to equal :not_acceptable + with well-known code: 500 + is expected to equal :internal_server_error + with well-known code: 502 + is expected to equal :bad_gateway + with well-known code: 226 + is expected to equal :im_used + with well-known code: 303 + is expected to equal :see_other + with well-known code: 304 + is expected to equal :not_modified + #precondition_failed? + when code is lower than 412 is expected to equal false - #method_not_allowed? - when code is 405 + when code is 412 is expected to equal true - when code is lower than 405 + when code is higher than 412 is expected to equal false - when code is higher than 405 + #not_implemented? + when code is higher than 501 is expected to equal false - #upgrade_required? - when code is lower than 426 + when code is lower than 501 is expected to equal false - when code is higher than 426 + when code is 501 + is expected to equal true + with 2xx codes + is not #client_error? + is not #redirect? + is not #informational? + is not #server_error? + is #success? + #processing? + when code is lower than 102 is expected to equal false - when code is 426 + when code is 102 is expected to equal true - #expectation_failed? - when code is higher than 417 + when code is higher than 102 is expected to equal false - when code is lower than 417 + #unauthorized? + when code is lower than 401 is expected to equal false - when code is 417 - is expected to equal true - #no_content? - when code is 204 + when code is 401 is expected to equal true - when code is higher than 204 - is expected to equal false - when code is lower than 204 + when code is higher than 401 is expected to equal false - with 4xx codes - is not #success? - is not #server_error? - is not #redirect? - is #client_error? - is not #informational? - #internal_server_error? - when code is 500 + #continue? + when code is 100 is expected to equal true - when code is lower than 500 + when code is higher than 100 is expected to equal false - when code is higher than 500 + when code is lower than 100 is expected to equal false - #bad_request? - when code is higher than 400 + #upgrade_required? + when code is lower than 426 is expected to equal false - when code is 400 + when code is 426 is expected to equal true - when code is lower than 400 + when code is higher than 426 is expected to equal false - #unavailable_for_legal_reasons? - when code is lower than 451 + #failed_dependency? + when code is higher than 424 is expected to equal false - when code is higher than 451 + when code is lower than 424 is expected to equal false - when code is 451 + when code is 424 is expected to equal true - with 2xx codes - is not #redirect? - is not #informational? - is not #client_error? - is #success? - is not #server_error? - #request_timeout? - when code is lower than 408 + #gone? + when code is higher than 410 is expected to equal false - when code is higher than 408 + when code is lower than 410 is expected to equal false - when code is 408 + when code is 410 is expected to equal true - #not_acceptable? - when code is 406 + #not_found? + when code is 404 is expected to equal true - when code is lower than 406 - is expected to equal false - when code is higher than 406 - is expected to equal false - #variant_also_negotiates? - when code is higher than 506 + when code is higher than 404 is expected to equal false - when code is lower than 506 + when code is lower than 404 is expected to equal false - when code is 506 - is expected to equal true #reset_content? - when code is higher than 205 - is expected to equal false - when code is lower than 205 - is expected to equal false when code is 205 is expected to equal true - #too_many_requests? - when code is lower than 429 - is expected to equal false - when code is higher than 429 - is expected to equal false - when code is 429 - is expected to equal true - #http_version_not_supported? - when code is lower than 505 + when code is lower than 205 is expected to equal false - when code is 505 - is expected to equal true - when code is higher than 505 + when code is higher than 205 is expected to equal false #ok? - when code is 200 - is expected to equal true when code is higher than 200 is expected to equal false + when code is 200 + is expected to equal true when code is lower than 200 is expected to equal false - #continue? - when code is 100 - is expected to equal true - when code is higher than 100 + #insufficient_storage? + when code is lower than 507 is expected to equal false - when code is lower than 100 + when code is higher than 507 is expected to equal false - #see_other? - when code is 303 + when code is 507 is expected to equal true - when code is higher than 303 - is expected to equal false - when code is lower than 303 - is expected to equal false - #gone? - when code is 410 + #request_header_fields_too_large? + when code is 431 is expected to equal true - when code is higher than 410 + when code is lower than 431 is expected to equal false - when code is lower than 410 + when code is higher than 431 is expected to equal false - #created? - when code is higher than 201 + #non_authoritative_information? + when code is higher than 203 is expected to equal false - when code is 201 + when code is lower than 203 + is expected to equal false + when code is 203 is expected to equal true - when code is lower than 201 + #range_not_satisfiable? + when code is lower than 416 is expected to equal false - #accepted? - when code is lower than 202 + when code is higher than 416 is expected to equal false - when code is 202 + when code is 416 is expected to equal true - when code is higher than 202 + #precondition_required? + when code is lower than 428 is expected to equal false - #permanent_redirect? - when code is 308 + when code is 428 is expected to equal true - when code is higher than 308 + when code is higher than 428 is expected to equal false - when code is lower than 308 + #payment_required? + when code is 402 + is expected to equal true + when code is higher than 402 + is expected to equal false + when code is lower than 402 is expected to equal false #network_authentication_required? when code is 511 is expected to equal true + when code is higher than 511 + is expected to equal false when code is lower than 511 is expected to equal false - when code is higher than 511 + #uri_too_long? + when code is lower than 414 is expected to equal false - .new - accepts any object that responds to #to_i - fails if given value does not respond to #to_i - #insufficient_storage? - when code is lower than 507 + when code is 414 + is expected to equal true + when code is higher than 414 is expected to equal false - when code is 507 + #loop_detected? + when code is higher than 508 + is expected to equal false + when code is 508 is expected to equal true - when code is higher than 507 + when code is lower than 508 is expected to equal false - #service_unavailable? - when code is higher than 503 + #too_many_requests? + when code is lower than 429 is expected to equal false - when code is lower than 503 + when code is 429 + is expected to equal true + when code is higher than 429 is expected to equal false - when code is 503 + #already_reported? + when code is higher than 208 + is expected to equal false + when code is lower than 208 + is expected to equal false + when code is 208 is expected to equal true - #unsupported_media_type? - when code is 415 + #misdirected_request? + when code is 421 is expected to equal true - when code is lower than 415 + when code is higher than 421 is expected to equal false - when code is higher than 415 + when code is lower than 421 + is expected to equal false + #partial_content? + when code is 206 + is expected to equal true + when code is higher than 206 + is expected to equal false + when code is lower than 206 is expected to equal false - #code - is expected to eq 200 - is expected to be a kind of Integer #proxy_authentication_required? when code is higher than 407 is expected to equal false @@ -2325,559 +2206,721 @@ is expected to equal false when code is 407 is expected to equal true - with 3xx codes - is not #success? - is not #client_error? - is not #server_error? - is not #informational? - is #redirect? - with 5xx codes - is not #success? - is #server_error? - is not #client_error? - is not #informational? - is not #redirect? - #uri_too_long? - when code is 414 - is expected to equal true - when code is higher than 414 + #no_content? + when code is higher than 204 is expected to equal false - when code is lower than 414 + when code is 204 + is expected to equal true + when code is lower than 204 is expected to equal false - #inspect - returns quoted code and reason phrase - #loop_detected? - when code is lower than 508 + #internal_server_error? + when code is lower than 500 is expected to equal false - when code is higher than 508 + when code is 500 + is expected to equal true + when code is higher than 500 is expected to equal false - when code is 508 + #conflict? + when code is 409 is expected to equal true - #switching_protocols? - when code is lower than 101 + when code is higher than 409 is expected to equal false - when code is higher than 101 + when code is lower than 409 is expected to equal false - when code is 101 + #payload_too_large? + when code is 413 is expected to equal true - #temporary_redirect? - when code is higher than 307 + when code is lower than 413 is expected to equal false - when code is lower than 307 + when code is higher than 413 is expected to equal false - when code is 307 - is expected to equal true - #bad_gateway? - when code is lower than 502 + ::SYMBOLS + [200] + is expected to equal :ok + [400] + is expected to equal :bad_request + #see_other? + when code is higher than 303 is expected to equal false - when code is higher than 502 + when code is lower than 303 is expected to equal false - when code is 502 + when code is 303 is expected to equal true - #request_header_fields_too_large? - when code is lower than 431 + #locked? + when code is lower than 423 is expected to equal false - when code is higher than 431 + when code is higher than 423 is expected to equal false - when code is 431 + when code is 423 is expected to equal true #use_proxy? - when code is 305 - is expected to equal true - when code is lower than 305 - is expected to equal false when code is higher than 305 is expected to equal false - #multiple_choices? - when code is lower than 300 + when code is lower than 305 is expected to equal false - when code is 300 + when code is 305 is expected to equal true - when code is higher than 300 - is expected to equal false - #unauthorized? - when code is higher than 401 - is expected to equal false - when code is 401 + #expectation_failed? + when code is 417 is expected to equal true - when code is lower than 401 + when code is higher than 417 is expected to equal false - #not_modified? - when code is higher than 304 + when code is lower than 417 is expected to equal false - when code is 304 - is expected to equal true - when code is lower than 304 + #bad_request? + when code is lower than 400 is expected to equal false - #not_extended? - when code is 510 + when code is 400 is expected to equal true - when code is higher than 510 - is expected to equal false - when code is lower than 510 + when code is higher than 400 is expected to equal false .coerce is aliased as `.[]` fails if coercion failed + with Numeric + coerces as Fixnum code + with Symbol + coerces symbolized reasons + fails when symbolized reason is unknown with String fails when reason is unknown coerces reasons - with Symbol - fails when symbolized reason is unknown - coerces symbolized reasons - with Numeric - coerces as Fixnum code - -HTTP::Options json - defaults to nil - may be specified with with_json data + #length_required? + when code is higher than 411 + is expected to equal false + when code is 411 + is expected to equal true + when code is lower than 411 + is expected to equal false + with 1xx codes + is not #success? + is not #server_error? + is not #client_error? + is #informational? + is not #redirect? + #request_timeout? + when code is lower than 408 + is expected to equal false + when code is higher than 408 + is expected to equal false + when code is 408 + is expected to equal true + #http_version_not_supported? + when code is 505 + is expected to equal true + when code is higher than 505 + is expected to equal false + when code is lower than 505 + is expected to equal false + #multiple_choices? + when code is lower than 300 + is expected to equal false + when code is higher than 300 + is expected to equal false + when code is 300 + is expected to equal true -HTTP::Options merge - supports another Options - merges as excepted in complex cases - supports a Hash +HTTP::Features::Instrumentation + logging the response + should log the response + logging the request + should log the request -HTTP::Request - provides a #verb accessor - provides a #scheme accessor - includes HTTP::Headers::Mixin - requires URI to have scheme part - sets given headers - #redirect - presets new Host header - uri - is expected to eq # - with relative URL given - keeps Host header - 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 # - verb - is expected to eq :post - body - is expected to eq # - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - verb - is expected to eq :post - body - is expected to eq # - with new verb given - verb - is expected to equal :get - with schema-less absolute URL 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 - with relative URL that misses leading slash given - keeps Host header - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - body - is expected to eq # - with original URI having non-standard port - uri - is expected to eq # - uri - is expected to eq # - verb - is expected to eq :post - with URL with non-standard port given - presets new Host header - verb - is expected to eq :post - body - is expected to eq # - proxy - is expected to eq {:proxy_password=>"adams", :proxy_username=>"douglas"} - uri - 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 non-ASCII path - encodes non-ASCII path 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 fragment - omits fragment part - when URI contains encoded query - does not unencodes query part - User-Agent header - was not given - is expected to eq "http.rb/4.4.1" - was explicitly given - is expected to eq "MrCrawly/123" +HTTP::Options new + supports a Options instance + with a Hash + coerces :form correctly + coerces :headers correctly + coerces :proxy correctly + coerces :response correctly -HTTP::Response - includes HTTP::Headers::Mixin - #cookies - contains cookies limited to domain of request uri - is expected to be a kind of HTTP::CookieJar - contains cookies without domain restriction - does not contains cookies limited to non-requeted uri - #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 - #flush - returns response self-reference - flushes body - charset - with Content-Type: text/html; charset=utf-8 - is expected to eq "utf-8" - without Content-Type header - is expected to be nil - with Content-Type: text/html - is expected to be nil - #parse - with unknown content type - raises HTTP::Error - with explicitly given mime type - supports MIME type aliases - ignores mime_type of response - with known content type - returns parsed body - #connection - returns the connection object used to instantiate the response - to_a - returns a Rack-like array - #content_length - without Content-Length header - is expected to be nil - with invalid Content-Length - is expected to be nil - with Content-Length: 5 - is expected to eq 5 - mime_type - without Content-Type header - is expected to be nil - with Content-Type: text/html; charset=utf-8 - is expected to eq "text/html" - with Content-Type: text/html - is expected to eq "text/html" +HTTP::Options proxy + defaults to {} + accepts proxy address, port, username, and password + may be specified with with_proxy HTTP unifies socket errors into HTTP::ConnectionError + posting forms to resources + is easy + loading binary data + is encoded as bytes + passing a string encoding type + finds encoding + .basic_auth + fails when :pass is not given + fails when :user is not given + fails when options is not a Hash + sets Authorization header with proper BasicAuth value + .auth + accepts any #to_s object + sets Authorization header to the given value + posting with an explicit body + is easy + .nodelay + sets TCP_NODELAY on the underlying socket + with redirects + is easy for 302 + is easy for 301 + .persistent + with timeout specified + sets keep_alive_timeout + with host and block given + returns last evaluation of last expression (PENDING: Temporarily skipped with xit) + auto-closes connection (PENDING: Temporarily skipped with xit) + 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) + 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 URI instance + is easy + 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 .cookies - properly merges cookies properly works with cookie jars from response passes correct `Cookie` header properly merges Cookie headers and cookies + properly merges cookies head requests is easy - passing a string encoding type - finds encoding loading endpoint with charset uses charset from headers with encoding option respects option - .nodelay - sets TCP_NODELAY on the underlying socket - .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 host and block given - auto-closes connection (PENDING: Temporarily skipped with xit) - returns last evaluation of last expression (PENDING: Temporarily skipped with xit) - with timeout specified - sets keep_alive_timeout + .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 .use turns on given feature - with :normalize_uri - uses the custom URI Normalizer method - normalizes URI - uses the default URI normalizer with :auto_inflate returns decoded body - returns deflated body returns raw body when Content-Encoding type is missing + returns deflated body with :auto_deflate sends gzipped body sends deflated body - loading binary data - is encoded as bytes + with :normalize_uri + normalizes URI + uses the default URI normalizer + uses the custom URI Normalizer method + loading text with no charset + is binary encoded .via - proxy with authentication - responds with 407 when wrong credentials given - proxies the request - responds with 407 if no credentials given - responds with the endpoint's body - ssl - responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) - responds with 407 when wrong credentials given (PENDING: Temporarily skipped with xcontext) - responds with 407 if no credentials given (PENDING: Temporarily skipped with xcontext) anonymous proxy responds with the endpoint's body - raises an argument error if no port given proxies the request + raises an argument error if no port given ignores credentials ssl responds with the endpoint's body (PENDING: Temporarily skipped with xcontext) ignores credentials (PENDING: Temporarily skipped with xcontext) - .auth - accepts any #to_s object - sets Authorization header to the given value - .timeout - specifying a null timeout - sets timeout_class to Null - specifying per operation timeouts - sets timeout_class to PerOperation - sets given timeout options - specifying a global timeout - sets given timeout option - sets timeout_class to Global - posting forms to resources - is easy - loading text with no charset - is binary encoded - with redirects - is easy for 302 - is easy for 301 - .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 - getting resources - is easy - with headers - is easy - 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 - with two leading slashes in path - is allowed - with query string parameters - is easy - with query string parameters in the URI and opts hash - includes both - with URI instance - is easy - posting with an explicit body - is easy + proxy with authentication + responds with the endpoint's body + responds with 407 when wrong credentials given + responds with 407 if no credentials given + proxies the request + 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) + +HTTP::Headers + is Enumerable + #keys + returns uniq keys only + normalizes keys + .empty? + initially + is expected to equal true + when last header was removed + is expected to equal true + when header exists + is expected to equal false + #delete + fails with empty header name + normalizes header name + fails with invalid header name + removes given header + #to_a + returns an Array + returns Array of key/value pairs with normalized keys + #[] + when header does not exists + returns nil + when header has a single value + returns it returns a single value + normalizes header name + when header has a multiple values + returns array of associated values + normalizes header name + #include? + tells whenever given headers is set or not + normalizes given header name + #== + sensitive to headers order + compares header keys and values + allows comparison with Array of key/value pairs + sensitive to header values order + #dup + is expected not to equal ["Content-Type", "application/json"] + has headers copied + is expected to be a kind of HTTP::Headers + modifying a copy + does not affects original headers + modifies dupped copy + #[]= + allows set multiple values + overwrites previous value + sets header value + normalizes header name + #add + fails with invalid header name + sets header value + fails with empty header name + normalizes header name + appends new value if header exists + allows append multiple values + #merge! + overwrites existing values + appends other headers, not presented in base + leaves headers not presented in other as is + #inspect + is expected to eq "#[\"hoo=ray\", \"woo=hoo\"]}>" + #get + fails with invalid header name + normalizes header name + returns array of associated values + fails with empty header name + when header does not exists + returns empty array + .coerce + is aliased as .[] + accepts any object that respond to #to_h + accepts any object that respond to #to_a + fails if given object cannot be coerced + accepts any object that respond to #to_hash + with duplicate header keys (mixed case) + adds all headers + #hash + equals if two headers equals + #set + normalizes header name + fails with empty header name + sets header value + allows set multiple values + overwrites previous value + fails with invalid header name + #merge + leaves headers not presented in other as is + appends other headers, not presented in base + overwrites existing values + 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 + #each + yields headers in the same order they were added + returns Enumerator if no block given + yields each key/value pair separatedly + returns self instance if block given + #to_h + returns Hash with normalized keys + returns a Hash + for a header with multiple values + provides an array of values + for a header with single value + provides a value as is HTTP::Response::Parser - whole response in one part - parses body - parses headers response in many parts parses body parses headers + whole response in one part + parses headers + parses body + +HTTP::Client + #perform + calls finish_response once body was fully flushed + 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 + when uses chunked transfer encoding + properly reads body + with broken body (too early closed connection) + raises HTTP::ConnectionError + passing json + encodes given object + working with SSL + just works (PENDING: Temporarily skipped with xdescribe) + fails with OpenSSL::SSL::SSLError if host mismatch (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 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) + with a change in host + errors (PENDING: Temporarily skipped with xdescribe) + without a host + infers host from persistent config (PENDING: Temporarily skipped with xdescribe) + with a socket issue + transparently reopens (PENDING: Temporarily skipped with xdescribe) + when reading a cached body + succeeds (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) + when disabled + opens new sockets (PENDING: Temporarily skipped with xdescribe) + 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) + without timeouts + works (PENDING: Temporarily skipped with xdescribe) + with a per operation timeout + works + connection + of 1 + does not time out + read + of 2.5 + does not time out + of 0 + times out (PENDING: Temporarily skipped with xit) + without timeouts + works + parsing params + properly encodes colons + does not modifies query part if no params were given + does not corrupts index-less arrays + does not convert newlines into \r\n before encoding string values + combines GET params from the URI with the passed in params + merges duplicate values + accepts params within the provided URL + passing multipart form data + creates multipart form data object + creates url encoded form data object + when passing an HTTP::FormData object directly + creates url encoded form data object + #request + with explicitly given `Host` header + keeps `Host` header as is (PENDING: Temporarily skipped with xit) + 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) + when :auto_deflate was specified + sets Content-Encoding header + deletes Content-Length header + and there is no body + doesn't set Content-Encoding header + following redirects + fails if max amount of hops reached + prepends previous request uri scheme and host if needed + 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) + 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 + connection reuse + when enabled + re-uses the socket + without a host + infers host from persistent config + on a mixed state + re-opens the connection + with a change in host + errors + with a socket issue + transparently reopens + when reading a cached body + succeeds + when trying to read a stale body + errors + when disabled + opens new sockets + +HTTP::Options body + may be specified with with_body + defaults to nil + +HTTP::Features::AutoDeflate + accepts string as method + raises error for wrong type + accepts gzip method + accepts deflate method + uses gzip by default + #deflated_body + when method is gzip + caches compressed content when size is called + returns object which yields gzipped content of the given body + when method is deflate + returns object which yields deflated content of the given body + caches compressed content when size is called + +HTTP::Options form + may be specified with with_form_data + defaults to nil + +HTTP::Options features + raises error for not supported features + defaults to be empty + accepts feature name with its options in array + accepts plain symbols in array + +HTTP::URI + sets default ports for HTTP URIs + sets default ports for HTTPS URIs + knows URI schemes + #dup + doesn't share internal value between duplicates + +HTTP::Request::Writer + #stream + when Transfer-Encoding is chunked + writes encoded content and omits Content-Length + when Content-Length header is set + keeps the given value + when server won't accept any more data + aborts silently + when body is empty + doesn't write anything to the socket and sets Content-Length + when multiple headers are set + separates headers with carriage return and line feed + when writing to socket raises an exception + raises a ConnectionError + when body is nonempty + writes it to the socket and sets Content-Length + +HTTP::Options merge + supports another Options + merges as excepted in complex cases + supports a Hash 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.persistent with host and block given returns last evaluation of last expression + # Temporarily skipped with xit + # ./spec/lib/http_spec.rb:265 - 2) HTTP::Client working with SSL just works - # Temporarily skipped with xdescribe - # ./spec/lib/http/client_spec.rb:304 + 2) HTTP.persistent with host and block given auto-closes connection + # Temporarily skipped with xit + # ./spec/lib/http_spec.rb:269 - 3) 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 + 3) HTTP.persistent with host only given + # Temporarily skipped with xit + # ./spec/lib/http_spec.rb:261 + + 4) HTTP.persistent with host only given + # Temporarily skipped with xit + # ./spec/lib/http_spec.rb:260 + + 5) HTTP.via anonymous proxy ssl responds with the endpoint's body + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:99 + + 6) HTTP.via anonymous proxy ssl ignores credentials + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:104 + + 7) HTTP.via proxy with authentication ssl responds with the endpoint's body + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:135 - 4) HTTP::Client working with SSL with a global timeout errors if connecting takes too long + 8) HTTP.via proxy with authentication ssl responds with 407 if no credentials given + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:145 + + 9) HTTP.via proxy with authentication ssl responds with 407 when wrong credentials given + # Temporarily skipped with xcontext + # ./spec/lib/http_spec.rb:140 + + 10) HTTP::Client working with SSL just works # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:75 + # ./spec/lib/http/client_spec.rb:304 - 5) HTTP::Client working with SSL with a global timeout it resets state when reusing connections does not timeout + 11) HTTP::Client working with SSL fails with OpenSSL::SSL::SSLError if host mismatch # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:93 + # ./spec/lib/http/client_spec.rb:309 - 6) HTTP::Client working with SSL with a per operation timeout works + 12) HTTP::Client working with SSL with a per operation timeout works # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:29 - 7) HTTP::Client working with SSL with a per operation timeout read of 2.5 does not time out + 13) 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:37 + + 14) HTTP::Client working with SSL with a per operation timeout read of 2.5 does not time out # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:55 - 8) HTTP::Client working with SSL with a per operation timeout read of 0 times out + 15) 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 - 9) 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:37 - - 10) HTTP::Client working with SSL without timeouts works - # Temporarily skipped with xdescribe - # ./spec/support/http_handling_shared.rb:7 - - 11) HTTP::Client working with SSL with SSL options instead of a context just works + 16) HTTP::Client working with SSL with SSL options instead of a context just works # Temporarily skipped with xdescribe # ./spec/lib/http/client_spec.rb:319 - 12) HTTP::Client working with SSL connection reuse when enabled re-uses the socket + 17) HTTP::Client working with SSL connection reuse when enabled re-uses the socket # Temporarily skipped with xdescribe # ./spec/support/http_handling_shared.rb:117 - 13) 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 - - 14) HTTP::Client working with SSL connection reuse when enabled with a change in host errors + 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:175 - 15) HTTP::Client working with SSL connection reuse when enabled when trying to read a stale body errors + 19) 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:135 + # ./spec/support/http_handling_shared.rb:112 - 16) HTTP::Client working with SSL connection reuse when enabled with a socket issue transparently reopens + 20) 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 - 17) HTTP::Client working with SSL connection reuse when enabled when reading a cached body succeeds + 21) 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 - 18) HTTP::Client working with SSL connection reuse when enabled on a mixed state re-opens the connection + 22) 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 - 19) HTTP::Client working with SSL connection reuse when disabled opens new sockets + 23) 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:184 + # ./spec/support/http_handling_shared.rb:135 - 20) HTTP::Client#request with explicitly given `Host` header keeps `Host` header as is - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:241 + 24) HTTP::Client working with SSL connection reuse when disabled opens new sockets + # Temporarily skipped with xdescribe + # ./spec/support/http_handling_shared.rb:184 - 21) 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 + 25) 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 - 22) HTTP::Client#request with non-ASCII URLs theoretically works like a charm - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:225 + 26) 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 - 23) 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::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 - 24) HTTP::Client following redirects with non-ASCII URLs theoretically works like a charm - # Temporarily skipped with xit - # ./spec/lib/http/client_spec.rb:91 + 28) HTTP::Client working with SSL without timeouts works + # Temporarily skipped with xdescribe + # ./spec/support/http_handling_shared.rb:7 - 25) HTTP::Client with a per operation timeout read of 0 times out + 29) HTTP::Client with a per operation timeout read of 0 times out # Temporarily skipped with xit # ./spec/support/http_handling_shared.rb:47 - 26) HTTP.persistent with host only given + 30) HTTP::Client#request with explicitly given `Host` header keeps `Host` header as is # Temporarily skipped with xit - # ./spec/lib/http_spec.rb:261 + # ./spec/lib/http/client_spec.rb:241 - 27) HTTP.persistent with host only given + 31) HTTP::Client#request with non-ASCII URLs theoretically works like a charm # Temporarily skipped with xit - # ./spec/lib/http_spec.rb:260 + # ./spec/lib/http/client_spec.rb:225 - 28) HTTP.persistent with host and block given auto-closes connection + 32) HTTP::Client#request with non-ASCII URLs works like a charm in real world # Temporarily skipped with xit - # ./spec/lib/http_spec.rb:269 + # ./spec/lib/http/client_spec.rb:230 - 29) HTTP.persistent with host and block given returns last evaluation of last expression + 33) HTTP::Client following redirects with non-ASCII URLs theoretically works like a charm # 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 when wrong credentials given - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:140 - - 32) HTTP.via proxy with authentication ssl responds with 407 if no credentials given - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:145 - - 33) HTTP.via anonymous proxy ssl responds with the endpoint's body - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:99 + # ./spec/lib/http/client_spec.rb:91 - 34) HTTP.via anonymous proxy ssl ignores credentials - # Temporarily skipped with xcontext - # ./spec/lib/http_spec.rb:104 + 34) 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 -Top 10 slowest examples (9.53 seconds, 75.9% of total time): +Top 10 slowest examples (10.54 seconds, 73.8% of total time): HTTP::Client with a global timeout it resets state when reusing connections does not timeout - 4.09 seconds ./spec/support/http_handling_shared.rb:93 + 4.11 seconds ./spec/support/http_handling_shared.rb:93 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.04 seconds ./spec/support/http_handling_shared.rb:55 + HTTP unifies socket errors into HTTP::ConnectionError + 1.72 seconds ./spec/lib/http_spec.rb:455 HTTP::Client with a global timeout errors if connecting takes too long 1.02 seconds ./spec/support/http_handling_shared.rb:75 HTTP::Client with a global timeout errors if reading takes too long - 1.02 seconds ./spec/support/http_handling_shared.rb:83 - HTTP unifies socket errors into HTTP::ConnectionError - 0.74422 seconds ./spec/lib/http_spec.rb:455 + 1.01 seconds ./spec/support/http_handling_shared.rb:83 HTTP getting resources with a large request body with `.timeout({:read=>2, :write=>2, :connect=>2})` writes the whole body - 0.17527 seconds ./spec/lib/http_spec.rb:64 - HTTP.via anonymous proxy proxies the request - 0.14472 seconds ./spec/lib/http_spec.rb:79 - HTTP getting resources with a large request body with `.timeout(6)` writes the whole body - 0.1224 seconds ./spec/lib/http_spec.rb:64 + 0.16367 seconds ./spec/lib/http_spec.rb:64 + HTTP::Client with a per operation timeout works + 0.14493 seconds ./spec/support/http_handling_shared.rb:29 HTTP getting resources with a large request body with `.timeout(:null)` writes the whole body - 0.1015 seconds ./spec/lib/http_spec.rb:64 - HTTP.via proxy with authentication responds with the endpoint's body - 0.08467 seconds ./spec/lib/http_spec.rb:119 + 0.12511 seconds ./spec/lib/http_spec.rb:64 + HTTP getting resources with a large request body with `.timeout(6)` writes the whole body + 0.11887 seconds ./spec/lib/http_spec.rb:64 + HTTP::Client connection reuse when enabled re-uses the socket + 0.08374 seconds ./spec/support/http_handling_shared.rb:117 Top 10 slowest example groups: HTTP::Client - 0.13944 seconds average (8.92 seconds / 64 examples) ./spec/lib/http/client_spec.rb:8 + 0.14594 seconds average (9.34 seconds / 64 examples) ./spec/lib/http/client_spec.rb:8 HTTP - 0.04479 seconds average (2.82 seconds / 63 examples) ./spec/lib/http_spec.rb:9 + 0.06224 seconds average (3.92 seconds / 63 examples) ./spec/lib/http_spec.rb:9 + HTTP::Headers::Mixin + 0.00665 seconds average (0.01994 seconds / 3 examples) ./spec/lib/http/headers/mixin_spec.rb:3 + HTTP::Options body + 0.00526 seconds average (0.01052 seconds / 2 examples) ./spec/lib/http/options/body_spec.rb:3 HTTP::Connection - 0.01385 seconds average (0.02771 seconds / 2 examples) ./spec/lib/http/connection_spec.rb:3 - HTTP::Response::Parser - 0.0043 seconds average (0.01722 seconds / 4 examples) ./spec/lib/http/response/parser_spec.rb:3 + 0.00467 seconds average (0.00934 seconds / 2 examples) ./spec/lib/http/connection_spec.rb:3 HTTP::Request - 0.00328 seconds average (0.14738 seconds / 45 examples) ./spec/lib/http/request_spec.rb:4 - HTTP::Response::Body - 0.00263 seconds average (0.02101 seconds / 8 examples) ./spec/lib/http/response/body_spec.rb:3 - HTTP::Redirector - 0.00201 seconds average (0.07232 seconds / 36 examples) ./spec/lib/http/redirector_spec.rb:3 - HTTP::Options proxy - 0.00189 seconds average (0.00566 seconds / 3 examples) ./spec/lib/http/options/proxy_spec.rb:3 - HTTP::Features::AutoDeflate - 0.00177 seconds average (0.01597 seconds / 9 examples) ./spec/lib/http/features/auto_deflate_spec.rb:3 - HTTP::Features::Instrumentation - 0.00177 seconds average (0.00353 seconds / 2 examples) ./spec/lib/http/features/instrumentation_spec.rb:3 + 0.00452 seconds average (0.20334 seconds / 45 examples) ./spec/lib/http/request_spec.rb:4 + HTTP::Response::Parser + 0.00382 seconds average (0.01527 seconds / 4 examples) ./spec/lib/http/response/parser_spec.rb:3 + HTTP::Options form + 0.0033 seconds average (0.00661 seconds / 2 examples) ./spec/lib/http/options/form_spec.rb:3 + HTTP::Request::Writer + 0.0033 seconds average (0.02307 seconds / 7 examples) ./spec/lib/http/request/writer_spec.rb:4 + HTTP::Options merge + 0.00319 seconds average (0.00957 seconds / 3 examples) ./spec/lib/http/options/merge_spec.rb:3 -Finished in 12.55 seconds (files took 1.24 seconds to load) +Finished in 14.28 seconds (files took 2.47 seconds to load) 811 examples, 0 failures, 34 pending -Randomized with seed 23862 +Randomized with seed 12762 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. @@ -2915,12 +2958,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/2987915/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2987915/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/300240 and its subdirectories -I: Current time: Sun Jul 7 03:46:18 -12 2024 -I: pbuilder-time-stamp: 1720367178 +I: removing directory /srv/workspace/pbuilder/2987915 and its subdirectories +I: Current time: Mon Jun 5 23:25:12 +14 2023 +I: pbuilder-time-stamp: 1685957112