Diff of the two buildlogs: -- --- b1/build.log 2025-03-10 18:01:03.521273027 +0000 +++ b2/build.log 2025-03-10 18:02:28.409457887 +0000 @@ -1,7 +1,6 @@ -W: cgroups are not available on the host, not using them. I: pbuilder: network access will be disabled during build -I: Current time: Sun Apr 12 12:23:07 -12 2026 -I: pbuilder-time-stamp: 1776039787 +I: Current time: Tue Mar 11 08:01:06 +14 2025 +I: pbuilder-time-stamp: 1741629666 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -26,51 +25,84 @@ dpkg-source: info: applying ruby-version-mismatch.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1509711/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1654737/tmp/hooks/D01_modify_environment starting +debug: Running on codethink04-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Mar 10 18:01 /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/1654737/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1654737/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - 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='1509711' - PS1='# ' - PS2='> ' + INVOCATION_ID=15fa0eadf1394c59a1526638d4d79538 + 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=1654737 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.pnzVTswc/pbuilderrc_y05W --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.pnzVTswc/b1 --logfile b1/build.log ruby-dry-cli_1.1.0-2.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/sbin/chroot' - 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.pnzVTswc/pbuilderrc_DMVq --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.pnzVTswc/b2 --logfile b2/build.log ruby-dry-cli_1.1.0-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 codethink03-arm64 6.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Mar 4 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1509711/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1654737/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -247,7 +279,7 @@ Get: 135 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 136 http://deb.debian.org/debian trixie/main arm64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian trixie/main arm64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 47.3 MB in 0s (132 MB/s) +Fetched 47.3 MB in 1s (78.3 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19914 files and directories currently installed.) @@ -703,8 +735,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon Apr 13 00:23:32 UTC 2026. -Universal Time is now: Mon Apr 13 00:23:32 UTC 2026. +Local time is now: Mon Mar 10 18:01:53 UTC 2025. +Universal Time is now: Mon Mar 10 18:01:53 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-minitest (5.25.4-2) ... @@ -830,7 +862,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-dry-cli-1.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-dry-cli_1.1.0-2_source.changes +I: user script /srv/workspace/pbuilder/1654737/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/1654737/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-dry-cli-1.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-dry-cli_1.1.0-2_source.changes dpkg-buildpackage: info: source package ruby-dry-cli dpkg-buildpackage: info: source version 1.1.0-2 dpkg-buildpackage: info: source distribution unstable @@ -863,14 +899,14 @@ │ ruby-dry-cli: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260412-1527742-r0ahar/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250311-1702294-sen2je/gemspec WARNING: description and summary are identical WARNING: See https://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: dry-cli Version: 1.1.0 File: dry-cli-1.1.0.gem -/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-dry-cli/usr/share/rubygems-integration/all /tmp/d20260412-1527742-r0ahar/dry-cli-1.1.0.gem +/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-dry-cli/usr/share/rubygems-integration/all /tmp/d20250311-1702294-sen2je/dry-cli-1.1.0.gem /build/reproducible-path/ruby-dry-cli-1.1.0/debian/ruby-dry-cli/usr/share/rubygems-integration/all/gems/dry-cli-1.1.0/lib/dry/cli.rb /build/reproducible-path/ruby-dry-cli-1.1.0/debian/ruby-dry-cli/usr/share/rubygems-integration/all/gems/dry-cli-1.1.0/lib/dry/cli/banner.rb /build/reproducible-path/ruby-dry-cli-1.1.0/debian/ruby-dry-cli/usr/share/rubygems-integration/all/gems/dry-cli-1.1.0/lib/dry/cli/command.rb @@ -915,94 +951,76 @@ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-dry-cli-1.1.0/debian/ruby-dry-cli/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-dry-cli-1.1.0/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/aarch64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/aarch64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation -Randomized with seed 61550 +Randomized with seed 8594 -Dry::CLI::Registry - .after - when object is given - raises error when it doesn't respond to #call - when command can't be found - raises error - when class is given - raises error when #initialize arity is not equal to 0 - .before - when object is given - raises error when it doesn't respond to #call - when class is given - raises error when #initialize arity is not equal to 0 - when command can't be found - raises error +Subcommands + works with root command subcommands + with params + with options + works with params + with help param Inherited commands works for subclasses when --help flag subclass do not -Dry::CLI::Inflector - .dasherize - downcases input - returns nil if input is nil - replaces underscores with dashes - replaces spaces with dashes - accepts any object that respond to #to_s - -Commands - with extra params - when there is a required argument - and there are options - parses both separately - -Subcommands - works with params - with help param - works with root command subcommands - with options - with params - -Processes Errors - when Pipe Exception - handles EPIPE without stacktrace - when SignalException - returns correct statuscode - Third-party gems allows to add callbacks as a block CLI + with command + with optional_arg + with underscoreed option_with_default alias + with required_argument + shows help + with boolean_option alias + with combination of aliases + with option_one alias + with underscored option_one + with underscored boolean_option when registry passing block - calls basic command with alias - calls subcommand via intermediate alias - prints available commands for unknown command - allows to invoke a subcommand via an inherited subcomand aliases + allows to override a subcommand allows to call array option + allows to invoke a subcommand via an inherited subcomand aliases + allows to override basic commands prints list options when calling help - prints required params with labels prints subcommand's subcommand - allows to override basic commands calls basic command - allows to override a subcommand - prints required params + prints first level + prints required params with labels prints available commands for unknown subcommand - allows to add a subcommand + calls subcommand via intermediate alias prints subcommand's commands + prints available commands for unknown command calls subcommand - prints first level - with help flag - shows subrun's help - shows addon's help - shows run's help - shows subcommands - shows log's help + calls basic command with alias + allows to add a subcommand + prints required params + with inherited options + run has default verbosity_level + logs has verbosity_level set to WARNING + subrun has default verbosity_level too + addons has verbosity_level set to debug works with params + a param using equal sign a param with unknown param + without params with flag param - a param using space with boolean param - without params - a param using equal sign with help param + a param using space a param using alias + with required params + with unknown param + an error is displayed if there aren't required params + with default value and using options + no required + can be used + with array param + capture all the remaining arguments + allows to omit optional array argument with extra params is accessible via options[:args] when there is a required argument @@ -1014,209 +1032,212 @@ prints error and with supported value passed call the command with the option - with required params - an error is displayed if there aren't required params - with default value and using options - no required - can be used - with unknown param - with array param - allows to omit optional array argument - capture all the remaining arguments works with root command shows help works with params - with option using equal sign - with option using space without params + with option using space with params - with inherited options - subrun has default verbosity_level too - addons has verbosity_level set to debug - run has default verbosity_level - logs has verbosity_level set to WARNING - with inherited arguments - run expects APP_NAME and CMD_NAME - subrun expects APP_NAME and CMD_NAME - addons expects APP_NAME - logs expects APP_NAME - with multible subclasses of Dry::CLI::Command - subclasses do nod share options - works with instances of commands - executes instance - with description - subclass does not inherit it - subclasses subclass does not inherit it + with option using equal sign callbacks allows to add callbacks as a block - with example + with description subclass does not inherit it + subclasses subclass does not inherit it + works with command with arguments and subcommands + shows help + works with params + with params + with option using equal sign + without params + with option using space works with params a param using alias with help param - without params a param using space + without params a param using equal sign with required params - more than required params an error is displayed if there are some required params - an error is displayed if there aren't required params - more than one param more than one param and with optional params - only one param + more than one param + more than required params more than one param and with boolean params + only one param + an error is displayed if there aren't required params and a default value - returns the passed value returns the default value if nothing is passed - works with command with arguments and subcommands - shows help - works with params - with option using equal sign - with params - with option using space - without params - passing module - prints required params with labels + returns the passed value + with inherited arguments + addons expects APP_NAME + subrun expects APP_NAME and CMD_NAME + run expects APP_NAME and CMD_NAME + logs expects APP_NAME + with help flag + shows subrun's help + shows addon's help + shows log's help + shows run's help + shows subcommands + with example + subclass does not inherit it + with multible subclasses of Dry::CLI::Command + subclasses do nod share options + works with instances of commands + executes instance + passing block with no arguments calls basic command - prints subcommand's subcommand + prints available commands for unknown subcommand + prints first level + allows to add a subcommand prints required params + prints subcommand's subcommand + prints list options when calling help + calls subcommand + prints subcommand's commands + calls subcommand via intermediate alias allows to override a subcommand allows to override basic commands - allows to add a subcommand prints available commands for unknown command - calls subcommand via intermediate alias - prints available commands for unknown subcommand - calls subcommand - prints list options when calling help - allows to invoke a subcommand via an inherited subcomand aliases - prints subcommand's commands + prints required params with labels allows to call array option calls basic command with alias - prints first level + allows to invoke a subcommand via an inherited subcomand aliases + with inherited options + run has default verbosity_level + subrun has default verbosity_level too + logs has verbosity_level set to WARNING + addons has verbosity_level set to debug with inherited arguments - logs expects APP_NAME addons expects APP_NAME - run expects APP_NAME and CMD_NAME subrun expects APP_NAME and CMD_NAME + logs expects APP_NAME + run expects APP_NAME and CMD_NAME + with example + subclass does not inherit it works with command with arguments and subcommands shows help works with params - with option using space without params - with option using equal sign with params - with inherited options - logs has verbosity_level set to WARNING - subrun has default verbosity_level too - run has default verbosity_level - addons has verbosity_level set to debug + with option using equal sign + with option using space works with params - a param using alias - a param using space without params a param using equal sign with help param + a param using space + a param using alias with required params + more than one param + only one param more than one param and with boolean params an error is displayed if there are some required params more than one param and with optional params an error is displayed if there aren't required params - only one param - more than one param more than required params and a default value - returns the default value if nothing is passed returns the passed value - callbacks - allows to add callbacks as a block - with example - subclass does not inherit it + returns the default value if nothing is passed works with root command shows help works with params with option using space - with option using equal sign with params without params - with description - subclasses subclass does not inherit it - subclass does not inherit it + with option using equal sign works with params + with flag param + a param using alias a param using equal sign + with boolean param without params with help param - with boolean param - with flag param - a param using space - a param using alias a param with unknown param + a param using space + with array param + capture all the remaining arguments + allows to omit optional array argument + with supported values + and with supported value passed + call the command with the option + and with an unknown value passed + prints error + with required params + no required + can be used + with default value and using options + with unknown param + an error is displayed if there aren't required params with extra params is accessible via options[:args] when there is a required argument parses both separately and there are options parses both separately - with required params - an error is displayed if there aren't required params - with unknown param - no required - with default value and using options - can be used - with array param - allows to omit optional array argument - capture all the remaining arguments - with supported values - and with an unknown value passed - prints error - and with supported value passed - call the command with the option + callbacks + allows to add callbacks as a block works with instances of commands executes instance with multible subclasses of Dry::CLI::Command subclasses do nod share options with help flag - shows subrun's help - shows run's help shows log's help shows subcommands shows addon's help - passing block with no arguments + shows subrun's help + shows run's help + with description + subclass does not inherit it + subclasses subclass does not inherit it + passing module + prints available commands for unknown command + allows to override a subcommand + prints required params + prints list options when calling help + prints available commands for unknown subcommand + calls subcommand prints subcommand's commands - calls basic command with alias allows to call array option - calls subcommand via intermediate alias - calls basic command - prints required params with labels - prints available commands for unknown subcommand - prints available commands for unknown command - allows to invoke a subcommand via an inherited subcomand aliases allows to override basic commands + allows to invoke a subcommand via an inherited subcomand aliases prints subcommand's subcommand - prints first level - allows to override a subcommand - calls subcommand + prints required params with labels + calls subcommand via intermediate alias allows to add a subcommand - prints required params - prints list options when calling help - works with command with arguments and subcommands - shows help - works with params - with option using space - with option using equal sign - with params - without params + prints first level + calls basic command with alias + calls basic command + with inherited arguments + logs expects APP_NAME + addons expects APP_NAME + subrun expects APP_NAME and CMD_NAME + run expects APP_NAME and CMD_NAME + with help flag + shows subrun's help + shows log's help + shows addon's help + shows subcommands + shows run's help + with example + subclass does not inherit it works with params - a param with unknown param - with boolean param + with help param with flag param a param using alias - a param using space a param using equal sign + with boolean param without params - with help param + a param with unknown param + a param using space with array param - capture all the remaining arguments allows to omit optional array argument + capture all the remaining arguments + with supported values + and with supported value passed + call the command with the option + and with an unknown value passed + prints error with extra params is accessible via options[:args] when there is a required argument @@ -1224,144 +1245,159 @@ and there are options parses both separately with required params - an error is displayed if there aren't required params + with default value and using options no required with unknown param + an error is displayed if there aren't required params can be used - with default value and using options - with supported values - and with supported value passed - call the command with the option - and with an unknown value passed - prints error - with description - subclasses subclass does not inherit it - subclass does not inherit it - with example - subclass does not inherit it + works with command with arguments and subcommands + shows help + works with params + with params + without params + with option using equal sign + with option using space + works with root command + shows help + works with params + with option using space + without params + with option using equal sign + with params + callbacks + allows to add callbacks as a block works with params a param using space a param using equal sign + with help param without params a param using alias - with help param with required params - an error is displayed if there are some required params + more than one param more than one param and with boolean params - more than one param and with optional params + only one param more than required params + more than one param and with optional params + an error is displayed if there are some required params an error is displayed if there aren't required params - only one param - more than one param and a default value - returns the default value if nothing is passed returns the passed value - works with root command - shows help - works with params - with option using space - with option using equal sign - with params - without params - callbacks - allows to add callbacks as a block + returns the default value if nothing is passed + with inherited options + subrun has default verbosity_level too + addons has verbosity_level set to debug + run has default verbosity_level + logs has verbosity_level set to WARNING + with description + subclasses subclass does not inherit it + subclass does not inherit it with multible subclasses of Dry::CLI::Command subclasses do nod share options works with instances of commands executes instance - with inherited options - logs has verbosity_level set to WARNING - run has default verbosity_level - subrun has default verbosity_level too - addons has verbosity_level set to debug - with help flag - shows log's help - shows run's help - shows addon's help - shows subrun's help - shows subcommands - with inherited arguments - run expects APP_NAME and CMD_NAME - addons expects APP_NAME - subrun expects APP_NAME and CMD_NAME - logs expects APP_NAME + +Inline with command - with boolean_option alias - with underscoreed option_with_default alias - with underscored option_one - with required_argument - with option_one alias - with combination of aliases shows help - with optional_arg - with underscored boolean_option + with underscored option_one + +Dry::CLI::Registry + .after + when object is given + raises error when it doesn't respond to #call + when class is given + raises error when #initialize arity is not equal to 0 + when command can't be found + raises error + .before + when object is given + raises error when it doesn't respond to #call + when class is given + raises error when #initialize arity is not equal to 0 + when command can't be found + raises error + +Dry::CLI::Inflector + .dasherize + replaces underscores with dashes + downcases input + replaces spaces with dashes + accepts any object that respond to #to_s + returns nil if input is nil Rendering prints available commands for unknown command -Inline - with command - with underscored option_one - shows help - Single command - root command with arguments and subcommands - with arguments - with options with command shows usage - with combination of aliases shows help with option_one + with combination of aliases + root command with arguments and subcommands + with options + with arguments + +Processes Errors + when SignalException + returns correct statuscode + when Pipe Exception + handles EPIPE without stacktrace + +Commands + with extra params + when there is a required argument + and there are options + parses both separately -Top 10 slowest examples (1.81 seconds, 59.4% of total time): +Top 10 slowest examples (1.97 seconds, 59.2% of total time): Processes Errors when SignalException returns correct statuscode - 0.51546 seconds ./spec/integration/processes_errors_spec.rb:5 + 0.50616 seconds ./spec/integration/processes_errors_spec.rb:5 Processes Errors when Pipe Exception handles EPIPE without stacktrace - 0.19024 seconds ./spec/integration/processes_errors_spec.rb:24 + 0.17447 seconds ./spec/integration/processes_errors_spec.rb:24 Subcommands works with root command subcommands with params - 0.15324 seconds ./spec/integration/subcommands_spec.rb:37 - Rendering prints available commands for unknown command - 0.1526 seconds ./spec/integration/rendering_spec.rb:6 - Single command root command with arguments and subcommands with arguments - 0.14602 seconds ./spec/integration/single_command_spec.rb:59 - Inherited commands when --help flag subclass do not - 0.13379 seconds ./spec/integration/inherited_commands_spec.rb:5 + 0.17282 seconds ./spec/integration/subcommands_spec.rb:37 Single command root command with arguments and subcommands with options - 0.13367 seconds ./spec/integration/single_command_spec.rb:70 + 0.16253 seconds ./spec/integration/single_command_spec.rb:70 + Inline with command shows help + 0.16161 seconds ./spec/integration/inline_spec.rb:9 + Single command with command shows help + 0.16138 seconds ./spec/integration/single_command_spec.rb:16 + Single command with command with option_one + 0.16021 seconds ./spec/integration/single_command_spec.rb:41 Third-party gems allows to add callbacks as a block - 0.12978 seconds ./spec/integration/third_party_gems_spec.rb:4 - Commands with extra params when there is a required argument and there are options parses both separately - 0.12977 seconds ./spec/integration/commands_spec.rb:7 - Single command with command shows usage - 0.12967 seconds ./spec/integration/single_command_spec.rb:9 + 0.16002 seconds ./spec/integration/third_party_gems_spec.rb:4 + Subcommands works with root command subcommands with options + 0.15825 seconds ./spec/integration/subcommands_spec.rb:48 + Rendering prints available commands for unknown command + 0.15741 seconds ./spec/integration/rendering_spec.rb:6 Top 10 slowest example groups: Processes Errors - 0.3532 seconds average (0.70639 seconds / 2 examples) ./spec/integration/processes_errors_spec.rb:3 - Rendering - 0.15291 seconds average (0.15291 seconds / 1 example) ./spec/integration/rendering_spec.rb:5 - Commands - 0.13037 seconds average (0.13037 seconds / 1 example) ./spec/integration/commands_spec.rb:3 + 0.34098 seconds average (0.68195 seconds / 2 examples) ./spec/integration/processes_errors_spec.rb:3 Subcommands - 0.13037 seconds average (0.3911 seconds / 3 examples) ./spec/integration/subcommands_spec.rb:5 + 0.16332 seconds average (0.48996 seconds / 3 examples) ./spec/integration/subcommands_spec.rb:5 Third-party gems - 0.13009 seconds average (0.13009 seconds / 1 example) ./spec/integration/third_party_gems_spec.rb:3 + 0.16056 seconds average (0.16056 seconds / 1 example) ./spec/integration/third_party_gems_spec.rb:3 + Rendering + 0.15786 seconds average (0.15786 seconds / 1 example) ./spec/integration/rendering_spec.rb:5 + Inline + 0.15292 seconds average (0.30584 seconds / 2 examples) ./spec/integration/inline_spec.rb:5 Single command - 0.12709 seconds average (0.76256 seconds / 6 examples) ./spec/integration/single_command_spec.rb:5 + 0.14487 seconds average (0.86923 seconds / 6 examples) ./spec/integration/single_command_spec.rb:5 + Commands + 0.13671 seconds average (0.13671 seconds / 1 example) ./spec/integration/commands_spec.rb:3 Inherited commands - 0.12492 seconds average (0.24984 seconds / 2 examples) ./spec/integration/inherited_commands_spec.rb:3 - Inline - 0.11879 seconds average (0.23758 seconds / 2 examples) ./spec/integration/inline_spec.rb:5 + 0.11237 seconds average (0.22474 seconds / 2 examples) ./spec/integration/inherited_commands_spec.rb:3 Dry::CLI::Registry - 0.00231 seconds average (0.01387 seconds / 6 examples) ./spec/unit/dry/cli/registry_spec.rb:3 + 0.00158 seconds average (0.00947 seconds / 6 examples) ./spec/unit/dry/cli/registry_spec.rb:3 CLI - 0.00109 seconds average (0.27049 seconds / 249 examples) ./spec/unit/dry/cli/cli_spec.rb:3 + 0.00115 seconds average (0.2852 seconds / 249 examples) ./spec/unit/dry/cli/cli_spec.rb:3 -Finished in 3.05 seconds (files took 0.40746 seconds to load) +Finished in 3.33 seconds (files took 0.50965 seconds to load) 278 examples, 0 failures -Randomized with seed 61550 +Randomized with seed 8594 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1392,12 +1428,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/1654737/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1654737/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/1509711 and its subdirectories -I: Current time: Sun Apr 12 12:23:59 -12 2026 -I: pbuilder-time-stamp: 1776039839 +I: removing directory /srv/workspace/pbuilder/1654737 and its subdirectories +I: Current time: Tue Mar 11 08:02:27 +14 2025 +I: pbuilder-time-stamp: 1741629747