Diff of the two buildlogs: -- --- b1/build.log 2024-05-17 03:02:35.860153355 +0000 +++ b2/build.log 2024-05-17 03:03:26.613995493 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu May 16 14:59:59 -12 2024 -I: pbuilder-time-stamp: 1715914799 +I: Current time: Thu Jun 19 23:25:38 +14 2025 +I: pbuilder-time-stamp: 1750325138 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -27,52 +27,84 @@ 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/3082991/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3237034/tmp/hooks/D01_modify_environment starting +debug: Running on codethink01-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 Jun 19 09:25 /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/3237034/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3237034/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="aarch64-unknown-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=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='9c8ae5b25cad4ecf84dbd66bbd2f7e77' - 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='3082991' - PS1='# ' - PS2='> ' + INVOCATION_ID=59bb2d1a069a445b85cee501df0b5a9f + 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=3237034 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.43LKcgqZ/pbuilderrc_FgiS --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.43LKcgqZ/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' - 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.43LKcgqZ/pbuilderrc_ihDf --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.43LKcgqZ/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' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink04-arm64 6.1.0-21-cloud-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-cloud-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 14 11:23 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3082991/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Jun 16 17:48 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3237034/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -245,7 +277,7 @@ Get: 129 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 130 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 131 http://deb.debian.org/debian trixie/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 46.1 MB in 1s (56.8 MB/s) +Fetched 46.1 MB in 0s (167 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19744 files and directories currently installed.) @@ -682,8 +714,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri May 17 03:01:06 UTC 2024. -Universal Time is now: Fri May 17 03:01:06 UTC 2024. +Local time is now: Thu Jun 19 09:26:02 UTC 2025. +Universal Time is now: Thu Jun 19 09:26:02 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -803,7 +835,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/3237034/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/3237034/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 @@ -831,13 +867,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/d20240516-3127619-9woqg1/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250619-3250341-vm6kb3/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/d20240516-3127619-9woqg1/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/d20250619-3250341-vm6kb3/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 @@ -903,275 +939,305 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 21060 - -module methods - should fail for incorrect input - should pass for correct input +Randomized with seed 4949 Contract validators + Range + fails when value is incorrect + passes when value is in range + fails when value is not in range Regexp - should fail for a non-matching string should pass for a matching string - within a hash - should pass for a matching string + should fail for a non-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: - 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 block with no other parameter - should enforce return value inside lambda with other parameter + within a hash + should pass for a matching string Contracts: - 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 + Maybe: + should pass for nums + should pass for nils + should fail for strings + Nat: + should fail for nil and other data types + should pass for positive whole numbers + should pass for 0 + should fail for negative numbers + should fail for positive non-whole numbers + Exactly: + should fail for an object that inherits from Parent + should pass for an object that is exactly a Parent + should fail for an object that is not related to Parent at all Send: - should fail for an object that returns false for method :good should pass for an object that returns true for method :good + should fail for an object that returns false for method :good + KeywordArgs: + should fail if some keys don't have contracts + should fail if a key with a contract on it isn't provided + should pass for exact correct input + should fail for incorrect input Neg: - should fail for 0 should fail for nil and other data types - should fail for positive numbers should pass for negative numbers - SetOf: - should fail for an array with one non-num + should fail for positive numbers + should fail for 0 + ArrayOf: should fail for a non-array + should fail for an array with one non-num + should pass for an array of nums + 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 + Pos: + should pass for positive numbers + should fail for nil and other data types + should fail for negative numbers + should fail for 0 + Eq: + should pass for other values + should fail when given instance of class + should pass for a module + should fail when not equal + should pass for a class + SetOf: should pass for a set of nums + should fail for a non-array + should fail for an array with one non-num None: - should fail for numbers - should fail for strings should fail for nil should fail for procs - 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 + should fail for strings + should fail for numbers + Optional: + can't be used outside of KeywordArgs + RespondTo: + should fail for an object that doesn't respond to :good + should pass for an object that responds to :good + RangeOf: + should pass for a range of nums + should fail for a non-range + should fail for a badly-defined range + should fail for a range with incorrect data type + should pass for a range of dates + Bool: + should pass for an argument that is a boolean + should fail for nil + DescendantOf: + should fail for a non-class + should pass for Array + should fail for a number class + should pass for a hash 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 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 #to_s - given Symbol => String - is expected to eq "Hash" given String => Num is expected to eq "Hash" - Eq: - should fail when given instance of class - should pass for other values - should fail when not equal - should pass for a class - should pass for a module - Num: - should pass for Floats - should fail for nil and other data types - should pass for Integers + given Symbol => String + is expected to eq "Hash" + StrictHash: + 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 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 + Any: + should pass for procs + should pass for strings + should pass for numbers + should pass for nil Not: - should fail for nil should pass for an argument that isn't nil - Or: should fail for nil - should pass for nums - should pass for strings + Num: + should pass for Floats + should pass for Integers + should fail for nil and other data types Xor: - 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 + should fail for an object with neither method should fail for an object with both methods :good and :bad - Optional: - can't be used outside of KeywordArgs - Pos: - should fail for negative numbers - should fail for 0 - should fail for nil and other data types - should pass for positive numbers - Any: - should pass for procs - should pass for numbers + should pass for an object with a method :bad + Or: should pass for strings - should pass for nil - DescendantOf: - should fail for a non-class - should pass for a hash - should pass for Array - should fail for a number class - KeywordArgs: - should fail if some keys don't have contracts - 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 pass for nums + should fail for nil Enum: should fail for an object that is not included should pass for an object that is included - Maybe: - should pass for nils - should pass for nums - should fail for strings - ArrayOf: - should pass for an array of nums - should fail for a non-array - should fail for an array with one non-num - RespondTo: - should fail for an object that doesn't respond to :good - should pass for an object that responds to :good - Nat: - should pass for 0 - should pass for positive whole numbers - should fail for negative numbers - should fail for nil and other data types - should fail for positive non-whole numbers - Bool: - should fail for nil - should pass for an argument that is a boolean - StrictHash: - when given not a hash - raises an error - when given an exact correct input - does not raise 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 - RangeOf: - should fail for a non-range - should pass for a range of nums - should fail for a range with incorrect data type - should pass for a range of dates - should fail for a badly-defined range Contracts::Invariants works when all invariants are holding raises invariant violation error when any of invariants are not holding +Contracts: + Attrs: + attr_reader_with_contract + getting invalid type for second val + getting valid type for second val + setting + getting valid type + getting invalid type + attr_accessor_with_contract + getting valid type + getting invalid type + setting invalid type + getting invalid type for second val + setting valid type for second val + setting invalid type for second val + getting valid type for second val + setting valid type + attr_writer_with_contract + getting + setting invalid type for second val + setting valid type + setting valid type for second val + setting invalid type + +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 + +Contract + .override_validator + allows to override class validator + allows to override simple validators + allows to override valid contract + allows to override default validator + Contracts::Support - eigenclass_of - returns the eigenclass of a given object eigenclass? - is truthy for singleton classes is falsey for non-singleton classes + is truthy for singleton classes + eigenclass_of + returns the eigenclass of a given object + +module methods + should fail for incorrect input + should pass for correct input Contracts: - blocks - should fail for incorrect input - should handle properly lack of block when there are other arguments - should succeed for maybe proc with no proc - should pass for correct input - should fail for maybe proc with invalid input - should succeed for maybe proc with 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 - 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 - 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 - basic - should fail for insufficient contracts - should fail for insufficient arguments - usage in the singleton class of a subclass - should work with a valid contract on a singleton method - Contracts to_s formatting in expected - should still show nils, not just blank space - should not contain Contracts:: module prefix - should contain to_s representation within a Hash contract - should wrap and pretty print for long param contracts - should wrap and pretty print for long return contracts - should not stringify native types - should contain to_s representation within a nested Array contract - 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 an Array contract - should show empty quotes as "" - 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 - Arrays - should fail for insufficient items - should fail for some incorrect elements - 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 + anonymous classes + fails with error when contract is violated + does not fail when contract is satisfied + no contracts feature + does not disable pattern matching + disables invariants + disables normal contract checks pattern matching - 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 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 should fail when the pattern-matched method's contract fails - should work as expected when there is no contract violation 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 falls through to 2nd pattern when first pattern does not match - 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 + calls a method when first pattern matches + contracts for functions with no arguments + should work for functions with no args + should still work for old-style contracts for functions with no args + should not work for a function with a bad contract + 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 + inherited methods + should apply the contract to an inherited method + 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 + default args to functions + should work for a function call that relies on default args + Contracts to_s formatting in expected + should contain to_s representation within an Array contract + should wrap and pretty print for long param contracts + should contain to_s representation within a nested Hash contract + should contain to_s representation within a Hash contract + should not stringify native types + should wrap and pretty print for long return contracts + should not use custom to_s if empty string + should not contain Contracts:: module prefix + should contain to_s representation within a nested Array contract + should show empty quotes as "" + should still show nils, not just blank space varargs - should pass for correct input should work with arg before splat should fail for incorrect input - default args to functions - should work for a function call that relies on default args - functype - should correctly print out a class method's type - should correctly print out a instance method's type + should pass for correct input + classes + should fail for incorrect input + should pass for correct input + blocks + should handle properly lack of block when there are other arguments + should pass for correct input + should fail for incorrect input + should succeed for maybe proc with proc + should fail for maybe proc with invalid 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 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 - Procs - should pass for correct input + Hashes + should fail if a key with a contract on it isn't provided + should pass for exact correct input + should pass even if some keys don't have contracts should fail for incorrect input + module contracts + passes for instance of class including inherited module + passes for instance of class including both modules + does not pass for instance of class including another module + does not pass for instance of class not including module + passes for instance of class including module class methods - should fail for incorrect input should pass for correct input - classes + should fail for incorrect input + Procs should fail for incorrect input should pass for correct input - classes with extended modules - works correctly with methods with passing contracts - is possible to define it - should not fail with 'undefined method 'Contract'' - works correctly with methods with passing contracts - inherited methods - should apply the contract to an inherited method - varargs with block + classes with a valid? class method should pass for correct input should fail for incorrect input + varargs with block + should fail for incorrect input + should pass for correct input when block has Func contract should fail for incorrect 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 - contracts on functions - should pass for a function that passes the contract with weak other args - 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 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 - 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 + when failure_callback returns false + does not call a function for which the contract fails + functype + should correctly print out a instance method's type + should correctly print out a class method's type + 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 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 @@ -1179,116 +1245,86 @@ fails with error when contract is violated does not fail when contract is satisfied when called on module itself - fails with error when contract is violated does not fail when contract is satisfied + fails with error when contract is violated instance methods should allow two classes to have the same method with different contracts + Arrays + should pass for correct input + should fail for insufficient items + should fail for some incorrect elements + classes with extended modules + works correctly with methods with passing contracts + should not fail with 'undefined method 'Contract'' + is possible to define it + works correctly with methods with passing contracts + singleton methods self in inherited methods + should be a proper self module usage - with singleton class methods + with singleton methods should check contract with instance methods should check contract - with singleton methods + with singleton class methods should check contract - classes with a valid? class method - should fail for incorrect input - should pass for correct input - no contracts feature - disables invariants - does not disable pattern matching - disables normal contract checks - anonymous classes - does not fail when contract is satisfied - fails with error when contract is violated - 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 - module contracts - passes for instance of class including both modules - passes for instance of class including inherited 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 - singleton methods self in inherited methods - should be a proper self - -Contract - .override_validator - allows to override default validator - allows to override valid contract - allows to override simple validators - allows to override class validator - -Contracts: - Attrs: - attr_reader_with_contract - getting invalid type for second val - getting valid type for second val - setting - getting valid type - getting invalid type - attr_accessor_with_contract - getting valid type for second val - setting valid type for second val - setting invalid type for second val - setting valid type - setting invalid type - getting valid type - getting invalid type for second val - getting invalid type - attr_writer_with_contract - setting invalid type for second val - setting valid type for second val - setting invalid type - setting valid type - getting + contracts on functions + should fail for a function that doesn't pass the contract with weak other args + should pass for a function that passes the contract + 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 pass for a function that passes the contract as in tutorial + should fail for a returned function that receives the wrong argument type + should not fail for a returned function that passes the contract + instance and class methods + should allow a class to have an instance method and a class method with the same name -Top 10 slowest examples (0.16556 seconds, 16.0% of total time): - Contracts: pattern matching should not fall through to next pattern when there is a deep contract violation - 0.06181 seconds ./spec/contracts_spec.rb:55 +Top 10 slowest examples (0.02995 seconds, 18.6% of total time): + Contracts: Neg: should fail for nil and other data types + 0.00712 seconds ./spec/builtin_contracts_spec.rb:87 + Contract.override_validator allows to override default validator + 0.00615 seconds ./spec/override_validators_spec.rb:127 + Contracts: contracts for functions with no arguments should still work for old-style contracts for functions with no args + 0.00379 seconds ./spec/contracts_spec.rb:23 + Contract validators Range fails when value is incorrect + 0.00283 seconds ./spec/validators_spec.rb:19 Contract.override_validator allows to override class validator - 0.01471 seconds ./spec/override_validators_spec.rb:96 - Contracts: None: should fail for numbers - 0.0137 seconds ./spec/builtin_contracts_spec.rb:137 - Contracts: anonymous modules fails with error when contract is violated - 0.01359 seconds ./spec/contracts_spec.rb:258 - Contracts: varargs with block when block has Func contract should fail for incorrect input - 0.01346 seconds ./spec/contracts_spec.rb:471 - Contracts: Procs should fail for incorrect input - 0.01295 seconds ./spec/contracts_spec.rb:331 - Contracts: RangeOf: should fail for a non-range - 0.01267 seconds ./spec/builtin_contracts_spec.rb:295 - Contracts: classes with extended modules is possible to define it - 0.00901 seconds ./spec/contracts_spec.rb:744 - Contracts: Attrs: attr_writer_with_contract setting invalid type - 0.00883 seconds ./spec/attrs_spec.rb:61 - Contracts: Contracts to_s formatting in expected should not contain Contracts:: module prefix - 0.00484 seconds ./spec/contracts_spec.rb:665 + 0.00212 seconds ./spec/override_validators_spec.rb:96 + Contract.override_validator allows to override simple validators + 0.00166 seconds ./spec/override_validators_spec.rb:9 + Contract.override_validator allows to override valid contract + 0.00162 seconds ./spec/override_validators_spec.rb:45 + Contracts: Nat: should fail for nil and other data types + 0.00161 seconds ./spec/builtin_contracts_spec.rb:113 + Contracts: Pos: should fail for nil and other data types + 0.0016 seconds ./spec/builtin_contracts_spec.rb:64 + Contracts: KeywordArgs: should fail for incorrect input + 0.00146 seconds ./spec/builtin_contracts_spec.rb:374 Top 9 slowest example groups: Contract - 0.00892 seconds average (0.03568 seconds / 4 examples) ./spec/override_validators_spec.rb:1 - module methods - 0.00762 seconds average (0.01523 seconds / 2 examples) ./spec/module_spec.rb:10 + 0.00309 seconds average (0.01236 seconds / 4 examples) ./spec/override_validators_spec.rb:1 + Contract validators + 0.00086 seconds average (0.00601 seconds / 7 examples) ./spec/validators_spec.rb:3 Contracts: - 0.00495 seconds average (0.43547 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 + 0.00074 seconds average (0.00298 seconds / 4 examples) ./spec/methods_spec.rb:1 Contracts: - 0.00432 seconds average (0.44474 seconds / 103 examples) ./spec/contracts_spec.rb:1 + 0.00066 seconds average (0.0585 seconds / 88 examples) ./spec/builtin_contracts_spec.rb:1 + Contracts::Support + 0.00065 seconds average (0.00194 seconds / 3 examples) ./spec/support_spec.rb:2 Contracts: - 0.00405 seconds average (0.0162 seconds / 4 examples) ./spec/methods_spec.rb:1 - Contract validators - 0.00317 seconds average (0.02217 seconds / 7 examples) ./spec/validators_spec.rb:3 + 0.00064 seconds average (0.06593 seconds / 103 examples) ./spec/contracts_spec.rb:1 + module methods + 0.00057 seconds average (0.00113 seconds / 2 examples) ./spec/module_spec.rb:10 Contracts: - 0.00286 seconds average (0.05155 seconds / 18 examples) ./spec/attrs_spec.rb:1 - Contracts::Support - 0.00206 seconds average (0.00617 seconds / 3 examples) ./spec/support_spec.rb:2 + 0.00056 seconds average (0.01012 seconds / 18 examples) ./spec/attrs_spec.rb:1 Contracts::Invariants - 0.00069 seconds average (0.00137 seconds / 2 examples) ./spec/invariants_spec.rb:2 + 0.00043 seconds average (0.00085 seconds / 2 examples) ./spec/invariants_spec.rb:2 -Finished in 1.04 seconds (files took 0.98843 seconds to load) +Finished in 0.16112 seconds (files took 0.20456 seconds to load) 231 examples, 0 failures -Randomized with seed 21060 +Randomized with seed 4949 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1319,12 +1355,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/3237034/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3237034/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/3082991 and its subdirectories -I: Current time: Thu May 16 15:02:34 -12 2024 -I: pbuilder-time-stamp: 1715914954 +I: removing directory /srv/workspace/pbuilder/3237034 and its subdirectories +I: Current time: Thu Jun 19 23:26:24 +14 2025 +I: pbuilder-time-stamp: 1750325184