Diff of the two buildlogs: -- --- b1/build.log 2025-03-04 16:10:12.413023668 +0000 +++ b2/build.log 2025-03-04 16:09:08.739889103 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Mar 4 04:09:10 -12 2025 -I: pbuilder-time-stamp: 1741104550 +I: Current time: Tue Apr 7 12:30:44 +14 2026 +I: pbuilder-time-stamp: 1775514644 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,54 +25,86 @@ dpkg-source: info: applying replace-fixnum-with-integer.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/43808/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/130194/tmp/hooks/D01_modify_environment starting +debug: Running on ionos16-i386. +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 Apr 6 22:31 /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/130194/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/130194/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='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='i386' + 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]="i686-pc-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=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='5639bfd8adda4a358b3a61127ba62599' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - 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='43808' - PS1='# ' - PS2='> ' + INVOCATION_ID=b14ed761cbc743c6bf0efb9e2aca9a4d + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-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=130194 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.PT6D3ESy/pbuilderrc_IcYc --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.PT6D3ESy/b1 --logfile b1/build.log ruby-contracts_0.17-2.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://46.16.76.132: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.PT6D3ESy/pbuilderrc_KG7J --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.PT6D3ESy/b2 --logfile b2/build.log ruby-contracts_0.17-2.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://213.165.73.152:3128 I: uname -a - Linux ionos12-i386 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/43808/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/130194/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -251,7 +283,7 @@ Get: 135 http://deb.debian.org/debian unstable/main i386 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 136 http://deb.debian.org/debian unstable/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian unstable/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 49.3 MB in 1s (55.7 MB/s) +Fetched 49.3 MB in 2s (27.6 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:i386. (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 ... 19769 files and directories currently installed.) @@ -707,8 +739,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Mar 4 16:09:47 UTC 2025. -Universal Time is now: Tue Mar 4 16:09:47 UTC 2025. +Local time is now: Mon Apr 6 22:31:49 UTC 2026. +Universal Time is now: Mon Apr 6 22:31:49 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-2) ... @@ -834,7 +866,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-contracts-0.17/ && 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_source.changes +I: user script /srv/workspace/pbuilder/130194/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/130194/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-contracts-0.17/ && 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_source.changes dpkg-buildpackage: info: source package ruby-contracts dpkg-buildpackage: info: source version 0.17-2 dpkg-buildpackage: info: source distribution unstable @@ -867,12 +903,12 @@ │ ruby-contracts: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250304-53925-rqwamr/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260407-10113-uie553/gemspec Successfully built RubyGem Name: contracts Version: 0.17 File: contracts-0.17.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/d20250304-53925-rqwamr/contracts-0.17.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/d20260407-10113-uie553/contracts-0.17.gem /build/reproducible-path/ruby-contracts-0.17/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17/benchmarks/bench.rb /build/reproducible-path/ruby-contracts-0.17/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17/benchmarks/hash.rb /build/reproducible-path/ruby-contracts-0.17/debian/ruby-contracts/usr/share/rubygems-integration/all/gems/contracts-0.17/benchmarks/invariants.rb @@ -937,85 +973,143 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 49561 +Randomized with seed 50845 -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 block with no other parameter - should enforce return value inside lambda with no other parameter - -Contracts::Invariants - raises invariant violation error when any of invariants are not holding - works when all invariants are holding - -Contract validators - Range - fails when value is not in range - passes when value is in range - fails when value is incorrect - Regexp - should pass for a matching string - should fail for a non-matching string - within an array - should pass for a matching string - within a hash - should pass for a matching string - -module methods - should fail for incorrect input - should pass for correct input +Contract + .override_validator + allows to override simple validators + allows to override class validator + allows to override valid contract + allows to override default validator Contracts: Attrs: - attr_writer_with_contract + attr_accessor_with_contract + getting invalid type + getting valid type for second val + setting invalid type for second val + setting invalid type + getting invalid type for second val setting valid type for second val + getting valid type setting valid type - setting invalid type for second val - getting + attr_writer_with_contract setting invalid type - attr_accessor_with_contract + getting setting valid type - getting invalid type for second val setting invalid type for second val - getting valid type - getting invalid type - getting valid type for second val setting valid type for second val - setting invalid type attr_reader_with_contract getting invalid type + getting valid type for second val setting getting valid type - getting valid type for second val getting invalid type for second val Contracts: + method called with blocks + should enforce return value inside block with no other parameter + 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 + +module methods + should fail for incorrect input + should pass for correct input + +Contracts: + classes with extended modules + works correctly with methods with passing contracts + is possible to define it + works correctly with methods with passing contracts + should not fail with 'undefined method 'Contract'' + contracts on functions + should pass for a function that passes the contract as in tutorial + should pass for a function that passes the contract + should pass for a function that passes the contract with weak other args + should not fail for a returned function that passes the contract + should fail for a function that doesn't pass the contract + should fail for a function that doesn't pass the contract with weak other args + should fail for a returned function that receives the wrong argument type + should fail for a returned function that doesn't pass the contract + 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 insufficient items should fail for some incorrect elements should pass for correct input - should fail for insufficient items - contracts for functions with no arguments - should not work for a function with a bad contract - should still work for old-style contracts for functions with no args - should work for functions with no args + no contracts feature + does not disable pattern matching + disables normal contract checks + disables invariants Hashes + should fail for incorrect input should pass for exact correct input - should pass even if some keys don't have contracts should fail if a key with a contract on it isn't provided + should pass even if some keys don't have 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 + functype + should correctly print out a class method's type + should correctly print out a instance method's type + instance and class methods + should allow a class to have an instance method and a class method with the same name + pattern matching + should work as expected when there is no contract violation + should fail if multiple methods are defined with the same contract (for pattern-matching) + should not fall through to next pattern when there is a deep contract violation + should work for differing arities + if the return contract for a pattern match fails, it should fail instead of trying the next pattern match + should fail when the pattern-matched method's contract fails + when failure_callback was overriden + calls a method when first pattern matches + uses overriden failure_callback when pattern matching fails + if the return contract for a pattern match fails, it should fail instead of trying the next pattern match, even with the failure callback + falls through to 2nd pattern when first pattern does not match + classes should fail for incorrect input - classes with a valid? class method + should pass for correct input + anonymous modules + fails with error when contract is violated + does not fail when contract is satisfied + when called on module itself + does not fail when contract is satisfied + fails with error when contract is violated + class methods should pass for correct input should fail for incorrect input + anonymous classes + does not fail when contract is satisfied + fails with error when contract is violated + Procs + should pass for correct input + should fail for incorrect input + contracts for functions with no arguments + should not work for a function with a bad contract + should still work for old-style contracts for functions with no args + should work for functions with no args + varargs with block + should fail for incorrect input + should pass for correct input + when block has Func contract + should fail for incorrect input + basic + should fail for insufficient contracts + should fail for insufficient arguments + singleton methods self in inherited methods + should be a proper self inherited methods should apply the contract to an inherited method - module contracts - passes for instance of class including inherited module - passes for instance of class including both modules - passes for instance of class including module - does not pass for instance of class not including module - does not pass for instance of class including another 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 + classes with a valid? class method + should pass for correct input + should fail for incorrect input + instance methods + should allow two classes to have the same method with different contracts module usage with instance methods should check contract @@ -1023,142 +1117,81 @@ should check contract with singleton methods should check contract - Contracts to_s formatting in expected - should still show nils, not just blank space - should not stringify native types - should show empty quotes as "" - should not use custom to_s if empty string - should contain to_s representation within a nested Array contract - should contain to_s representation within a Hash contract - should not contain Contracts:: module prefix - should wrap and pretty print for long param contracts - should contain to_s representation within an Array contract - should contain to_s representation within a nested Hash contract - should wrap and pretty print for long return contracts - instance and class methods - should allow a class to have an instance method and a class method with the same name - 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 - Procs - should pass for correct input - should fail for incorrect input - varargs - should work with arg before splat - should pass for correct input - should fail for incorrect input - 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 failure callbacks - when failure_callback returns false - does not call a function for which the contract fails when failure_callback returns true calls a function for which the contract fails - class methods - should pass for correct input - should fail for incorrect input - no contracts feature - does not disable pattern matching - disables invariants - disables normal contract checks - default args to functions - should work for a function call that relies on default args - contracts on functions - should fail for a returned function that receives the wrong argument type - should pass for a function that passes the contract as in tutorial - should fail for a returned function that doesn't pass the contract - should fail for a function that doesn't pass the contract with weak other args - should fail for a function that doesn't pass the contract - should pass for a function that passes the contract with weak other args - should not fail for a returned function that passes the contract - should pass for a function that passes the contract - varargs with block + when failure_callback returns false + does not call a function for which the contract fails + blocks + should fail for maybe proc with invalid input should fail for incorrect input + should succeed for maybe proc with proc + should handle properly lack of block when there are other arguments should pass for correct input - when block has Func contract - should fail for incorrect input + should succeed for maybe proc with no proc + 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 usage in the singleton class of a subclass should work with a valid contract on a singleton method - basic - should fail for insufficient arguments - should fail for insufficient contracts + 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 - anonymous classes - does not fail when contract is satisfied - fails with error when contract is violated - pattern matching - if the return contract for a pattern match fails, it should fail instead of trying the next pattern match - should work for differing arities - should fail when the pattern-matched method's contract fails - should not fall through to next pattern when there is a deep contract violation - should fail if multiple methods are defined with the same contract (for pattern-matching) - should work as expected when there is no contract violation - when failure_callback was overriden - calls a method when first pattern matches - if the return contract for a pattern match fails, it should fail instead of trying the next pattern match, even with the failure callback - uses overriden failure_callback when pattern matching fails - falls through to 2nd pattern when first pattern does not match - 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 - classes with extended modules - works correctly with methods with passing contracts - works correctly with methods with passing contracts - should not fail with 'undefined method 'Contract'' - is possible to define it - classes - should pass for correct input + Contracts to_s formatting in expected + should wrap and pretty print for long return contracts + should contain to_s representation within a Hash contract + should contain to_s representation within an Array contract + should still show nils, not just blank space + should show empty quotes as "" + should not use custom to_s if empty string + should wrap and pretty print for long param contracts + should not contain Contracts:: module prefix + should contain to_s representation within a nested Hash contract + should contain to_s representation within a nested Array contract + should not stringify native types + varargs + should work with arg before splat should fail for incorrect input - blocks - should fail for maybe proc with invalid input - should succeed for maybe proc with proc should pass for correct input - should fail for incorrect input - should handle properly lack of block when there are other arguments - should succeed for maybe proc with no proc - varargs are given with a maybe block - when a block is NOT passed in, varargs should still be correct - when a block is passed in, varargs should be correct - functype - should correctly print out a instance method's type - should correctly print out a class method's type - anonymous modules - fails with error when contract is violated - does not fail when contract is satisfied - when called on module itself - does not fail when contract is satisfied - fails with error when contract is violated - singleton methods self in inherited methods - should be a proper self - instance methods - should allow two classes to have the same method with different contracts - -Contract - .override_validator - allows to override valid contract - allows to override default validator - allows to override simple validators - allows to override class validator + module contracts + passes for instance of class including module + does not pass for instance of class including another module + passes for instance of class including inherited module + does not pass for instance of class not including module + passes for instance of class including both modules Contracts: + Enum: + should pass for an object that is included + should fail for an object that is not included Nat: - should fail for nil and other data types should pass for 0 + should fail for positive non-whole numbers should pass for positive whole numbers should fail for negative numbers - should fail for positive non-whole numbers + should fail for nil and other data types + Eq: + should pass for other values + should pass for a class + should fail when given instance of class + should fail when not equal + should pass for a module + KeywordArgs: + should pass for exact correct input + should fail if some keys don't have contracts + should fail for incorrect input + should fail if a key with a contract on it isn't provided + DescendantOf: + should pass for a hash + should pass for Array + should fail for a non-class + should fail for a number class HashOf: doesn't allow to specify multiple key-value pairs with pretty syntax - #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 @@ -1167,162 +1200,165 @@ given a fulfilled contract is expected to eq 2 is expected to eq 2 - None: - should fail for nil - should fail for procs - should fail for numbers - should fail for strings - StrictHash: - when given not a hash - raises an error - when given an input with missing keys - raises an error - when given an input with extra keys - 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 - ArrayOf: - should fail for an array with one non-num - should pass for an array of nums - should fail for a non-array - KeywordArgs: - should fail if some keys don't have contracts - should fail for incorrect input - should fail if a key with a contract on it isn't provided - should pass for exact correct input + #to_s + given Symbol => String + is expected to eq "Hash" + given String => Num + is expected to eq "Hash" Xor: - should pass for an object with a method :bad + should fail for an object with both methods :good and :bad should pass for an object with a method :good + should pass for an object with a method :bad should fail for an object with neither method - should fail for an object with both methods :good and :bad - 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 - Optional: - can't be used outside of KeywordArgs - RespondTo: - should pass for an object that responds to :good - should fail for an object that doesn't respond to :good - Eq: - should pass for other values - should fail when not equal - should pass for a class - should pass for a module - should fail when given instance of class - Any: - should pass for numbers - should pass for strings - should pass for nil - should pass for procs - Pos: + Neg: + should fail for 0 + should pass for negative numbers + should fail for positive numbers should fail for nil and other data types + Pos: should fail for negative numbers - should fail for 0 + should fail for nil and other data types should pass for positive numbers - Neg: - should fail for positive numbers should fail for 0 - should fail for nil and other data types - should pass for negative numbers - Send: - should pass for an object that returns true for method :good - should fail for an object that returns false for method :good Not: - should pass for an argument that isn't nil should fail for nil - Enum: - should fail for an object that is not included - should pass for an object that is included - RangeOf: - should fail for a badly-defined range - should pass for a range of nums - should pass for a range of dates - should fail for a range with incorrect data type - should fail for a non-range + should pass for an argument that isn't nil + SetOf: + should fail for an array with one non-num + should fail for a non-array + should pass for a set of nums + Exactly: + should pass for an object that is exactly a Parent + should fail for an object that inherits from Parent + should fail for an object that is not related to Parent at all Maybe: should fail for strings should pass for nils should pass for nums - Or: + Any: should pass for strings + should pass for nil + should pass for numbers + should pass for procs + Send: + should pass for an object that returns true for method :good + should fail for an object that returns false for method :good + None: + should fail for numbers should fail for nil - should pass for nums + should fail for procs + should fail for strings Num: + should pass for Floats should pass for Integers should fail for nil and other data types - should pass for Floats - SetOf: - should fail for a non-array - should fail for an array with one non-num - should pass for a set of nums - Exactly: - should fail for an object that inherits from Parent - should fail for an object that is not related to Parent at all - should pass for an object that is exactly a Parent + Or: + should fail for nil + should pass for nums + should pass for strings Bool: should pass for an argument that is a boolean should fail for nil - DescendantOf: - should fail for a number class - should pass for a hash - should fail for a non-class - should pass for Array + StrictHash: + when given an input with extra keys + raises an error + when given an exact correct input + does not raise an error + when given not a hash + raises an error + when given an input with correct keys but wrong types + raises an error + when given an input with missing keys + raises an error + RangeOf: + should fail for a badly-defined range + should fail for a range with incorrect data type + should fail for a non-range + should pass for a range of nums + should pass for a range of dates + 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 + ArrayOf: + should fail for a non-array + should fail for an array with one non-num + should pass for an array of nums + RespondTo: + should fail for an object that doesn't respond to :good + should pass for an object that responds to :good Contracts::Support - eigenclass_of - returns the eigenclass of a given object eigenclass? - is falsey for non-singleton classes is truthy for singleton classes + is falsey for non-singleton classes + eigenclass_of + returns the eigenclass of a given object -Top 10 slowest examples (0.07331 seconds, 18.8% of total time): - Contracts: pattern matching should not fall through to next pattern when there is a deep contract violation - 0.03282 seconds ./spec/contracts_spec.rb:55 - Contract.override_validator allows to override valid contract - 0.00742 seconds ./spec/override_validators_spec.rb:45 - Contracts: method called with blocks should enforce return value inside lambda with other parameter - 0.0058 seconds ./spec/methods_spec.rb:50 - Contracts: no contracts feature disables invariants - 0.00577 seconds ./spec/contracts_spec.rb:167 - Contracts: Nat: should fail for nil and other data types - 0.00388 seconds ./spec/builtin_contracts_spec.rb:113 - Contracts: Num: should fail for nil and other data types - 0.00377 seconds ./spec/builtin_contracts_spec.rb:41 - Contracts: Pos: should fail for nil and other data types - 0.00365 seconds ./spec/builtin_contracts_spec.rb:64 +Contract validators + Regexp + should fail for a non-matching string + should pass for a matching string + within an array + should pass for a matching string + within a hash + should pass for a matching string + Range + fails when value is incorrect + passes when value is in range + fails when value is not in range + +Contracts::Invariants + works when all invariants are holding + raises invariant violation error when any of invariants are not holding + +Top 10 slowest examples (0.02435 seconds, 12.2% of total time): + Contract.override_validator allows to override default validator + 0.00719 seconds ./spec/override_validators_spec.rb:127 + Contract.override_validator allows to override simple validators + 0.00379 seconds ./spec/override_validators_spec.rb:9 Contract.override_validator allows to override class validator - 0.00348 seconds ./spec/override_validators_spec.rb:96 - Contracts: Neg: should fail for nil and other data types - 0.00337 seconds ./spec/builtin_contracts_spec.rb:87 + 0.002 seconds ./spec/override_validators_spec.rb:96 Contracts: RangeOf: should fail for a non-range - 0.00335 seconds ./spec/builtin_contracts_spec.rb:295 + 0.00184 seconds ./spec/builtin_contracts_spec.rb:295 + Contracts: Pos: should fail for nil and other data types + 0.00169 seconds ./spec/builtin_contracts_spec.rb:64 + Contracts: Neg: should fail for nil and other data types + 0.00167 seconds ./spec/builtin_contracts_spec.rb:87 + Contracts: Nat: should fail for nil and other data types + 0.00161 seconds ./spec/builtin_contracts_spec.rb:113 + Contracts: Num: should fail for nil and other data types + 0.0016 seconds ./spec/builtin_contracts_spec.rb:41 + Contracts: KeywordArgs: should fail for incorrect input + 0.00152 seconds ./spec/builtin_contracts_spec.rb:374 + Contract.override_validator allows to override valid contract + 0.00143 seconds ./spec/override_validators_spec.rb:45 Top 9 slowest example groups: Contract - 0.0045 seconds average (0.018 seconds / 4 examples) ./spec/override_validators_spec.rb:1 + 0.00391 seconds average (0.01564 seconds / 4 examples) ./spec/override_validators_spec.rb:1 + Contract validators + 0.00088 seconds average (0.00614 seconds / 7 examples) ./spec/validators_spec.rb:3 Contracts: - 0.00264 seconds average (0.01057 seconds / 4 examples) ./spec/methods_spec.rb:1 + 0.00085 seconds average (0.07461 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 + Contracts::Support + 0.00081 seconds average (0.00243 seconds / 3 examples) ./spec/support_spec.rb:2 Contracts: - 0.0017 seconds average (0.17515 seconds / 103 examples) ./spec/contracts_spec.rb:1 + 0.00079 seconds average (0.00315 seconds / 4 examples) ./spec/methods_spec.rb:1 Contracts: - 0.00159 seconds average (0.13972 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 - Contracts::Support - 0.00152 seconds average (0.00456 seconds / 3 examples) ./spec/support_spec.rb:2 + 0.00078 seconds average (0.08017 seconds / 103 examples) ./spec/contracts_spec.rb:1 Contracts: - 0.00149 seconds average (0.02688 seconds / 18 examples) ./spec/attrs_spec.rb:1 + 0.00077 seconds average (0.01386 seconds / 18 examples) ./spec/attrs_spec.rb:1 module methods - 0.0013 seconds average (0.00259 seconds / 2 examples) ./spec/module_spec.rb:10 - Contract validators - 0.00111 seconds average (0.00779 seconds / 7 examples) ./spec/validators_spec.rb:3 + 0.00072 seconds average (0.00144 seconds / 2 examples) ./spec/module_spec.rb:10 Contracts::Invariants - 0.00075 seconds average (0.00149 seconds / 2 examples) ./spec/invariants_spec.rb:2 + 0.00043 seconds average (0.00086 seconds / 2 examples) ./spec/invariants_spec.rb:2 -Finished in 0.38898 seconds (files took 0.49506 seconds to load) +Finished in 0.19984 seconds (files took 0.23052 seconds to load) 231 examples, 0 failures -Randomized with seed 49561 +Randomized with seed 50845 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1353,12 +1389,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/130194/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/130194/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/43808 and its subdirectories -I: Current time: Tue Mar 4 04:10:11 -12 2025 -I: pbuilder-time-stamp: 1741104611 +I: removing directory /srv/workspace/pbuilder/130194 and its subdirectories +I: Current time: Tue Apr 7 12:32:06 +14 2026 +I: pbuilder-time-stamp: 1775514726