Diff of the two buildlogs: -- --- b1/build.log 2025-03-15 22:47:33.057904947 +0000 +++ b2/build.log 2025-03-15 22:49:18.061209631 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Apr 17 17:09:55 -12 2026 -I: pbuilder-time-stamp: 1776488995 +I: Current time: Sun Mar 16 12:47:36 +14 2025 +I: pbuilder-time-stamp: 1742078856 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -30,52 +30,84 @@ dpkg-source: info: applying 0007-Skip-test-that-hits-the-network.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/858644/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2517928/tmp/hooks/D01_modify_environment starting +debug: Running on codethink04-arm64. +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 Mar 15 22:47 /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/2517928/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2517928/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + 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]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='dac78b7e45ba4ab19d0c2460958d0969' - 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='858644' - PS1='# ' - PS2='> ' + INVOCATION_ID=61472d108b5c422eb7c9b17a79022a05 + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-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=2517928 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.sYG5x4uz/pbuilderrc_MfOW --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.sYG5x4uz/b1 --logfile b1/build.log ruby-rest-client_2.1.0-4.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4: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.sYG5x4uz/pbuilderrc_kgEU --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.sYG5x4uz/b2 --logfile b2/build.log ruby-rest-client_2.1.0-4.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink03-arm64 6.1.0-32-cloud-arm64 #1 SMP Debian 6.1.129-1 (2025-03-06) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-32-cloud-arm64 #1 SMP Debian 6.1.129-1 (2025-03-06) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Mar 4 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/858644/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Mar 4 11:20 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2517928/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -280,7 +312,7 @@ Get: 149 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 150 http://deb.debian.org/debian trixie/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 151 http://deb.debian.org/debian trixie/main arm64 ruby-webmock all 3.25.1-1 [68.8 kB] -Fetched 48.1 MB in 0s (171 MB/s) +Fetched 48.1 MB in 0s (101 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:arm64. (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 ... 19917 files and directories currently installed.) @@ -780,8 +812,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Apr 18 05:10:16 UTC 2026. -Universal Time is now: Sat Apr 18 05:10:16 UTC 2026. +Local time is now: Sat Mar 15 22:48:22 UTC 2025. +Universal Time is now: Sat Mar 15 22:48:22 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-2) ... @@ -919,7 +951,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-rest-client-2.1.0/ && 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-rest-client_2.1.0-4_source.changes +I: user script /srv/workspace/pbuilder/2517928/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/2517928/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-rest-client-2.1.0/ && 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-rest-client_2.1.0-4_source.changes dpkg-buildpackage: info: source package ruby-rest-client dpkg-buildpackage: info: source version 2.1.0-4 dpkg-buildpackage: info: source distribution unstable @@ -993,368 +1029,368 @@ RUBYLIB=/build/reproducible-path/ruby-rest-client-2.1.0/debian/ruby-rest-client/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/reproducible-path/ruby-rest-client-2.1.0/debian/ruby-rest-client/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rest-client-2.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation -Randomized with seed 6478 +Randomized with seed 8500 + +RestClient::Response + behaves like string + accepts nil strings and sets it to empty for the case of HEAD + redirection + follows a redirection when the request is a head + doesn't follow a 302 when the request is a post + keeps redirection history + doesn't follow a 301 when the request is a post + follows a redirection when the request is a post and result is a 303 + handles redirects with relative path and query string + follow a redirection when the request is a get and the response is in the 30x range + follows a redirection when the request is a get + respects cookie domains on redirect + follows no more than 10 redirections before raising error + follows a redirection and keep the cookies + doesn't follow a redirection when the request is a put + allows for manual following of redirects + doesn't follow a 307 when the request is a post + handles redirects with relative paths + follows no more than max_redirects redirections, if specified + follows a redirection and keep the parameters + cookie processing + should correctly deal with multiple cookies [multiple Set-Cookie headers] + should correctly deal with multiple cookies [one Set-Cookie header with multiple cookies] + should correctly deal with one Set-Cookie header with one cookie inside + logging + uses the request's logger + exceptions processing + should throw an exception for other codes + should return itself for normal codes + header processing + handles multiple headers by joining with comma + test headers and raw headers + +RestClient::Exception + sets the exception message to ErrorMessage + returns the 'message' that was set + returns a 'message' equal to the class name if the message is not set, because 'message' should not be nil + contains exceptions in RestClient RestClient::ServerBrokeConnection should have a default message of 'Server broke connection' -RestClient::RawResponse - exposes a Tempfile - includes AbstractResponse - behaves like string +RestClient::Utils + .cgi_parse_header + parses headers + .encode_query_string + handles nested ParamsArrays + handles nested hashes + handles deep nesting + handles simple hashes + handles multiple fields with the same name using ParamsArray + handles nested nulls + handles null and empty values + handles simple arrays + .get_encoding_from_headers + handles various charsets + returns nil on failures + assumes no encoding by default for text -RestClient - API - POST - PUT - GET - HEAD - OPTIONS - PATCH - DELETE - logging - displays the log to stdout - uses << if the log is not a string - append the log to the requested filename - displays the log to stderr - version - has a version > 2.0.0.alpha, < 3.0 +RestClient::Request + timeouts + raises OpenTimeout when it hits an open timeout (PENDING: Temporarily skipped with xit) RestClient::AbstractResponse - has a nice description fetches the headers - extract strange cookies extracts cookies from response headers - doesn't escape cookies - can access the net http result directly fetches the numeric response code + can access the net http result directly + doesn't escape cookies + extract strange cookies + has a nice description .cookie_jar extracts cookies into cookie jar handles cookies when URI scheme is implicit - #return! - should raise an error on a redirection after non-GET/HEAD requests - should raise RequestFailed on unknown codes - should gracefully handle 302 redirect with no location header - should follow 302 redirect - should return the response itself on 200-codes .beautify_headers - leaves set-cookie headers as array - beautifies the headers by turning the keys to symbols joins multiple header values by comma beautifies the headers by turning the values to strings instead of one-element arrays + leaves set-cookie headers as array + beautifies the headers by turning the keys to symbols + #return! + should return the response itself on 200-codes + should gracefully handle 302 redirect with no location header + should follow 302 redirect + should raise RequestFailed on unknown codes + should raise an error on a redirection after non-GET/HEAD requests -RestClient::Request - closes payload if not nil - can use a block to process response - params for GET requests - manage params for get requests - adds GET params when params are present in URL - encodes nested GET params +RestClient::RawResponse + includes AbstractResponse + behaves like string + exposes a Tempfile -RestClient::ParamsArray - .new - rejects various invalid input - accepts various types of containers +RestClient + API + OPTIONS + PATCH + DELETE + GET + POST + PUT + HEAD + logging + displays the log to stderr + append the log to the requested filename + uses << if the log is not a string + displays the log to stdout + version + has a version > 2.0.0.alpha, < 3.0 + +RestClient + a 404 + a simple request + charset parsing + handles euc-jp + handles binary + leaves images as binary + handles windows-1252 + handles utf-8 + defaults to the default encoding + handles invalid encoding RestClient::RequestFailed + shows the status code in the message stores the http response on the exception http_body convenience method for fetching the body (decoding when necessary) http_code convenience method for fetching the code as an integer - shows the status code in the message - -RestClient::Utils - .get_encoding_from_headers - assumes no encoding by default for text - returns nil on failures - handles various charsets - .encode_query_string - handles multiple fields with the same name using ParamsArray - handles null and empty values - handles nested ParamsArrays - handles nested hashes - handles simple hashes - handles simple arrays - handles deep nesting - handles nested nulls - .cgi_parse_header - parses headers -RestClient::Request - timeouts - raises OpenTimeout when it hits an open timeout (PENDING: Temporarily skipped with xit) +RestClient::Resource + transports options to subresources + concatenates urls, inserting a slash when it needs one + concatenates even non-string urls, :posts + 1 => 'posts/1' + offers subresources via [] + concatenates urls, using no slash if the first url ends with a slash + the block should be overrideable + prints its url with to_s + the block should be overrideable in ruby 1.9 syntax + concatenates urls, using no slash if the second url starts with a slash + can instantiate with no user/password + is backwards compatible with previous constructor + passes a given block to subresources + Resource delegation + PUT + GET + PATCH + HEAD + overrides resource headers + POST + DELETE + block + can use block when executing the resource + execution block override resource block + can use block when creating the resource RestClient::NotFound - stores the body on the response of the exception also has the http response attached - -RestClient::Payload - Payload generation - should recognize multipart params - shouldn't treat hashes as streameable - should return data if no of the above - should handle deeply nested multipart - should handle non-multipart payload wrapped in ParamsArray - should recognize file payloads that can be streamed - should recognize nested multipart payloads in arrays - should pass through Payload::Base and subclasses unchanged - should be multipart if forced - should recognize multipart payload wrapped in ParamsArray - should recognize other payloads that can be streamed - should recognize standard urlencoded params - should recognize nested multipart payloads in hashes - streamed payloads - should properly determine the size of file payloads - should properly determine the size of other kinds of streaming payloads - should have a closed? method - A multipart Payload - should not error on close if stream already closed - should detect optional (original) content type and filename - should use standard enctype as default content-type - should handle hash in hash parameters - should form properly separated multipart data - should form properly separated multipart data - should ignore the name attribute when it's not set - should correctly format hex boundary - should not escape parameters names - Base Payload - should reset stream after to_s - A regular Payload - should properly handle arrays as repeated parameters - should handle many attributes inside a hash - should handle arrays inside a hash inside a hash - should handle attributes inside an array inside an hash - should not close if stream already closed - should form properly use symbols as parameters - should properly handle hashes as parameter - should escape parameters - should use standard enctype as default content-type - should form properly encoded params + stores the body on the response of the exception RestClient::Request - does not escape or unescape cookies - catches Timeout::Error and raise the more informative ReadTimeout - assumes default domain and path for cookies set by hash set urlencoded content_type header on hash payloads - catches EOFError and shows the more informative ServerBrokeConnection - IPv6: executes by constructing the Net::HTTP object, headers, and payload and calling transmit - does not warn for a normal looking payload - doesn't classify successful requests as failed - executes by constructing the Net::HTTP object, headers, and payload and calling transmit - correctly formats cookies provided to the constructor - should still return a response object for 204 No Content responses - strips out cookies set for a different domain name - catches OpenSSL::SSL::SSLError and raise it back without more informative message - accept */* mimetype - rejects or warns with contradictory cookie options - catches Net::ReadTimeout and raises RestClient's ReadTimeout processes a successful result - catches Errno::ETIMEDOUT and raise the more informative ReadTimeout + does not escape or unescape cookies + should still return a response object for 204 No Content responses + doesn't classify successful requests as failed + catches EOFError and shows the more informative ServerBrokeConnection uses correct error message for OpenTimeout + assumes default domain and path for cookies set by hash + uses correct error message for ReadTimeout catches Net::OpenTimeout and raises RestClient's OpenTimeout - determines the Net::HTTP class to instantiate by the method name - strips the charset from the response content type - transmits the request with Net::HTTP + rejects cookie values containing invalid characters + catches Timeout::Error and raise the more informative ReadTimeout rejects cookie names containing invalid characters + uses netrc credentials warns when overriding existing headers via payload - uses credentials in the url in preference to netrc does not warn when overriding user header with header derived from payload if those header values were identical - rejects cookie values containing invalid characters - uses correct error message for ReadTimeout - uses netrc credentials + does not warn for a normal looking payload + strips the charset from the response content type + IPv6: executes by constructing the Net::HTTP object, headers, and payload and calling transmit + correctly formats cookies provided to the constructor + rejects or warns with contradictory cookie options + catches Errno::ETIMEDOUT and raise the more informative ReadTimeout + executes by constructing the Net::HTTP object, headers, and payload and calling transmit class method execute wraps constructor - header symbols - converts content-type from extension to real content-type - converts accept from extension(s) to real content-type(s) - converts header symbols from :content_type to 'Content-Type' - converts header values to strings - only convert symbols in header - logging - logs a post request with a small payload - logs a response with a nil Content-type - logs to a passed logger, if provided - logs a response with a nil body - does not log request password - logs a get request - logs a response including the status code, content type, and result body size in bytes - logs input headers as a hash - logs a post request with a large payload - payloads - should accept string payloads - should accept streaming IO payloads - block usage - returns what asked to - raw response - should read the response into a binary-mode tempfile - .normalize_url - does not add http:// to the front of capital HTTP resources - raises with invalid URI - adds http:// to resources containing a colon - adds http:// to the front of resources specified in the syntax example.com/resource - does not add http:// to the front of https resources - does not add http:// to the front of capital HTTPS resources + uses credentials in the url in preference to netrc + determines the Net::HTTP class to instantiate by the method name + catches OpenSSL::SSL::SSLError and raise it back without more informative message + strips out cookies set for a different domain name + catches Net::ReadTimeout and raises RestClient's ReadTimeout + transmits the request with Net::HTTP + accept */* mimetype + ssl + should set the ssl_ca_file if provided + should by default set the ssl_cert_store if no CA info is provided + should set net.verify_mode to OpenSSL::SSL::VERIFY_NONE if verify_ssl is false + should set the ssl_verify_callback if passed + should not set the ssl_verify_callback by default + should set the ssl_version if provided + should default to not having an ssl_client_cert + uses SSL when the URI refers to a https address + should set the ssl_cert_store if provided + should default to not having an ssl_client_key + should default to verifying ssl certificates + should not set the ssl_ca_path if it is not provided + should set the ssl_client_cert if provided + should not set the ssl_ca_file if it is not provided + should not set net.verify_mode to OpenSSL::SSL::VERIFY_NONE if verify_ssl is true + should not set the ssl_client_cert if it is not provided + should set net.verify_mode to OpenSSL::SSL::VERIFY_PEER if verify_ssl is true + should have expected values for VERIFY_PEER and VERIFY_NONE + should not set the ssl_cert_store if it is set falsy + should set the ssl_ca_path if provided + should set the ssl_ciphers if provided + should not set the ssl_version if not provided + should set the ssl_client_key if provided + should not set the ssl_client_key if it is not provided + should default to not having an ssl_ca_file + should not set the ssl_ciphers if set to nil + should default to not having an ssl_ca_path + should set net.verify_mode to OpenSSL::SSL::VERIFY_PEER if verify_ssl is not given + should set net.verify_mode to the passed value if verify_ssl is an OpenSSL constant user - password - extracts with escaping the username and password when parsing http://user:password@example.com/ uses the username and password from the URL - overrides URL user/pass with explicit options - extracts the username and password when parsing http://user:password@example.com/ doesn't overwrite user and password (which may have already been set by the Resource constructor) if there is no user/password in the url - exception - raises RequestFailed otherwise - raises ResourceNotFound when the response is 404 - raises Unauthorized when the response is 401 + extracts the username and password when parsing http://user:password@example.com/ + overrides URL user/pass with explicit options + extracts with escaping the username and password when parsing http://user:password@example.com/ + payloads + should accept string payloads + should accept streaming IO payloads proxy - creates a proxy class if a proxy url is given - creates a proxy class with the correct address if a IPv6 proxy url is given - overrides global proxy with per-request proxy sets proxy on a per-request basis - disables proxy on a per-request basis creates a non-proxy class if a proxy url is not given + overrides global proxy with per-request proxy + creates a proxy class if a proxy url is given overrides proxy from environment + creates a proxy class with the correct address if a IPv6 proxy url is given + disables proxy on a per-request basis + exception + raises ResourceNotFound when the response is 404 + raises Unauthorized when the response is 401 + raises RequestFailed otherwise payload - accepts nested hashes in payload passes non-hash payloads straight through - sends nil payloads converts a hash payload to urlencoded data + accepts nested hashes in payload + sends nil payloads + raw response + should read the response into a binary-mode tempfile + logging + logs a response including the status code, content type, and result body size in bytes + logs a post request with a small payload + logs a response with a nil body + logs a get request + logs a post request with a large payload + logs to a passed logger, if provided + does not log request password + logs input headers as a hash + logs a response with a nil Content-type credentials - does not attempt to send any credentials if user is nil sets up the credentials prior to the request does not attempt to send credentials if Authorization header is set setup credentials when there's a user + does not attempt to send any credentials if user is nil constructor - should reject invalid URIs should reject valid URIs with no hostname - ssl - should default to not having an ssl_ca_path - should set net.verify_mode to OpenSSL::SSL::VERIFY_NONE if verify_ssl is false - should not set the ssl_verify_callback by default - should set the ssl_client_cert if provided - should default to not having an ssl_ca_file - uses SSL when the URI refers to a https address - should set the ssl_verify_callback if passed - should set the ssl_version if provided - should not set the ssl_cert_store if it is set falsy - should not set the ssl_version if not provided - should not set the ssl_ca_file if it is not provided - should not set the ssl_client_cert if it is not provided - should set the ssl_ca_file if provided - should set the ssl_ciphers if provided - should not set the ssl_ca_path if it is not provided - should not set the ssl_client_key if it is not provided - should set net.verify_mode to OpenSSL::SSL::VERIFY_PEER if verify_ssl is true - should by default set the ssl_cert_store if no CA info is provided - should not set the ssl_ciphers if set to nil - should set the ssl_ca_path if provided - should have expected values for VERIFY_PEER and VERIFY_NONE - should not set net.verify_mode to OpenSSL::SSL::VERIFY_NONE if verify_ssl is true - should set net.verify_mode to the passed value if verify_ssl is an OpenSSL constant - should set the ssl_client_key if provided - should set net.verify_mode to OpenSSL::SSL::VERIFY_PEER if verify_ssl is not given - should default to not having an ssl_client_cert - should default to not having an ssl_client_key - should set the ssl_cert_store if provided - should default to verifying ssl certificates + should reject invalid URIs + .normalize_url + does not add http:// to the front of https resources + raises with invalid URI + does not add http:// to the front of capital HTTPS resources + adds http:// to the front of resources specified in the syntax example.com/resource + adds http:// to resources containing a colon + does not add http:// to the front of capital HTTP resources + header symbols + only convert symbols in header + converts header symbols from :content_type to 'Content-Type' + converts content-type from extension to real content-type + converts accept from extension(s) to real content-type(s) + converts header values to strings + block usage + returns what asked to timeout - supersedes :timeout with open/read_timeout - sets open_timeout - sets both timeouts with :timeout does not set timeouts if not specified disable timeout by setting it to nil - deprecated: disable timeout by setting it to -1 + supersedes :timeout with open/read_timeout + sets both timeouts with :timeout deprecated: warns when disabling timeout by setting it to -1 sets read_timeout + sets open_timeout + deprecated: disable timeout by setting it to -1 user headers converts user headers to string before calling CGI::unescape which fails on non string values merges user headers with the default headers prefers the user header when the same header exists in the defaults process_url_params + should handle ParamsArray objects should handle complex nested URL params per Rack / Rails conventions should handle basic URL params should combine with & when URL params already exist - should handle ParamsArray objects - -RestClient::Resource - can instantiate with no user/password - the block should be overrideable - offers subresources via [] - concatenates even non-string urls, :posts + 1 => 'posts/1' - is backwards compatible with previous constructor - concatenates urls, using no slash if the first url ends with a slash - the block should be overrideable in ruby 1.9 syntax - transports options to subresources - passes a given block to subresources - prints its url with to_s - concatenates urls, using no slash if the second url starts with a slash - concatenates urls, inserting a slash when it needs one - block - execution block override resource block - can use block when executing the resource - can use block when creating the resource - Resource delegation - HEAD - POST - PUT - overrides resource headers - GET - DELETE - PATCH - -RestClient::Exception - contains exceptions in RestClient - sets the exception message to ErrorMessage - returns a 'message' equal to the class name if the message is not set, because 'message' should not be nil - returns the 'message' that was set - -RestClient - a simple request - a 404 - charset parsing - handles windows-1252 - handles euc-jp - handles invalid encoding - handles utf-8 - leaves images as binary - handles binary - defaults to the default encoding backwards compatibility - aliases old names for HTTP 413, 414, 416 aliases RestClient::NotFound as ResourceNotFound + aliases old names for HTTP 413, 414, 416 subclasses timeout from RestClient::RequestTimeout, RequestFailed, EWR subclasses NotFound from RequestFailed, ExceptionWithResponse -RestClient::Response - accepts nil strings and sets it to empty for the case of HEAD - behaves like string - header processing - handles multiple headers by joining with comma - test headers and raw headers - redirection - follows no more than max_redirects redirections, if specified - respects cookie domains on redirect - handles redirects with relative paths - handles redirects with relative path and query string - follows a redirection when the request is a get - follows a redirection and keep the parameters - follows a redirection when the request is a head - doesn't follow a 307 when the request is a post - allows for manual following of redirects - follows a redirection and keep the cookies - doesn't follow a redirection when the request is a put - keeps redirection history - follows no more than 10 redirections before raising error - doesn't follow a 301 when the request is a post - doesn't follow a 302 when the request is a post - follow a redirection when the request is a get and the response is in the 30x range - follows a redirection when the request is a post and result is a 303 - logging - uses the request's logger - exceptions processing - should return itself for normal codes - should throw an exception for other codes - cookie processing - should correctly deal with multiple cookies [one Set-Cookie header with multiple cookies] - should correctly deal with one Set-Cookie header with one cookie inside - should correctly deal with multiple cookies [multiple Set-Cookie headers] +RestClient::Request + can use a block to process response + closes payload if not nil + params for GET requests + manage params for get requests + encodes nested GET params + adds GET params when params are present in URL + +RestClient::ParamsArray + .new + rejects various invalid input + accepts various types of containers + +RestClient::Payload + streamed payloads + should properly determine the size of file payloads + should have a closed? method + should properly determine the size of other kinds of streaming payloads + A regular Payload + should properly handle arrays as repeated parameters + should escape parameters + should not close if stream already closed + should form properly encoded params + should properly handle hashes as parameter + should handle many attributes inside a hash + should use standard enctype as default content-type + should handle attributes inside an array inside an hash + should form properly use symbols as parameters + should handle arrays inside a hash inside a hash + Base Payload + should reset stream after to_s + A multipart Payload + should use standard enctype as default content-type + should detect optional (original) content type and filename + should correctly format hex boundary + should form properly separated multipart data + should not escape parameters names + should not error on close if stream already closed + should handle hash in hash parameters + should form properly separated multipart data + should ignore the name attribute when it's not set + Payload generation + should recognize multipart params + should pass through Payload::Base and subclasses unchanged + should recognize nested multipart payloads in hashes + should return data if no of the above + should recognize multipart payload wrapped in ParamsArray + should be multipart if forced + shouldn't treat hashes as streameable + should recognize file payloads that can be streamed + should handle deeply nested multipart + should recognize nested multipart payloads in arrays + should handle non-multipart payload wrapped in ParamsArray + should recognize standard urlencoded params + should recognize other payloads that can be streamed Pending: (Failures listed here are expected and do not affect your suite's status) @@ -1362,10 +1398,10 @@ # Temporarily skipped with xit # ./spec/integration/request_spec.rb:17 -Finished in 0.74252 seconds (files took 0.65538 seconds to load) +Finished in 1.12 seconds (files took 1.37 seconds to load) 286 examples, 0 failures, 1 pending -Randomized with seed 6478 +Randomized with seed 8500 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1400,12 +1436,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/2517928/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2517928/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/858644 and its subdirectories -I: Current time: Fri Apr 17 17:10:31 -12 2026 -I: pbuilder-time-stamp: 1776489031 +I: removing directory /srv/workspace/pbuilder/2517928 and its subdirectories +I: Current time: Sun Mar 16 12:49:16 +14 2025 +I: pbuilder-time-stamp: 1742078956