Diff of the two buildlogs: -- --- b1/build.log 2024-04-29 22:49:52.058540062 +0000 +++ b2/build.log 2024-04-29 22:51:24.922586257 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sun Jun 1 17:11:12 -12 2025 -I: pbuilder-time-stamp: 1748841072 +I: Current time: Tue Apr 30 12:49:54 +14 2024 +I: pbuilder-time-stamp: 1714430994 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -27,51 +27,83 @@ 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/2599979/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2126180/tmp/hooks/D01_modify_environment starting +debug: Running on infom01-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Apr 29 22:50 /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/2126180/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2126180/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='amd64' - 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]="21" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='amd64' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='6dca014c1fe94728ac54fb727a37959d' - 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='2599979' - PS1='# ' - PS2='> ' + INVOCATION_ID=e6d36007e5f4491ebe09e2613cc07391 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2126180 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.k2hbgPe0/pbuilderrc_WFrY --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.k2hbgPe0/b1 --logfile b1/build.log ruby-contracts_0.17-2.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' + 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.k2hbgPe0/pbuilderrc_qddz --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.k2hbgPe0/b2 --logfile b2/build.log ruby-contracts_0.17-2.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' I: uname -a - Linux infom02-amd64 6.6.13+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.6.13-1~bpo12+1 (2024-02-15) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-20-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 24 13:34 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2599979/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 23 11:24 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2126180/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -352,7 +384,7 @@ Get: 131 http://deb.debian.org/debian trixie/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 132 http://deb.debian.org/debian trixie/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 133 http://deb.debian.org/debian trixie/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 50.0 MB in 1s (81.7 MB/s) +Fetched 50.0 MB in 1s (94.1 MB/s) debconf: delaying package configuration, since apt-utils is not installed dpkg: libdb5.3:amd64: dependency problems, but removing anyway as you requested: libperl5.38:amd64 depends on libdb5.3. @@ -811,8 +843,8 @@ Setting up tzdata (2024a-3) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon Jun 2 05:12:18 UTC 2025. -Universal Time is now: Mon Jun 2 05:12:18 UTC 2025. +Local time is now: Mon Apr 29 22:50:58 UTC 2024. +Universal Time is now: Mon Apr 29 22:50:58 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -932,7 +964,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/2126180/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/2126180/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 @@ -960,13 +996,13 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-contracts/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-contracts-0.17/debian/ruby-contracts -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250601-2611047-eb9ef2/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20240430-2135726-wwqstf/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash Successfully built RubyGem Name: contracts Version: 0.17 File: contracts-0.17.gem -/usr/bin/ruby3.1 -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/d20250601-2611047-eb9ef2/contracts-0.17.gem +/usr/bin/ruby3.1 -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/d20240430-2135726-wwqstf/contracts-0.17.gem Failed to load /dev/null because it doesn't contain valid YAML hash /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 @@ -1032,201 +1068,313 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 29680 +Randomized with seed 2766 + +Contract validators + 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 + Range + passes when value is in range + fails when value is not in range + fails when value is incorrect + +Contracts::Support + eigenclass_of + returns the eigenclass of a given object + eigenclass? + is falsey for non-singleton classes + is truthy for singleton classes Contracts: - blocks - should succeed for maybe proc with proc + classes should fail for incorrect input - should fail for maybe proc with invalid input should pass for correct 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 + usage in the singleton class of a subclass + should work with a valid contract on a singleton method + 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 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 - passes for instance of class including module + passes for instance of class including both modules + passes for instance of class including inherited module + pattern matching + 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 + if the return contract for a pattern match fails, it should fail instead of trying the next pattern match + should work as expected when there is no contract violation + when failure_callback was overriden + 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 + calls a method when first pattern matches varargs - should pass for correct input should work with arg before splat should fail for incorrect input - module usage - with singleton class methods - should check contract - with instance methods - should check contract - with singleton methods - should check contract - 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 - 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 + should pass for correct input + instance and class methods + should allow a class to have an instance method and a class method with the same name class methods should fail for incorrect input should pass for correct input - classes with extended modules - works correctly with methods with passing contracts - should not fail with 'undefined method 'Contract'' - works correctly with methods with passing contracts - is possible to define it basic should fail for insufficient arguments should fail for insufficient contracts - usage in the singleton class of a subclass - should work with a valid contract on a singleton method - default args to functions - should work for a function call that relies on default args - instance methods - should allow two classes to have the same method with different contracts - classes with a valid? class method - should pass for correct input + Procs should fail for incorrect input + should pass for correct input 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 + Arrays + should fail for some incorrect elements + should pass for correct input + should fail for insufficient items + no contracts feature + disables invariants + does not disable pattern matching + disables normal contract checks + classes + should not fail for an object that is a subclass of the type in the contract + should not fail for an object that is the exact type as the contract + module usage + with instance methods + should check contract + with singleton methods + should check contract + with singleton class methods + should check contract varargs with block should fail for incorrect input should pass for correct input when block has Func contract should fail for incorrect input + 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 + classes with extended modules + works correctly with methods with passing contracts + should not fail with 'undefined method 'Contract'' + works correctly with methods with passing contracts + is possible to define it + functype + should correctly print out a class method's type + should correctly print out a instance method's type + singleton methods self in inherited methods + should be a proper self + 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 on functions should fail for a returned 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 with weak other args - should pass for a function that passes the contract - should not fail for a returned function that passes the contract - should fail for a function that doesn't pass the contract should pass for a function that passes the contract as in tutorial - should fail for a returned function that receives the wrong argument type should fail for a function that doesn't pass the contract with weak other args - 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 - classes - should pass for correct input - should fail for incorrect input + should pass for a function that passes the contract + should fail for a function that doesn't pass the contract + should not fail for a returned function that passes the contract + default args to functions + should work for a function call that relies on default args Hashes + should pass even if some keys don't have contracts should fail for incorrect input 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 + blocks + should pass for correct input + should fail for maybe proc with invalid input + should succeed for maybe proc with proc + should handle properly lack of block when there are other arguments + 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 + Contracts to_s formatting in expected + should not contain Contracts:: module prefix + should contain to_s representation within a nested Array contract + should contain to_s representation within a nested Hash contract + should contain to_s representation within a Hash contract + should show empty quotes as "" + should still show nils, not just blank space + should not stringify native types + should wrap and pretty print for long param contracts + should not use custom to_s if empty string + should contain to_s representation within an Array contract + should wrap and pretty print for long return contracts anonymous classes does not fail when contract is satisfied fails with error when contract is violated - instance and class methods - should allow a class to have an instance method and a class method with the same name - singleton methods self in inherited methods - should be a proper self - no contracts feature - disables normal contract checks - does not disable pattern matching - disables invariants anonymous modules - fails with error when contract is violated does not fail when contract is satisfied + fails with error when contract is violated when called on module itself does not fail when contract is satisfied fails with error when contract is violated - Contracts to_s formatting in expected - should not stringify native types - should contain to_s representation within a nested Hash contract - should not use custom to_s if empty string - 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 a nested Array contract - should wrap and pretty print for long return contracts - should still show nils, not just blank space - should contain to_s representation within an Array contract - should show empty quotes as "" - pattern matching - should fail when the pattern-matched method's contract fails - should fail if multiple methods are defined with the same contract (for pattern-matching) - should work as expected when there is no contract violation - should work for differing arities - should not fall through to next pattern when there is a deep contract violation - if the return contract for a pattern match fails, it should fail instead of trying the next pattern match - when failure_callback was overriden - 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 - falls through to 2nd pattern when first pattern does not match - Procs - should pass for correct input + 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 + classes with a valid? class method should fail for incorrect input - 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 - functype - should correctly print out a instance method's type - should correctly print out a class method's type - 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 - Arrays - should fail for some incorrect elements should pass for correct input - should fail for insufficient items + +Contracts: + Attrs: + attr_writer_with_contract + setting invalid type for second val + setting valid type for second val + getting + setting invalid type + setting valid type + attr_reader_with_contract + setting + getting invalid type + getting invalid type for second val + getting valid type for second val + getting valid type + attr_accessor_with_contract + getting valid type + setting invalid type for second val + setting valid type for second val + getting invalid type for second val + setting invalid type + setting valid type + getting invalid type + getting valid type for second val + +Contracts::Invariants + raises invariant violation error when any of invariants are not holding + works when all invariants are holding + +Contracts: + method called with blocks + should enforce return value inside lambda with no other parameter + 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 module methods should fail for incorrect input should pass for correct input Contracts: - RespondTo: - should fail for an object that doesn't respond to :good - should pass for an object that responds to :good - Or: - should pass for nums - should fail for nil - should pass for strings - ArrayOf: - should pass for an array of nums + 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 input with correct keys but wrong types + raises an error + when given an exact correct input + does not raise an error + SetOf: should fail for a non-array + should pass for a set of nums should fail for an array with one non-num + Eq: + should pass for a module + should pass for a class + should pass for other values + should fail when not equal + should fail when given instance of class Neg: - should fail for 0 - should fail for positive numbers - should pass for negative numbers - should fail for nil and other data types - Nat: - should fail for positive non-whole numbers should fail for nil and other data types + should pass for negative numbers + should fail for positive numbers + should fail for 0 + KeywordArgs: + should fail if some keys don't have contracts + should fail for incorrect input + should pass for exact correct input + should fail if a key with a contract on it isn't provided + RangeOf: + should fail for a non-range + should pass for a range of nums + should fail for a badly-defined range + should pass for a range of dates + should fail for a range with incorrect data type + 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 pass for an array of nums + should fail for an array with one non-num + Or: + should pass for strings + should fail for nil + should pass for nums + Exactly: + should fail for an object that is not related to Parent at all + should pass for an object that is exactly a Parent + should fail for an object that inherits from Parent + Pos: should fail for negative numbers - should pass for 0 - should pass for positive whole numbers + should pass for positive numbers + should fail for 0 + should fail for nil and other data types + Not: + should pass for an argument that isn't nil + should fail for nil + Send: + should pass for an object that returns true for method :good + should fail for an object that returns false for method :good + Any: + should pass for strings + should pass for numbers + should pass for procs + should pass for nil Maybe: should pass for nums - should pass for nils should fail for strings + should pass for nils + Enum: + should fail for an object that is not included + should pass for an object that is included + Bool: + should pass for an argument that is a boolean + should fail for nil + RespondTo: + should fail for an object that doesn't respond to :good + should pass for an object that responds to :good Num: should fail for nil and other data types - should pass for Integers should pass for Floats - StrictHash: - when given an input with extra keys - raises an error - when given an input with missing 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 - when given not a hash - raises an error + should pass for Integers + Nat: + should pass for positive whole numbers + should fail for positive non-whole numbers + should fail for negative numbers + should fail for nil and other data types + should pass for 0 + Xor: + should fail for an object with both methods :good and :bad + should pass for an object with a method :bad + should fail for an object with neither method + should pass for an object with a method :good HashOf: doesn't allow to specify multiple key-value pairs with pretty syntax given an unfulfilled contract @@ -1235,189 +1383,77 @@ is expected to raise ContractError is expected to raise ContractError #to_s - given String => Num - is expected to eq "Hash" given Symbol => String is expected to eq "Hash" + given String => Num + is expected to eq "Hash" given a fulfilled contract is expected to eq 2 is expected to eq 2 - Xor: - should fail for an object with neither method - 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 - Pos: - should fail for 0 - should fail for nil and other data types - should fail for negative numbers - should pass for positive numbers - 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 None: - should fail for numbers should fail for procs - should fail for strings - should fail for nil - Any: - should pass for nil - should pass for numbers - should pass for strings - should pass for procs - Not: - should pass for an argument that isn't nil should fail for nil + should fail for strings + should fail for numbers DescendantOf: should pass for Array should fail for a non-class should pass for a hash should fail for a number class - SetOf: - should fail for an array with one non-num - should pass for a set of nums - should fail for a non-array - Enum: - should fail for an object that is not included - should pass for an object that is included - Bool: - should pass for an argument that is a boolean - should fail for nil - 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 - RangeOf: - should fail for a non-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 badly-defined range - 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 - Send: - should pass for an object that returns true for method :good - should fail for an object that returns false for method :good - Optional: - can't be used outside of KeywordArgs - Eq: - should pass for a class - should pass for a module - should pass for other values - should fail when not equal - should fail when given instance of class Contract .override_validator - allows to override class validator - allows to override valid contract allows to override default validator + allows to override valid contract allows to override simple validators + allows to override class validator -Contracts: - method called with blocks - should enforce return value inside lambda with other parameter - should enforce return value inside lambda with no other parameter - should enforce return value inside block with other parameter - should enforce return value inside block with no other parameter - -Contracts::Invariants - works when all invariants are holding - raises invariant violation error when any of invariants are not holding - -Contract validators - 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 - Range - fails when value is incorrect - fails when value is not in range - passes when value is in range - -Contracts: - Attrs: - attr_reader_with_contract - setting - getting valid type - getting valid type for second val - getting invalid type for second val - getting invalid type - attr_accessor_with_contract - getting invalid type for second val - getting valid type for second val - getting invalid type - setting invalid type - setting valid type - setting invalid type for second val - getting valid type - setting valid type for second val - attr_writer_with_contract - setting invalid type - setting invalid type for second val - setting valid type - getting - setting valid type for second val - -Contracts::Support - eigenclass_of - returns the eigenclass of a given object - eigenclass? - is falsey for non-singleton classes - is truthy for singleton classes - -Top 10 slowest examples (0.05061 seconds, 16.6% of total time): +Top 10 slowest examples (0.02487 seconds, 16.1% of total time): Contracts: pattern matching should not fall through to next pattern when there is a deep contract violation - 0.0192 seconds ./spec/contracts_spec.rb:55 - Contracts: DescendantOf: should pass for a hash - 0.00692 seconds ./spec/builtin_contracts_spec.rb:19 - Contracts: Num: should fail for nil and other data types - 0.00535 seconds ./spec/builtin_contracts_spec.rb:41 - Contracts: HashOf: given an unfulfilled contract is expected to raise ContractError - 0.0046 seconds ./spec/builtin_contracts_spec.rb:410 - Contracts: Not: should fail for nil - 0.00447 seconds ./spec/builtin_contracts_spec.rb:264 + 0.00823 seconds ./spec/contracts_spec.rb:55 + Contracts: module usage with singleton methods should check contract + 0.00391 seconds ./spec/contracts_spec.rb:190 + Contract validators Regexp should fail for a non-matching string + 0.00189 seconds ./spec/validators_spec.rb:31 + Contracts: RespondTo: should pass for an object that responds to :good + 0.00179 seconds ./spec/builtin_contracts_spec.rb:204 + Contracts: Attrs: attr_accessor_with_contract setting invalid type + 0.00171 seconds ./spec/attrs_spec.rb:93 + Contract validators Regexp should pass for a matching string + 0.00159 seconds ./spec/validators_spec.rb:27 + Contract.override_validator allows to override class validator + 0.0015 seconds ./spec/override_validators_spec.rb:96 + Contract.override_validator allows to override default validator + 0.00143 seconds ./spec/override_validators_spec.rb:127 Contracts: RangeOf: should fail for a non-range - 0.00267 seconds ./spec/builtin_contracts_spec.rb:295 - Contracts: Neg: should fail for nil and other data types - 0.00194 seconds ./spec/builtin_contracts_spec.rb:87 - Contracts: StrictHash: when given an input with correct keys but wrong types raises an error - 0.00191 seconds ./spec/builtin_contracts_spec.rb:434 - Contracts: Bool: should fail for nil - 0.00188 seconds ./spec/builtin_contracts_spec.rb:342 - Contracts: Nat: should fail for nil and other data types - 0.00167 seconds ./spec/builtin_contracts_spec.rb:113 + 0.00141 seconds ./spec/builtin_contracts_spec.rb:295 + Contracts: Num: should fail for nil and other data types + 0.0014 seconds ./spec/builtin_contracts_spec.rb:41 Top 9 slowest example groups: - Contracts: - 0.00173 seconds average (0.15217 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 Contract - 0.0013 seconds average (0.00518 seconds / 4 examples) ./spec/override_validators_spec.rb:1 - Contracts: - 0.0012 seconds average (0.124 seconds / 103 examples) ./spec/contracts_spec.rb:1 + 0.00161 seconds average (0.00645 seconds / 4 examples) ./spec/override_validators_spec.rb:1 + Contract validators + 0.00103 seconds average (0.0072 seconds / 7 examples) ./spec/validators_spec.rb:3 Contracts::Support - 0.00071 seconds average (0.00212 seconds / 3 examples) ./spec/support_spec.rb:2 + 0.00083 seconds average (0.00249 seconds / 3 examples) ./spec/support_spec.rb:2 Contracts: - 0.00067 seconds average (0.00269 seconds / 4 examples) ./spec/methods_spec.rb:1 - module methods - 0.00046 seconds average (0.00092 seconds / 2 examples) ./spec/module_spec.rb:10 - Contract validators - 0.00045 seconds average (0.00314 seconds / 7 examples) ./spec/validators_spec.rb:3 + 0.00066 seconds average (0.06845 seconds / 103 examples) ./spec/contracts_spec.rb:1 Contracts: - 0.0004 seconds average (0.00725 seconds / 18 examples) ./spec/attrs_spec.rb:1 + 0.00066 seconds average (0.00264 seconds / 4 examples) ./spec/methods_spec.rb:1 + Contracts: + 0.00064 seconds average (0.05602 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 + Contracts: + 0.00047 seconds average (0.00841 seconds / 18 examples) ./spec/attrs_spec.rb:1 + module methods + 0.00045 seconds average (0.0009 seconds / 2 examples) ./spec/module_spec.rb:10 Contracts::Invariants - 0.00039 seconds average (0.00078 seconds / 2 examples) ./spec/invariants_spec.rb:2 + 0.00037 seconds average (0.00073 seconds / 2 examples) ./spec/invariants_spec.rb:2 -Finished in 0.30504 seconds (files took 0.31762 seconds to load) +Finished in 0.15467 seconds (files took 0.21202 seconds to load) 231 examples, 0 failures -Randomized with seed 29680 +Randomized with seed 2766 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1448,12 +1484,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/2126180/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2126180/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/2599979 and its subdirectories -I: Current time: Sun Jun 1 17:12:51 -12 2025 -I: pbuilder-time-stamp: 1748841171 +I: removing directory /srv/workspace/pbuilder/2126180 and its subdirectories +I: Current time: Tue Apr 30 12:51:24 +14 2024 +I: pbuilder-time-stamp: 1714431084