Diff of the two buildlogs: -- --- b1/build.log 2024-05-23 13:17:04.513262192 +0000 +++ b2/build.log 2024-05-23 13:19:14.291744939 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Jun 25 07:38:36 -12 2025 -I: pbuilder-time-stamp: 1750880316 +I: Current time: Fri May 24 03:17:07 +14 2024 +I: pbuilder-time-stamp: 1716470227 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -28,51 +28,83 @@ dpkg-source: info: applying 0002-Fix-FTBFS-with-Ruby-3.2.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/3830157/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3111719/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 May 23 13:17 /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/3111719/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3111719/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='unstable' - HOME='/root' - HOST_ARCH='amd64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='2ba12d5bbea4476e903a6ab9a4f68881' - 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='3830157' - PS1='# ' - PS2='> ' + INVOCATION_ID=fb96f9bee6b9413fa641c0405f4f7e84 + 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=3111719 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.ZL9Gu11m/pbuilderrc_rvTU --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ZL9Gu11m/b1 --logfile b1/build.log tmuxinator_3.1.2-1.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.ZL9Gu11m/pbuilderrc_nbIA --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ZL9Gu11m/b2 --logfile b2/build.log tmuxinator_3.1.2-1.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.7.12+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.7.12-1~bpo12+1 (2024-05-06) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Jun 24 14:05 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3830157/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 22 07:42 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3111719/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -308,7 +340,7 @@ Get: 172 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 173 http://deb.debian.org/debian unstable/main amd64 ruby-xdg all 2.2.3-1.1 [12.0 kB] Get: 174 http://deb.debian.org/debian unstable/main amd64 tmux amd64 3.4-5 [481 kB] -Fetched 46.4 MB in 1s (61.7 MB/s) +Fetched 46.4 MB in 1s (40.8 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:amd64. (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 ... 19718 files and directories currently installed.) @@ -880,8 +912,8 @@ Setting up tzdata (2024a-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Wed Jun 25 19:39:43 UTC 2025. -Universal Time is now: Wed Jun 25 19:39:43 UTC 2025. +Local time is now: Thu May 23 13:18:29 UTC 2024. +Universal Time is now: Thu May 23 13:18:29 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-method-source (1.0.0-2) ... @@ -1039,7 +1071,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/tmuxinator-3.1.2/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../tmuxinator_3.1.2-1_source.changes +I: user script /srv/workspace/pbuilder/3111719/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/3111719/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/tmuxinator-3.1.2/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../tmuxinator_3.1.2-1_source.changes dpkg-buildpackage: info: source package tmuxinator dpkg-buildpackage: info: source version 3.1.2-1 dpkg-buildpackage: info: source distribution unstable @@ -1118,44 +1154,252 @@ RUBYLIB=/build/reproducible-path/tmuxinator-3.1.2/debian/tmuxinator/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/reproducible-path/tmuxinator-3.1.2/debian/tmuxinator/usr/share/rubygems-integration/all:/build/reproducible-path/tmuxinator-3.1.2/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.1 -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 64359 +Randomized with seed 23537 + +Tmuxinator::Hooks::Project + #hook_on_project_restart + it should behave like a project hook + calls Hooks.commands_from + hook value is string + returns the string + hook value is Array + joins array using ; + #hook_on_project_stop + it should behave like a project hook + calls Hooks.commands_from + hook value is Array + joins array using ; + hook value is string + returns the string + #hook_on_project_start + it should behave like a project hook + calls Hooks.commands_from + hook value is string + returns the string + hook value is Array + joins array using ; + #hook_on_project_first_start + it should behave like a project hook + calls Hooks.commands_from + hook value is Array + joins array using ; + hook value is string + returns the string + #hook_on_project_exit + it should behave like a project hook + calls Hooks.commands_from + hook value is string + returns the string + hook value is Array + joins array using ; Tmuxinator::Doctor .installed? - tmux is installed - returns true tmux is not installed returns false + tmux is installed + returns true .shell? $SHELL is set returns true $SHELL is not set returns false .editor? + $EDITOR is not set + returns false $EDITOR is set returns true - $EDITOR is not set + +Tmuxinator::Hooks + #commands_from + config value is Array + joins array using ; + config value is string + returns the string + +Tmuxinator::Project + should include Hooks + #windows + without deprecations + gets the list of windows + with deprecations + still gets the list of windows + #pre + pre in yaml is Array + joins array using ; + pre in yaml is string + returns the string + #socket + socket path is present + gets the socket path + #tmux_has_session? + active sessions + should return true only when `tmux ls` has the named session + should return false if a partial (prefix) match is found + no active sessions + should return false if no sessions are found + #pre_window + pre_window in yaml is Array + joins array using ; + with deprecations + rbenv option is present + still gets the correct pre_window command + rvm option is present + still gets the correct pre_window command + pre_tab is present + still gets the correct pre_window command + pre_window in yaml is string + returns the string + ::load + should raise if the project file doesn't parse + should return an instance of the class if the file loads + #tmux_options + no tmux options + returns nothing + with deprecations + still gets the tmux options + #send_pane_command + no command for pane + returns empty string + command for pane is not empty + returns the tmux command + #window + gets the window and index for tmux + #attach? + attach is true in yaml, but command line forces detach returns false + attach is false in yaml + returns false + attach is not defined in yaml + returns true + attach is true in yaml + returns true + attach is false in yaml, but command line forces attach + returns true + #validate! + should raise if there is not a project name + should raise if there are no windows defined + tmux_kill_session_command + when first window has a name + returns command to start a new detached session + #get_base_index + extracts base-index from the global tmux options + #render + renders the tmux config + custom name + renders the tmux config with custom name + wemux +sh: line 1: wemux: command not found + renders the wemux config + with alias + renders the tmux config + #deprecations + with deprecations + is not empty + without deprecations + is empty + tmux_new_session_command + when first window is nameless + returns command to for new detached session without a window name + when first window has a name + returns command to start a new detached session + #get_pane_base_index + extracts pane-base-index from the global tmux window options + #initialize + valid yaml + creates an instance + #name + without deprecations + gets the name + window as non-string literal + will gracefully handle a window name given as a non-string literal + as number + will gracefully handle a name given as a number + with deprecations + still gets the name + wemux + is wemux + as emoji + will gracefully handle a name given as an emoji + without name + displays error message + #name? + name is present + returns true + #windows? + windows are present + returns true + #send_keys + command for window is not empty + returns the tmux command + no command for window + returns empty string + #root + without root + doesn't throw an error + with deprecations + still gets the root + without deprecations + gets the root + #startup_window + startup window not specified + returns base index instead + startup window specified + gets the startup window from project config + #root? + root are present + returns true + #startup_pane + startup pane specified + get the startup pane index from project config + startup pane not specified + returns the base pane instead + ::parse_settings + removes settings from args + returns settings in a hash + #tmux_command + tmux_command specified + gets the custom tmux command + tmux_command is not specified + returns the default + #commands + splits commands into an array + #base_index + base index not present + defaults to 0 + when pane_base_index is 1 and base_index is unset + gets the tmux default of 0 + base index present + gets the base index + +Tmuxinator::WemuxSupport + #name + is expected to eq "wemux" + #tmux + is expected to eq "wemux" + #render + renders the template Tmuxinator::Window - #name_options - without a name - specifies no tmux name option - with a name - specifies name with tmux name option - #pre - pre is a string - returns the pre command - pre is not present - returns nil + #synchronize_before? + synchronization disabled + is expected to equal false + synchronize is 'after' + is expected to equal false + synchronize is true + is expected to equal true + synchronization not specified + is expected to equal false + synchronize is 'before' + is expected to equal true #panes + with a String + returns one pane in an Array + with nil + returns an empty Array with a three element Array returns three panes creates three panes - with nil - returns an empty Array - with a String - returns one pane in an Array titled panes creates panes with titles nested collections @@ -1168,264 +1412,294 @@ is expected to equal false synchronization is 'before' is expected to equal false - synchronization not specified + synchronization is true is expected to equal false synchronization is 'after' is expected to equal true - synchronization is true + synchronization not specified is expected to equal false - #root - without window root - gets the project root - with window root - gets the window root - #initialize - creates an instance + #tmux_synchronize_panes + synchronization enabled + should set the synchronize-panes window option on #tmux_new_window_command constructs window command with path, target, and name options name not set does not set name option root not set has an extra space instead of path_part - #tmux_synchronize_panes - synchronization enabled - should set the synchronize-panes window option on + #pre + pre is not present + returns nil + pre is a string + returns the pre command + #initialize + creates an instance + #name_options + without a name + specifies no tmux name option + with a name + specifies name with tmux name option + #tmux_select_first_pane + targets the pane based on the configured pane_base_index #build_commands - command is a string - returns the command command is empty returns an empty array + command is a string + returns the command command is a hash returns an empty array command is an array returns the flattened command - #synchronize_before? - synchronize is 'before' - is expected to equal true - synchronization disabled - is expected to equal false - synchronize is true - is expected to equal true - synchronize is 'after' - is expected to equal false - synchronization not specified - is expected to equal false - #tmux_select_first_pane - targets the pane based on the configured pane_base_index - -Tmuxinator::WemuxSupport - #tmux - is expected to eq "wemux" - #render - renders the template - #name - is expected to eq "wemux" + #root + with window root + gets the window root + without window root + gets the project root Tmuxinator::Config + #local_project + without project yml + gets the project as path to the yml file + with a project yml + gets the project as path to the yml file #sample gets the path of the sample project - #exists? - checks if the given project exists - #version - when reported version is '2.9a' - is expected to eq 2.9 - when reported version is '' - is expected to eq 0.0 - when reported version is '2.9ä' - is expected to eq 2.9 - when reported version is 'foobar' - is expected to eq 0.0 - when reported version is '5935' - is expected to eq 5935.0 - when reported version is '1.0' - is expected to eq 1.0 - when reported version is '!@#^%' - is expected to eq 0.0 - when reported version is '-123-' - is expected to eq 123.0 - when reported version is 'v3.5' - is expected to eq 3.5 - when reported version is '3.0-rc5' - is expected to eq 3.0 - when reported version is 'next-3.1' - is expected to eq 3.1 - when reported version is '1.9a' - is expected to eq 1.9 - when reported version is 'v3.12.5' - is expected to eq 3.12 - when reported version is 'master' - is expected to eq Infinity - when reported version is '1.9' - is expected to eq 1.9 - when reported version is '2.4' - is expected to eq 2.4 - when reported version is '0.8' - is expected to eq 0.8 - when reported version is 'v3.12.0' - is expected to eq 3.12 - #xdg - is $XDG_CONFIG_HOME/tmuxinator - #home - is ~/.tmuxinator + #global_project + with project yml + gets the project as path to the yml file + without project yml + gets the project as path to the yml file + with project yaml + gets the project as path to the yaml file + with duplicate project files + is the first .yml file found #validate when a project name is provided should raise if the project file can't be found should load and validate the project - when no project can be found - should raise with NO_PROJECT_FOUND_MSG when a project config file is provided - should raise if the project config file can't be found - should load and validate the project should take precedence over a named project + should raise if the project config file can't be found should take precedence over a local project + should load and validate the project when no project name is provided should raise if the local project file doesn't exist and tmuxinator.yaml exists should load and validate the local project and tmuxinator.yml exists should load and validate the local project - #environment - environment variable $TMUXINATOR_CONFIG is nil - is an empty string - environment variable $TMUXINATOR_CONFIG is not empty - is $TMUXINATOR_CONFIG - environment variable $TMUXINATOR_CONFIG is set and empty - is an empty string + when no project can be found + should raise with NO_PROJECT_FOUND_MSG + #xdg + is $XDG_CONFIG_HOME/tmuxinator + #project + with an non-local project yml + gets the project as path to the yml file + without project yml + gets the project as path to the yml file + with a local project, but no global project + gets the project as path to the yml file #configs gets a sorted list of all projects lists only projects in $TMUXINATOR_CONFIG when set + #local? + checks if the given project exists #directory - environment variable $TMUXINATOR_CONFIG non-blank - is $TMUXINATOR_CONFIG + defaulting to xdg with parent directory(s) that do not exist + creates parent directories if required both $XDG_CONFIG_HOME/tmuxinator and ~/.tmuxinator exist is #xdg only ~/.tmuxinator exists is ~/.tmuxinator only $XDG_CONFIG_HOME/tmuxinator exists is #xdg - defaulting to xdg with parent directory(s) that do not exist - creates parent directories if required + environment variable $TMUXINATOR_CONFIG non-blank + is $TMUXINATOR_CONFIG + #default? + when the file exists + returns true + when the file doesn't exist + returns true + #environment + environment variable $TMUXINATOR_CONFIG is nil + is an empty string + environment variable $TMUXINATOR_CONFIG is set and empty + is an empty string + environment variable $TMUXINATOR_CONFIG is not empty + is $TMUXINATOR_CONFIG #directories - with TMUXINATOR_CONFIG environment - is only [$TMUXINATOR_CONFIG] if set without TMUXINATOR_CONFIG environment - contains #xdg before #home is empty if no configuration directories exist - #project - without project yml - gets the project as path to the yml file - with a local project, but no global project - gets the project as path to the yml file - with an non-local project yml - gets the project as path to the yml file - #global_project - with duplicate project files - is the first .yml file found - with project yml - gets the project as path to the yml file - without project yml - gets the project as path to the yml file - with project yaml - gets the project as path to the yaml file + contains #xdg before #home + with TMUXINATOR_CONFIG environment + is only [$TMUXINATOR_CONFIG] if set + #version + when reported version is 'v3.12.0' + is expected to eq 3.12 + when reported version is '' + is expected to eq 0.0 + when reported version is 'foobar' + is expected to eq 0.0 + when reported version is '3.0-rc5' + is expected to eq 3.0 + when reported version is '!@#^%' + is expected to eq 0.0 + when reported version is '2.9a' + is expected to eq 2.9 + when reported version is '-123-' + is expected to eq 123.0 + when reported version is 'next-3.1' + is expected to eq 3.1 + when reported version is 'master' + is expected to eq Infinity + when reported version is '5935' + is expected to eq 5935.0 + when reported version is '1.9' + is expected to eq 1.9 + when reported version is '1.9a' + is expected to eq 1.9 + when reported version is '0.8' + is expected to eq 0.8 + when reported version is 'v3.5' + is expected to eq 3.5 + when reported version is '2.9ä' + is expected to eq 2.9 + when reported version is '2.4' + is expected to eq 2.4 + when reported version is '1.0' + is expected to eq 1.0 + when reported version is 'v3.12.5' + is expected to eq 3.12 + #home + is ~/.tmuxinator + #default + gets the path of the default config #default_path_option < 1.8 returns default-path >= 1.8 returns -c - #default? - when the file exists - returns true - when the file doesn't exist - returns true - #local? + #exists? checks if the given project exists - #default - gets the path of the default config - #local_project - with a project yml - gets the project as path to the yml file - without project yml - gets the project as path to the yml file -Tmuxinator::Hooks::Project - #hook_on_project_start - it should behave like a project hook - calls Hooks.commands_from - hook value is Array - joins array using ; - hook value is string - returns the string - #hook_on_project_exit - it should behave like a project hook - calls Hooks.commands_from - hook value is Array - joins array using ; - hook value is string - returns the string - #hook_on_project_stop - it should behave like a project hook - calls Hooks.commands_from - hook value is string - returns the string - hook value is Array - joins array using ; - #hook_on_project_first_start - it should behave like a project hook - calls Hooks.commands_from - hook value is string - returns the string - hook value is Array - joins array using ; - #hook_on_project_restart - it should behave like a project hook - calls Hooks.commands_from - hook value is string - returns the string - hook value is Array - joins array using ; +Tmuxinator::Pane + creates an instance + does not set pane title + is expected to eql "foo:0.1" + when title is provided + sets pane title Tmuxinator::Cli - #start(custom_name) - no deprecations - starts the project - #start - supported version - does not print the warning + #implode + deletes the configuration directory(s) + confirms deletion of all projects + $TMUXINATOR_CONFIG specified + only deletes projects in that directory + #local + when the command used is 'local' + it should behave like local_project + starts the project unsupported version prints the warning with --suppress-tmux-version-warning flag does not print the warning - no deprecations - accepts a flag for alternate name - accepts additional arguments - starts the project - accepts a project config file flag - deprecations - prints the deprecations - exit status - returns a non-zero status when an error occurs - #version - prints the current version + when the command used is '.' + it should behave like local_project + starts the project + supported version + does not print the warning + ::bootstrap + and there is a local project config + when no args are supplied + should call #local + when one or more args are supplied + it should behave like bootstrap_with_arguments + and the first arg is + a tmuxinator project name + should call #start + a thor command + (-v) + should call ::start + (help) + should call ::start + something else + should call ::start + and the first arg is a tmuxinator command + should call ::start + and there is no local project config + when one or more args are supplied + it should behave like bootstrap_with_arguments + and the first arg is + something else + should call ::start + a thor command + (help) + should call ::start + (-v) + should call ::start + a tmuxinator project name + should call #start + and the first arg is a tmuxinator command + should call ::start + when no args are supplied + should call ::start + #doctor + checks requirements + #find_project_file + when the project file does not already exist + should generate a project file + when the project file _does_ already exist + should _not_ generate a new project file #completions gets completions + #generate_project_file + should always generate a project file + should generate a project file using the correct project file path #edit when the project file _does_ already exist should _not_ generate a new project file - #commands - lists the commands - #local - when the command used is 'local' - it should behave like local_project - starts the project + #debug + named project + renders the project with custom session + force detach renders the project without attach code + force attach renders the project with attach code + renders the project + project config file + does not render the project if given a bogus project config file + renders the project if given a valid project config file + #stop supported version does not print the warning + with project name + stops the project unsupported version prints the warning with --suppress-tmux-version-warning flag does not print the warning - when the command used is '.' - it should behave like local_project - starts the project + without project name + stops the project using .tmuxinator.yml + #list + set --newline flag + force output to be one entry per line + no arguments are given + lists all projects + #create_project + attach option + attach + sets force_attach to false when no attach argument is provided + sets force_attach to false when 'attach: false' is provided + sets force_attach to true when 'attach: true' is provided + detach + sets force_detach to true when 'attach: false' is provided + sets force_detach to false when no attach argument is provided + sets force_detach to false when 'attach: true' is provided + when creating a traditional named project + it should behave like a_proper_project + should create a valid project + #version + prints the current version + exit status + returns a non-zero status when an error occurs #new without the --local option file exists @@ -1433,66 +1707,59 @@ existing project doesn't exist creates a new tmuxinator project file with the --local option - existing project doesn't exist - creates a new tmuxinator project file file exists just opens the file + existing project doesn't exist + creates a new tmuxinator project file from a session with tmux < 1.6 is unsupported with tmux >= 1.6 + session doesn't exist + fails session exists creates a project file for-testing-tmuxinator - session doesn't exist - fails - base thor functionality - it should behave like base_thor_functionality - supports -v - supports help - with a local project config - it should behave like base_thor_functionality - supports help - supports -v - #list - no arguments are given - lists all projects - set --newline flag - force output to be one entry per line - #stop(with project config file) - does not stop the project if given a bogus project config file - does not set the project name - stops the project - does not set the project name even when set - #find_project_file - when the project file does not already exist - should generate a project file - when the project file _does_ already exist - should _not_ generate a new project file - #debug - project config file - renders the project if given a valid project config file - does not render the project if given a bogus project config file - named project - renders the project - renders the project with custom session - force detach renders the project without attach code - force attach renders the project with attach code + no arguments + runs without error #start(with project config file) no deprecations passes additional arguments through starts the project if given a valid project config file does not start the project if given a bogus project config file does not set the project name - no arguments - runs without error + #start + no deprecations + accepts a flag for alternate name + starts the project + accepts additional arguments + accepts a project config file flag + deprecations + prints the deprecations + unsupported version + prints the warning + with --suppress-tmux-version-warning flag + does not print the warning + supported version + does not print the warning + #start(custom_name) + no deprecations + starts the project + base thor functionality + with a local project config + it should behave like base_thor_functionality + supports -v + supports help + it should behave like base_thor_functionality + supports help + supports -v #delete with multiple arguments all projects do not exist outputs multiple error messages only one project exists - deletes one project outputs an error message + deletes one project all projects exist deletes the projects with a single argument @@ -1502,254 +1769,23 @@ deletes the local project project exists deletes the project - #generate_project_file - should generate a project file using the correct project file path - should always generate a project file - #doctor - checks requirements + #commands + lists the commands + #stop(with project config file) + does not set the project name even when set + does not stop the project if given a bogus project config file + does not set the project name + stops the project #copy - existing project doesn't exist - exit with error code new project already exists prompts user to confirm overwrite - #create_project - attach option - detach - sets force_detach to true when 'attach: false' is provided - sets force_detach to false when 'attach: true' is provided - sets force_detach to false when no attach argument is provided - attach - sets force_attach to false when no attach argument is provided - sets force_attach to true when 'attach: true' is provided - sets force_attach to false when 'attach: false' is provided - when creating a traditional named project - it should behave like a_proper_project - should create a valid project - #implode - confirms deletion of all projects - deletes the configuration directory(s) - $TMUXINATOR_CONFIG specified - only deletes projects in that directory - ::bootstrap - and there is a local project config - when no args are supplied - should call #local - when one or more args are supplied - it should behave like bootstrap_with_arguments - and the first arg is - something else - should call ::start - a thor command - (-v) - should call ::start - (help) - should call ::start - a tmuxinator project name - should call #start - and the first arg is a tmuxinator command - should call ::start - and there is no local project config - when one or more args are supplied - it should behave like bootstrap_with_arguments - and the first arg is - something else - should call ::start - a tmuxinator project name - should call #start - a thor command - (-v) - should call ::start - (help) - should call ::start - and the first arg is a tmuxinator command - should call ::start - when no args are supplied - should call ::start - #stop - without project name - stops the project using .tmuxinator.yml - unsupported version - prints the warning - with --suppress-tmux-version-warning flag - does not print the warning - supported version - does not print the warning - with project name - stops the project - -Tmuxinator::Hooks - #commands_from - config value is string - returns the string - config value is Array - joins array using ; - -Tmuxinator::Pane - is expected to eql "foo:0.1" - creates an instance - does not set pane title - when title is provided - sets pane title - -Tmuxinator::Project - should include Hooks - #pre - pre in yaml is Array - joins array using ; - pre in yaml is string - returns the string - #tmux_options - no tmux options - returns nothing - with deprecations - still gets the tmux options - tmux_new_session_command - when first window is nameless - returns command to for new detached session without a window name - when first window has a name - returns command to start a new detached session - ::load - should raise if the project file doesn't parse - should return an instance of the class if the file loads - #pre_window - with deprecations - rvm option is present - still gets the correct pre_window command - rbenv option is present - still gets the correct pre_window command - pre_tab is present - still gets the correct pre_window command - pre_window in yaml is Array - joins array using ; - pre_window in yaml is string - returns the string - #root - with deprecations - still gets the root - without deprecations - gets the root - without root - doesn't throw an error - #get_pane_base_index - extracts pane-base-index from the global tmux window options - #send_pane_command - command for pane is not empty - returns the tmux command - no command for pane - returns empty string - #startup_pane - startup pane not specified - returns the base pane instead - startup pane specified - get the startup pane index from project config - #commands - splits commands into an array - #base_index - base index present - gets the base index - base index not present - defaults to 0 - when pane_base_index is 1 and base_index is unset - gets the tmux default of 0 - #tmux_has_session? - active sessions - should return true only when `tmux ls` has the named session - should return false if a partial (prefix) match is found - no active sessions - should return false if no sessions are found - #windows - without deprecations - gets the list of windows - with deprecations - still gets the list of windows - #name? - name is present - returns true - #validate! - should raise if there is not a project name - should raise if there are no windows defined - #window - gets the window and index for tmux - ::parse_settings - removes settings from args - returns settings in a hash - #deprecations - without deprecations - is empty - with deprecations - is not empty - #attach? - attach is true in yaml - returns true - attach is not defined in yaml - returns true - attach is false in yaml - returns false - attach is false in yaml, but command line forces attach - returns true - attach is true in yaml, but command line forces detach - returns false - tmux_kill_session_command - when first window has a name - returns command to start a new detached session - #render - renders the tmux config - wemux -sh: 1: wemux: not found - renders the wemux config - with alias - renders the tmux config - custom name - renders the tmux config with custom name - #root? - root are present - returns true - #name - window as non-string literal - will gracefully handle a window name given as a non-string literal - without deprecations - gets the name - without name - displays error message - as number - will gracefully handle a name given as a number - as emoji - will gracefully handle a name given as an emoji - wemux - is wemux - with deprecations - still gets the name - #tmux_command - tmux_command is not specified - returns the default - tmux_command specified - gets the custom tmux command - #windows? - windows are present - returns true - #get_base_index - extracts base-index from the global tmux options - #socket - socket path is present - gets the socket path - #send_keys - no command for window - returns empty string - command for window is not empty - returns the tmux command - #startup_window - startup window specified - gets the startup window from project config - startup window not specified - returns base index instead - #initialize - valid yaml - creates an instance + existing project doesn't exist + exit with error code -Finished in 1.92 seconds (files took 0.65574 seconds to load) +Finished in 3.85 seconds (files took 0.82716 seconds to load) 278 examples, 0 failures -Randomized with seed 64359 +Randomized with seed 23537 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1791,12 +1827,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/3111719/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3111719/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/3830157 and its subdirectories -I: Current time: Wed Jun 25 07:40:03 -12 2025 -I: pbuilder-time-stamp: 1750880403 +I: removing directory /srv/workspace/pbuilder/3111719 and its subdirectories +I: Current time: Fri May 24 03:19:13 +14 2024 +I: pbuilder-time-stamp: 1716470353