Diff of the two buildlogs: -- --- b1/build.log 2025-10-28 00:22:43.260156192 +0000 +++ b2/build.log 2025-10-28 00:23:42.852228161 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Oct 27 12:21:55 -12 2025 -I: pbuilder-time-stamp: 1761610915 +I: Current time: Mon Nov 30 20:45:44 +14 2026 +I: pbuilder-time-stamp: 1796021145 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -22,53 +22,85 @@ dpkg-source: info: unpacking ruby-contracts_0.17.2-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/642075/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1636796/tmp/hooks/D01_modify_environment starting +debug: Running on codethink03-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 Nov 30 06:45 /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/1636796/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1636796/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]="3" [2]="3" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.3.3(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='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='faf4a7c1f5754b1d8db54c9e82a0e596' - 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='642075' - PS1='# ' - PS2='> ' + INVOCATION_ID=62e07d30518143d6aa9d11286fab848c + 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=1636796 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.DKEqhJ6L/pbuilderrc_Itss --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DKEqhJ6L/b1 --logfile b1/build.log ruby-contracts_0.17.2-1.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - 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.DKEqhJ6L/pbuilderrc_0aGJ --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DKEqhJ6L/b2 --logfile b2/build.log ruby-contracts_0.17.2-1.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + 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 codethink04-arm64 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/642075/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1636796/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -236,7 +268,7 @@ Get: 124 http://deb.debian.org/debian unstable/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 125 http://deb.debian.org/debian unstable/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 126 http://deb.debian.org/debian unstable/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 34.6 MB in 0s (81.2 MB/s) +Fetched 34.6 MB in 0s (72.5 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1: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 ... 19964 files and directories currently installed.) @@ -658,8 +690,8 @@ Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Oct 28 00:22:21 UTC 2025. -Universal Time is now: Tue Oct 28 00:22:21 UTC 2025. +Local time is now: Mon Nov 30 06:46:11 UTC 2026. +Universal Time is now: Mon Nov 30 06:46:11 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-3) ... @@ -775,7 +807,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-contracts-0.17.2/ && 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-contracts_0.17.2-1_source.changes +I: user script /srv/workspace/pbuilder/1636796/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1636796/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-contracts-0.17.2/ && 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-contracts_0.17.2-1_source.changes dpkg-buildpackage: info: source package ruby-contracts dpkg-buildpackage: info: source version 0.17.2-1 dpkg-buildpackage: info: source distribution unstable @@ -808,12 +844,12 @@ │ ruby-contracts: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20251027-671533-i0wc90/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20261130-1647297-wh7hox/gemspec Successfully built RubyGem Name: contracts Version: 0.17.2 File: contracts-0.17.2.gem -/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-contracts/usr/share/rubygems-integration/all /tmp/d20251027-671533-i0wc90/contracts-0.17.2.gem +/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-contracts/usr/share/rubygems-integration/all /tmp/d20261130-1647297-wh7hox/contracts-0.17.2.gem /build/reproducible-path/ruby-contracts-0.17.2/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17.2/benchmarks/bench.rb /build/reproducible-path/ruby-contracts-0.17.2/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17.2/benchmarks/hash.rb /build/reproducible-path/ruby-contracts-0.17.2/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17.2/benchmarks/invariants.rb @@ -874,392 +910,392 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 3361 +Randomized with seed 31364 + +Contracts: + Exactly: + should fail for an object that is not related to Parent at all + should fail for an object that inherits from Parent + should pass for an object that is exactly a Parent + RangeOf: + should pass for a range of nums + should fail for a range with incorrect data type + should fail for a badly-defined range + should fail for a non-range + should pass for a range of dates + HashOf: + doesn't allow to specify multiple key-value pairs with pretty syntax + #to_s + given Symbol => String + is expected to eq "Hash" + given String => Num + is expected to eq "Hash" + given an unfulfilled contract + is expected to raise ContractError + is expected to raise ContractError + is expected to raise ContractError + is expected to raise ContractError + given a fulfilled contract + is expected to eq 2 + is expected to eq 2 + DescendantOf: + should pass for a hash + should pass for Array + should fail for a number class + should fail for a non-class + Send: + should fail for an object that returns false for method :good + should pass for an object that returns true for method :good + Num: + should fail for nil and other data types + should pass for Integers + should pass for Floats + Bool: + should fail for nil + should pass for an argument that is a boolean + Neg: + should pass for negative numbers + should fail for positive numbers + should fail for 0 + should fail for nil and other data types + Nat: + should fail for positive non-whole numbers + should pass for 0 + should fail for negative numbers + should pass for positive whole numbers + should fail for nil and other data types + SetOf: + should fail for a non-array + should pass for a set of nums + should fail for an array with one non-num + Any: + should pass for strings + should pass for nil + should pass for procs + should pass for numbers + ArrayOf: + should pass for an array of nums + should fail for an array with one non-num + should fail for a non-array + RespondTo: + should pass for an object that responds to :good + should fail for an object that doesn't respond to :good + Enum: + should pass for an object that is included + should fail for an object that is not included + StrictHash: + when given an input with missing keys + raises an error + when given an input with correct keys but wrong types + raises an error + when given an input with extra keys + raises an error + when given not a hash + raises an error + when given an exact correct input + does not raise an error + Maybe: + should pass for nils + should fail for strings + should pass for nums + Eq: + should pass for a module + should fail when not equal + should fail when given instance of class + should pass for a class + should pass for other values + KeywordArgs: + should pass for exact correct input + should fail if a key with a contract on it isn't provided + should fail if some keys don't have contracts + should fail for incorrect input + Xor: + should pass for an object with a method :good + should fail for an object with neither method + should fail for an object with both methods :good and :bad + should pass for an object with a method :bad + Or: + should fail for nil + should pass for nums + should pass for strings + Not: + should pass for an argument that isn't nil + should fail for nil + Pos: + should fail for nil and other data types + should fail for negative numbers + should pass for positive numbers + should fail for 0 + None: + should fail for numbers + should fail for procs + should fail for strings + should fail for nil + Optional: + can't be used outside of KeywordArgs + And: + should pass for an object of class A that has a method :good + should fail for an object that has a method :good but isn't of class A + +Contract validators + Regexp + should fail for a non-matching string + should pass for a matching string + within a hash + should pass for a matching string + within an array + should pass for a matching string + Range + fails when value is incorrect + fails when value is not in range + passes when value is in range + +Contracts::Invariants + works when all invariants are holding + raises invariant violation error when any of invariants are not holding + +Contracts: + method called with blocks + should enforce return value inside lambda with no other parameter + should enforce return value inside block with other parameter + should enforce return value inside lambda with other parameter + should enforce return value inside block with no other parameter + +module methods + should pass for correct input + should fail for incorrect input Contract .override_validator - allows to override valid contract - allows to override simple validators allows to override default validator + allows to override simple validators allows to override class validator + allows to override valid contract + +Contracts::Support + eigenclass_of + returns the eigenclass of a given object + eigenclass? + is falsey for non-singleton classes + is truthy for singleton classes Contracts: - classes with extended modules - is possible to define it - works correctly with methods with passing contracts - should not fail with 'undefined method 'Contract'' - works correctly with methods with passing contracts - inherited methods - should apply the contract to an inherited method + classes + should not fail for an object that is the exact type as the contract + should not fail for an object that is a subclass of the type in the contract + varargs + should work with arg before splat + should pass for correct input + should fail for incorrect input + default args to functions + should work for a function call that relies on default args blocks should fail for incorrect input should succeed for maybe proc with proc - should pass for correct input - should fail for maybe proc with invalid input should handle properly lack of block when there are other arguments should succeed for maybe proc with no proc + should fail for maybe proc with invalid input + should pass for correct input varargs are given with a maybe block when a block is passed in, varargs should be correct when a block is NOT passed in, varargs should still be correct - class methods - should pass for correct input - should fail for incorrect input - functype - should correctly print out a class method's type - should correctly print out a instance method's type - no contracts feature - disables invariants - does not disable pattern matching - disables normal contract checks - singleton methods self in inherited methods - should be a proper self + anonymous modules + does not fail when contract is satisfied + fails with error when contract is violated + when called on module itself + fails with error when contract is violated + does not fail when contract is satisfied + failure callbacks + when failure_callback returns true + calls a function for which the contract fails + when failure_callback returns false + does not call a function for which the contract fails + basic + should fail for insufficient arguments + should fail for insufficient contracts + module contracts + does not pass for instance of class not including module + does not pass for instance of class including another module + passes for instance of class including both modules + passes for instance of class including inherited module + passes for instance of class including module + usage in the singleton class of a subclass + should work with a valid contract on a singleton method + private methods + should raise an error if you try to access a private method + should raise an error if you try to access a private method Contracts to_s formatting in expected - should not stringify native types - should wrap and pretty print for long return contracts - should wrap and pretty print for long param contracts should not use custom to_s if empty string + should show empty quotes as "" + should contain to_s representation within a nested Array contract should still show nils, not just blank space - should contain to_s representation within a nested Hash contract + should not stringify native types should contain to_s representation within an Array contract should not contain Contracts:: module prefix - should contain to_s representation within a nested Array contract should contain to_s representation within a Hash contract - should show empty quotes as "" - instance methods - should allow two classes to have the same method with different contracts + should contain to_s representation within a nested Hash contract + should wrap and pretty print for long param contracts + should wrap and pretty print for long return contracts varargs with block should fail for incorrect input should pass for correct input when block has Func contract should fail for incorrect input - Arrays - should pass for correct input - should fail for some incorrect elements - should fail for insufficient items - Hashes - should pass for exact correct input - should fail if a key with a contract on it isn't provided - should pass even if some keys don't have contracts - should fail for incorrect input - default args to functions - should work for a function call that relies on default args - usage in singleton class - should fail with proper error when there is contract violation - should work normally when there is no contract violation - builtin contracts usage - allows to use builtin contracts without namespacing and redundant Contracts inclusion - failure callbacks - when failure_callback returns true - calls a function for which the contract fails - when failure_callback returns false - does not call a function for which the contract fails classes with a valid? class method - should pass for correct input should fail for incorrect input - basic - should fail for insufficient arguments - should fail for insufficient contracts + should pass for correct input contracts on functions + should pass for a function that passes the contract with weak other args + should fail for a returned function that doesn't pass the contract should not fail for a returned function that passes the contract should pass for a function that passes the contract as in tutorial should fail for a function that doesn't pass the contract with weak other args - should pass for a function that passes the contract with weak other args - should fail for a returned function that doesn't pass the contract + should fail for a function that doesn't pass the contract should fail for a returned function that receives the wrong argument type should pass for a function that passes the contract - should fail for a function that doesn't pass the contract - anonymous modules - does not fail when contract is satisfied - fails with error when contract is violated - when called on module itself - fails with error when contract is violated - does not fail when contract is satisfied - usage in the singleton class of a subclass - should work with a valid contract on a singleton method - classes - should fail for incorrect input + inherited methods + should apply the contract to an inherited method + contracts for functions with no arguments + should still work for old-style contracts for functions with no args + should not work for a function with a bad contract + should work for functions with no args + functype + should correctly print out a instance method's type + should correctly print out a class method's type + classes with extended modules + should not fail with 'undefined method 'Contract'' + works correctly with methods with passing contracts + works correctly with methods with passing contracts + is possible to define it + class methods should pass for correct input - varargs + should fail for incorrect input + singleton methods self in inherited methods + should be a proper self + Hashes + should pass even if some keys don't have contracts + should pass for exact correct input + should fail for incorrect input + should fail if a key with a contract on it isn't provided + classes should pass for correct input should fail for incorrect input - should work with arg before splat - private methods - should raise an error if you try to access a private method - should raise an error if you try to access a private method + Arrays + should fail for some incorrect elements + should pass for correct input + should fail for insufficient items + instance and class methods + should allow a class to have an instance method and a class method with the same name pattern matching - should fail if multiple methods are defined with the same contract (for pattern-matching) should work as expected when there is no contract violation if the return contract for a pattern match fails, it should fail instead of trying the next pattern match + should fail if multiple methods are defined with the same contract (for pattern-matching) + should fail when the pattern-matched method's contract fails should work for differing arities should not fall through to next pattern when there is a deep contract violation - should fail when the pattern-matched method's contract fails when failure_callback was overriden - calls a method when first pattern matches falls through to 2nd pattern when first pattern does not match if the return contract for a pattern match fails, it should fail instead of trying the next pattern match, even with the failure callback + calls a method when first pattern matches uses overriden failure_callback when pattern matching fails - module usage - with singleton class methods - should check contract - with singleton methods - should check contract - with instance methods - should check contract - contracts for functions with no arguments - should still work for old-style contracts for functions with no args - should work for functions with no args - should not work for a function with a bad contract - instance and class methods - should allow a class to have an instance method and a class method with the same name - anonymous classes - does not fail when contract is satisfied - fails with error when contract is violated Procs - should fail for incorrect input should pass for correct input - module contracts - does not pass for instance of class including another module - passes for instance of class including module - passes for instance of class including both modules - does not pass for instance of class not including module - passes for instance of class including inherited module - classes - should not fail for an object that is the exact type as the contract - should not fail for an object that is a subclass of the type in the contract + should fail for incorrect input + instance methods + should allow two classes to have the same method with different contracts protected methods should raise an error if you try to access a protected method should raise an error if you try to access a protected method - -Contracts: - method called with blocks - should enforce return value inside lambda with other parameter - should enforce return value inside block with other parameter - should enforce return value inside lambda with no other parameter - should enforce return value inside block with no other parameter - -Contract validators - Range - fails when value is incorrect - fails when value is not in range - passes when value is in range - Regexp - should pass for a matching string - should fail for a non-matching string - within a hash - should pass for a matching string - within an array - should pass for a matching string + usage in singleton class + should work normally when there is no contract violation + should fail with proper error when there is contract violation + builtin contracts usage + allows to use builtin contracts without namespacing and redundant Contracts inclusion + no contracts feature + disables normal contract checks + disables invariants + does not disable pattern matching + anonymous classes + fails with error when contract is violated + does not fail when contract is satisfied + module usage + with instance methods + should check contract + with singleton methods + should check contract + with singleton class methods + should check contract Contracts: Attrs: - attr_writer_with_contract - setting valid type - setting valid type for second val - setting invalid type for second val - getting - setting invalid type attr_accessor_with_contract - getting valid type getting invalid type for second val setting valid type for second val getting invalid type + getting valid type + setting invalid type setting valid type setting invalid type for second val getting valid type for second val - setting invalid type attr_reader_with_contract - getting valid type - getting valid type for second val + getting invalid type setting getting invalid type for second val - getting invalid type - -Contracts::Invariants - works when all invariants are holding - raises invariant violation error when any of invariants are not holding - -Contracts: - Send: - should fail for an object that returns false for method :good - should pass for an object that returns true for method :good - Eq: - should fail when not equal - should pass for a class - should pass for a module - should fail when given instance of class - should pass for other values - ArrayOf: - should pass for an array of nums - should fail for a non-array - should fail for an array with one non-num - DescendantOf: - should fail for a non-class - should pass for a hash - should fail for a number class - should pass for Array - KeywordArgs: - should pass for exact correct input - should fail if a key with a contract on it isn't provided - should fail for incorrect input - should fail if some keys don't have contracts - Optional: - can't be used outside of KeywordArgs - And: - should fail for an object that has a method :good but isn't of class A - should pass for an object of class A that has a method :good - Enum: - should fail for an object that is not included - should pass for an object that is included - Neg: - should pass for negative numbers - should fail for nil and other data types - should fail for 0 - should fail for positive numbers - StrictHash: - when given an input with missing keys - raises an error - when given not a hash - raises an error - when given an exact correct input - does not raise an error - when given an input with correct keys but wrong types - raises an error - when given an input with extra keys - raises an error - Any: - should pass for procs - should pass for nil - should pass for numbers - should pass for strings - None: - should fail for strings - should fail for nil - should fail for numbers - should fail for procs - Nat: - should fail for negative numbers - should fail for nil and other data types - should fail for positive non-whole numbers - should pass for 0 - should pass for positive whole numbers - Maybe: - should fail for strings - should pass for nils - should pass for nums - Bool: - should fail for nil - should pass for an argument that is a boolean - Not: - should fail for nil - should pass for an argument that isn't nil - RangeOf: - should fail for a non-range - should fail for a range with incorrect data type - should pass for a range of nums - should pass for a range of dates - should fail for a badly-defined range - Num: - should fail for nil and other data types - should pass for Integers - should pass for Floats - Exactly: - should pass for an object that is exactly a Parent - should fail for an object that is not related to Parent at all - should fail for an object that inherits from Parent - Xor: - should fail for an object with neither method - should pass for an object with a method :good - should pass for an object with a method :bad - should fail for an object with both methods :good and :bad - RespondTo: - should fail for an object that doesn't respond to :good - should pass for an object that responds to :good - SetOf: - should pass for a set of nums - should fail for a non-array - should fail for an array with one non-num - Or: - should pass for nums - should fail for nil - should pass for strings - Pos: - should pass for positive numbers - should fail for 0 - should fail for nil and other data types - should fail for negative numbers - HashOf: - doesn't allow to specify multiple key-value pairs with pretty syntax - given a fulfilled contract - is expected to eq 2 - is expected to eq 2 - #to_s - given String => Num - is expected to eq "Hash" - given Symbol => String - is expected to eq "Hash" - given an unfulfilled contract - is expected to raise ContractError - is expected to raise ContractError - is expected to raise ContractError - is expected to raise ContractError - -module methods - should pass for correct input - should fail for incorrect input - -Contracts::Support - eigenclass_of - returns the eigenclass of a given object - eigenclass? - is truthy for singleton classes - is falsey for non-singleton classes + getting valid type for second val + getting valid type + attr_writer_with_contract + setting valid type + setting invalid type for second val + setting invalid type + getting + setting valid type for second val -Top 10 slowest examples (0.02733 seconds, 14.8% of total time): - Contracts: anonymous modules when called on module itself does not fail when contract is satisfied - 0.00668 seconds ./spec/contracts_spec.rb:265 +Top 10 slowest examples (0.03173 seconds, 14.0% of total time): + Contracts: Contracts to_s formatting in expected should contain to_s representation within a nested Hash contract + 0.00727 seconds ./spec/contracts_spec.rb:619 + Contracts: Xor: should fail for an object with neither method + 0.00671 seconds ./spec/builtin_contracts_spec.rb:174 Contract.override_validator allows to override default validator - 0.00589 seconds ./spec/override_validators_spec.rb:127 - Contract.override_validator allows to override valid contract - 0.00402 seconds ./spec/override_validators_spec.rb:45 + 0.00573 seconds ./spec/override_validators_spec.rb:127 + Contracts: Exactly: should fail for an object that is not related to Parent at all + 0.00265 seconds ./spec/builtin_contracts_spec.rb:232 Contracts: Pos: should fail for nil and other data types - 0.00193 seconds ./spec/builtin_contracts_spec.rb:64 + 0.00176 seconds ./spec/builtin_contracts_spec.rb:64 Contract.override_validator allows to override class validator - 0.00182 seconds ./spec/override_validators_spec.rb:96 + 0.00167 seconds ./spec/override_validators_spec.rb:96 Contract.override_validator allows to override simple validators - 0.00145 seconds ./spec/override_validators_spec.rb:9 - Contracts: Neg: should fail for nil and other data types - 0.00141 seconds ./spec/builtin_contracts_spec.rb:87 - Contracts: KeywordArgs: should fail for incorrect input - 0.00141 seconds ./spec/builtin_contracts_spec.rb:374 - Contracts: None: should fail for nil - 0.00138 seconds ./spec/builtin_contracts_spec.rb:146 - Contracts: Num: should fail for nil and other data types - 0.00136 seconds ./spec/builtin_contracts_spec.rb:41 + 0.0015 seconds ./spec/override_validators_spec.rb:9 + Contracts: Nat: should fail for nil and other data types + 0.00149 seconds ./spec/builtin_contracts_spec.rb:113 + Contracts: RangeOf: should fail for a non-range + 0.00148 seconds ./spec/builtin_contracts_spec.rb:295 + Contract.override_validator allows to override valid contract + 0.00147 seconds ./spec/override_validators_spec.rb:45 Top 9 slowest example groups: Contract - 0.0037 seconds average (0.01479 seconds / 4 examples) ./spec/override_validators_spec.rb:1 + 0.00293 seconds average (0.01173 seconds / 4 examples) ./spec/override_validators_spec.rb:1 Contracts: - 0.00081 seconds average (0.07112 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 + 0.00136 seconds average (0.11949 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 Contracts: - 0.0008 seconds average (0.00321 seconds / 4 examples) ./spec/methods_spec.rb:1 + 0.00075 seconds average (0.00299 seconds / 4 examples) ./spec/methods_spec.rb:1 Contracts: - 0.00073 seconds average (0.07554 seconds / 103 examples) ./spec/contracts_spec.rb:1 + 0.00072 seconds average (0.07432 seconds / 103 examples) ./spec/contracts_spec.rb:1 Contracts::Support - 0.0007 seconds average (0.00211 seconds / 3 examples) ./spec/support_spec.rb:2 + 0.0007 seconds average (0.00209 seconds / 3 examples) ./spec/support_spec.rb:2 Contract validators - 0.00059 seconds average (0.00411 seconds / 7 examples) ./spec/validators_spec.rb:3 + 0.00058 seconds average (0.00404 seconds / 7 examples) ./spec/validators_spec.rb:3 module methods - 0.00054 seconds average (0.00109 seconds / 2 examples) ./spec/module_spec.rb:10 - Contracts: - 0.00053 seconds average (0.00951 seconds / 18 examples) ./spec/attrs_spec.rb:1 + 0.00054 seconds average (0.00108 seconds / 2 examples) ./spec/module_spec.rb:10 Contracts::Invariants - 0.0004 seconds average (0.0008 seconds / 2 examples) ./spec/invariants_spec.rb:2 + 0.00049 seconds average (0.00098 seconds / 2 examples) ./spec/invariants_spec.rb:2 + Contracts: + 0.00048 seconds average (0.00865 seconds / 18 examples) ./spec/attrs_spec.rb:1 -Finished in 0.18459 seconds (files took 0.22862 seconds to load) +Finished in 0.2273 seconds (files took 0.51813 seconds to load) 231 examples, 0 failures -Randomized with seed 3361 +Randomized with seed 31364 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1290,12 +1326,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/1636796/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1636796/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/642075 and its subdirectories -I: Current time: Mon Oct 27 12:22:42 -12 2025 -I: pbuilder-time-stamp: 1761610962 +I: removing directory /srv/workspace/pbuilder/1636796 and its subdirectories +I: Current time: Mon Nov 30 20:46:41 +14 2026 +I: pbuilder-time-stamp: 1796021201