Diff of the two buildlogs: -- --- b1/build.log 2024-03-29 02:10:49.010140269 +0000 +++ b2/build.log 2024-03-29 02:11:30.280378797 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Mar 28 14:09:53 -12 2024 -I: pbuilder-time-stamp: 1711678193 +I: Current time: Thu May 1 22:33:50 +14 2025 +I: pbuilder-time-stamp: 1746088430 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -29,54 +29,86 @@ 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/22109/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/108237/tmp/hooks/D01_modify_environment starting +debug: Running on ionos6-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 May 1 08:34 /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/108237/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/108237/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="i686-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=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='d7e04ef5299f4166b9768d82683ff7fa' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='22109' - PS1='# ' - PS2='> ' + INVOCATION_ID=8fc966f55fad42e0bcd093780149862c + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=108237 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.PmxnKh1o/pbuilderrc_mVMo --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.PmxnKh1o/b1 --logfile b1/build.log tmuxinator_3.1.2-1.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://78.137.99.97: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.PmxnKh1o/pbuilderrc_8Mn3 --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.PmxnKh1o/b2 --logfile b2/build.log tmuxinator_3.1.2-1.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://85.184.249.68:3128 I: uname -a - Linux ionos12-i386 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Mar 27 07:43 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/22109/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 29 14:09 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/108237/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: 168 http://deb.debian.org/debian unstable/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 169 http://deb.debian.org/debian unstable/main i386 ruby-xdg all 2.2.3-1.1 [12.0 kB] Get: 170 http://deb.debian.org/debian unstable/main i386 tmux i386 3.4-3 [515 kB] -Fetched 51.2 MB in 2s (25.3 MB/s) +Fetched 51.2 MB in 1s (82.9 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:i386. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19704 files and directories currently installed.) @@ -867,8 +899,8 @@ Setting up tzdata (2024a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Fri Mar 29 02:10:26 UTC 2024. -Universal Time is now: Fri Mar 29 02:10:26 UTC 2024. +Local time is now: Thu May 1 08:34:15 UTC 2025. +Universal Time is now: Thu May 1 08:34:15 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-method-source (1.0.0-2) ... @@ -1023,7 +1055,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/108237/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/108237/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 @@ -1102,301 +1138,485 @@ 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/i386-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/i386-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 31604 +Randomized with seed 43088 -Tmuxinator::Hooks::Project - #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_restart - 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_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_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 ; +Tmuxinator::Project + should include Hooks + #windows + with deprecations + still gets the list of windows + without deprecations + gets the list of windows + #get_pane_base_index + extracts pane-base-index from the global tmux window options + #attach? + attach is true in yaml + returns true + attach is true in yaml, but command line forces detach + returns false + attach is false in yaml + returns false + attach is false in yaml, but command line forces attach + returns true + attach is not defined in yaml + returns true + #socket + socket path is present + gets the socket path + #validate! + should raise if there is not a project name + should raise if there are no windows defined + #windows? + windows are present + returns true + #base_index + base index present + gets the base index + when pane_base_index is 1 and base_index is unset + gets the tmux default of 0 + base index not present + defaults to 0 + #pre_window + 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 + pre_window in yaml is Array + joins array using ; + #window + gets the window and index for tmux + #name + with deprecations + still gets the name + as emoji + will gracefully handle a name given as an emoji + 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 + without name + displays error message + wemux + is wemux + tmux_kill_session_command + when first window has a name + returns command to start a new detached session + #pre + pre in yaml is Array + joins array using ; + pre in yaml is string + returns the string + #render + renders the tmux config + with alias + renders the tmux config + wemux +sh: line 1: wemux: command not found + renders the wemux config + custom name + renders the tmux config with custom name + #tmux_options + with deprecations + still gets the tmux options + no tmux options + returns nothing + #initialize + valid yaml + creates an instance + #root + without deprecations + gets the root + with deprecations + still gets the root + without root + doesn't throw an error + ::load + should return an instance of the class if the file loads + should raise if the project file doesn't parse + #startup_window + startup window not specified + returns base index instead + startup window specified + gets the startup window from project config + #get_base_index + extracts base-index from the global tmux options + #name? + name is present + returns true + #commands + splits commands into an array + #root? + root are present + returns true + 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 + #startup_pane + startup pane specified + get the startup pane index from project config + startup pane not specified + returns the base pane instead + #send_pane_command + no command for pane + returns empty string + command for pane is not empty + returns the tmux command + #tmux_has_session? + no active sessions + should return false if no sessions are found + active sessions + should return true only when `tmux ls` has the named session + should return false if a partial (prefix) match is found + #deprecations + with deprecations + is not empty + without deprecations + is empty + ::parse_settings + removes settings from args + returns settings in a hash + #send_keys + command for window is not empty + returns the tmux command + no command for window + returns empty string + #tmux_command + tmux_command specified + gets the custom tmux command + tmux_command is not specified + returns the default + +Tmuxinator::Pane + is expected to eql "foo:0.1" + does not set pane title + creates an instance + when title is provided + sets pane title Tmuxinator::Config - #sample - gets the path of the sample project - #validate - when no project can be found - should raise with NO_PROJECT_FOUND_MSG - when a project name is provided - should load and validate the project - should raise if the project file can't be found - when a project config file is provided - 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 - 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 - #local? - checks if the given project exists - #default - gets the path of the default config + #directories + without TMUXINATOR_CONFIG environment + is empty if no configuration directories exist + contains #xdg before #home + with TMUXINATOR_CONFIG environment + is only [$TMUXINATOR_CONFIG] if set + #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 #xdg is $XDG_CONFIG_HOME/tmuxinator - #default_path_option - >= 1.8 - returns -c - < 1.8 - returns default-path #version - when reported version is 'v3.5' - is expected to eq 3.5 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 '1.9a' - is expected to eq 1.9 - when reported version is '2.9a' - is expected to eq 2.9 - when reported version is 'foobar' + when reported version is '5935' + is expected to eq 5935.0 + when reported version is '!@#^%' is expected to eq 0.0 - when reported version is 'next-3.1' - is expected to eq 3.1 when reported version is 'v3.12.5' is expected to eq 3.12 - when reported version is '1.9' - is expected to eq 1.9 - when reported version is '1.0' - is expected to eq 1.0 when reported version is 'v3.12.0' is expected to eq 3.12 - 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.5' + is expected to eq 3.5 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 '2.9ä' + when reported version is '2.9a' is expected to eq 2.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 '2.4' + is expected to eq 2.4 + when reported version is 'next-3.1' + is expected to eq 3.1 + when reported version is '1.0' + is expected to eq 1.0 when reported version is '3.0-rc5' is expected to eq 3.0 - when reported version is '!@#^%' + when reported version is '-123-' + is expected to eq 123.0 + when reported version is '2.9ä' + is expected to eq 2.9 + when reported version is 'foobar' is expected to eq 0.0 - #home - is ~/.tmuxinator - #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 + when reported version is '1.9' + is expected to eq 1.9 + #default + gets the path of the default config + #default_path_option + >= 1.8 + returns -c + < 1.8 + returns default-path + #configs + lists only projects in $TMUXINATOR_CONFIG when set + gets a sorted list of all projects + #validate + 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 + when a project config file is provided + should raise if the project config file can't be found + should take precedence over a named project + should take precedence over a local project + should load and validate the project + when no project can be found + should raise with NO_PROJECT_FOUND_MSG + when a project name is provided + should raise if the project file can't be found + should load and validate the project + #default? + when the file doesn't exist + returns true + when the file exists + returns true #exists? checks if the given project exists #global_project - 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 project yml gets the project as path to the yml file with duplicate project files is the first .yml file found - #environment - environment variable $TMUXINATOR_CONFIG is not empty - is $TMUXINATOR_CONFIG - environment variable $TMUXINATOR_CONFIG is set and empty - is an empty string - environment variable $TMUXINATOR_CONFIG is nil - is an empty string - #default? - when the file exists - returns true - when the file doesn't exist - returns true + without project yml + gets the project as path to the yml file + #home + is ~/.tmuxinator + #local? + checks if the given project exists + #project + with a local project, but no global project + gets the project as path to the yml file + without project yml + gets the project as path to the yml file + with an non-local project yml + gets the project as path to the yml file #directory 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 - environment variable $TMUXINATOR_CONFIG non-blank - is $TMUXINATOR_CONFIG only $XDG_CONFIG_HOME/tmuxinator exists is #xdg only ~/.tmuxinator exists is ~/.tmuxinator - #configs - lists only projects in $TMUXINATOR_CONFIG when set - gets a sorted list of all projects - #directories - without TMUXINATOR_CONFIG environment - is empty if no configuration directories exist - contains #xdg before #home - with TMUXINATOR_CONFIG environment - is only [$TMUXINATOR_CONFIG] if set - #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 + environment variable $TMUXINATOR_CONFIG non-blank + is $TMUXINATOR_CONFIG + both $XDG_CONFIG_HOME/tmuxinator and ~/.tmuxinator exist + is #xdg + #environment + environment variable $TMUXINATOR_CONFIG is set and empty + is an empty string + environment variable $TMUXINATOR_CONFIG is not empty + is $TMUXINATOR_CONFIG + environment variable $TMUXINATOR_CONFIG is nil + is an empty string + #sample + gets the path of the sample project + +Tmuxinator::Window + #synchronize_after? + synchronization is 'before' + is expected to equal false + synchronization disabled + is expected to equal false + synchronization not specified + is expected to equal false + synchronization is 'after' + is expected to equal true + synchronization is true + is expected to equal false + #initialize + creates an instance + #name_options + without a name + specifies no tmux name option + with a name + specifies name with tmux name option + #panes + titled panes + creates panes with titles + with a String + returns one pane in an Array + nested collections + with nested array + returns two panes in an Array + with nested hash + returns two panes in an Array + with a three element Array + returns three panes + creates three panes + with nil + returns an empty Array + #root + with window root + gets the window root + without window root + gets the project root + #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_select_first_pane + targets the pane based on the configured pane_base_index + #pre + pre is not present + returns nil + pre is a string + returns the pre command + #synchronize_before? + synchronize is 'before' + is expected to equal true + synchronization disabled + is expected to equal false + synchronize is 'after' + is expected to equal false + synchronization not specified + is expected to equal false + synchronize is true + is expected to equal true + #build_commands + command is a hash + returns an empty array + command is empty + returns an empty array + command is an array + returns the flattened command + command is a string + returns the command Tmuxinator::Cli + #generate_project_file + should generate a project file using the correct project file path + should always generate a project file + 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 -v + supports help + #version + prints the current version + #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 + #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 + #start(custom_name) + no deprecations + starts the project + #edit + when the project file _does_ already exist + should _not_ generate a new project file + no arguments + runs without error #local - supported version - does not print the warning - unsupported version - prints the warning - with --suppress-tmux-version-warning flag - does not print the warning when the command used is 'local' it should behave like local_project starts the project when the command used is '.' it should behave like local_project starts the project - #copy - existing project doesn't exist - exit with error code - new project already exists - prompts user to confirm overwrite - #start(custom_name) - no deprecations - starts the project + unsupported version + prints the warning + with --suppress-tmux-version-warning flag + does not print the warning + supported version + does not print the warning + #commands + lists the commands + #completions + gets completions + #implode + confirms deletion of all projects + deletes the configuration directory(s) + $TMUXINATOR_CONFIG specified + only deletes projects in that directory + #stop(with project config file) + does not set the project name even when set + stops the project + does not stop the project if given a bogus project config file + does not set the project name #create_project when creating a traditional named project it should behave like a_proper_project should create a valid project attach option - detach - sets force_detach to false when no attach argument is provided - sets force_detach to false when 'attach: true' is provided - sets force_detach to true when 'attach: false' is provided attach + sets force_attach to false when 'attach: false' is provided 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 - #implode - deletes the configuration directory(s) - confirms deletion of all projects - $TMUXINATOR_CONFIG specified - only deletes projects in that directory + detach + sets force_detach to false when no attach argument is provided + sets force_detach to true when 'attach: false' is provided + sets force_detach to false when 'attach: true' is provided + exit status + returns a non-zero status when an error occurs + #list + set --newline flag + force output to be one entry per line + no arguments are given + lists all projects #debug + 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 named project - force detach renders the project without attach code renders the project with custom session 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 - #doctor - checks requirements - ::bootstrap - 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 - a thor command - (help) - should call ::start - (-v) - should call ::start - something else - 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 - and there is a local project config - when one or more args are supplied - it should behave like bootstrap_with_arguments - and the first arg is - a thor command - (help) - should call ::start - (-v) - should call ::start - a tmuxinator project name - should call #start - something else - should call ::start - and the first arg is a tmuxinator command - should call ::start - when no args are supplied - should call #local - #new - with the --local option - existing project doesn't exist - creates a new tmuxinator project file - file exists - just opens the file - without the --local option - existing project doesn't exist - creates a new tmuxinator project file - file exists - just opens the 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 - #stop(with project config file) - stops the project - 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 - #commands - lists the commands + force detach renders the project without attach code #delete - with multiple arguments - only one project exists + with a single argument + project doesn't exist outputs an error message - deletes one project + local project exists + deletes the local project + project exists + deletes the project + with multiple arguments all projects do not exist outputs multiple error messages all projects exist deletes the projects - with a single argument - local project exists - deletes the local project - project doesn't exist + only one project exists + deletes one project outputs an error message - project exists - deletes the project + #copy + existing project doesn't exist + exit with error code + new project already exists + prompts user to confirm overwrite #start + supported version + does not print the warning deprecations prints the deprecations unsupported version @@ -1404,152 +1624,78 @@ with --suppress-tmux-version-warning flag does not print the warning no deprecations - accepts a project config file flag - accepts a flag for alternate name - accepts additional arguments starts the project - supported version - does not print the warning - #list - set --newline flag - force output to be one entry per line - no arguments are given - lists all projects - #version - prints the current version - base thor functionality - with a local project config - it should behave like base_thor_functionality - supports help - supports -v - it should behave like base_thor_functionality - supports help - supports -v - #edit - when the project file _does_ already exist - should _not_ generate a new project file - exit status - returns a non-zero status when an error occurs - #generate_project_file - should generate a project file using the correct project file path - should always generate a project file - #start(with project config file) - no deprecations - does not start the project if given a bogus project config file - starts the project if given a valid project config file - does not set the project name - passes additional arguments through - no arguments - runs without error - #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 + accepts additional arguments + accepts a flag for alternate name + accepts a project config file flag #stop - supported version - does not print the warning 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 without project name stops the project using .tmuxinator.yml - -Tmuxinator::WemuxSupport - #render - renders the template - #tmux - is expected to eq "wemux" - #name - is expected to eq "wemux" - -Tmuxinator::Window - #pre - pre is not present - returns nil - pre is a string - returns the pre command - #tmux_new_window_command - constructs window command with path, target, and name options - root not set - has an extra space instead of path_part - name not set - does not set name option - #synchronize_after? - synchronization is 'after' - is expected to equal true - synchronization is true - is expected to equal false - synchronization not specified - is expected to equal false - synchronization is 'before' - is expected to equal false - synchronization disabled - is expected to equal false - #tmux_select_first_pane - targets the pane based on the configured pane_base_index - #panes - titled panes - creates panes with titles - with nil - returns an empty Array - with a String - returns one pane in an Array - nested collections - with nested hash - returns two panes in an Array - with nested array - returns two panes in an Array - with a three element Array - creates three panes - returns three panes - #synchronize_before? - synchronize is true - is expected to equal true - synchronize is 'before' - is expected to equal true - synchronize is 'after' - is expected to equal false - synchronization disabled - is expected to equal false - synchronization not specified - is expected to equal false - #build_commands - command is empty - returns an empty array - command is an array - returns the flattened command - command is a hash - returns an empty array - command is a string - returns the command - #root - without window root - gets the project root - with window root - gets the window root - #initialize - creates an instance - #name_options - with a name - specifies name with tmux name option - without a name - specifies no tmux name option - #tmux_synchronize_panes - synchronization enabled - should set the synchronize-panes window option on - -Tmuxinator::Pane - does not set pane title - is expected to eql "foo:0.1" - creates an instance - when title is provided - sets pane title + #doctor + checks requirements + #new + from a session + with tmux >= 1.6 + session exists + creates a project file +for-testing-tmuxinator + session doesn't exist + fails + with tmux < 1.6 + is unsupported + without the --local option + existing project doesn't exist + creates a new tmuxinator project file + file exists + just opens the file + with the --local option + existing project doesn't exist + creates a new tmuxinator project file + file exists + just opens the file + ::bootstrap + and there is a local project config + when one or more args are supplied + it should behave like bootstrap_with_arguments + and the first arg is a tmuxinator command + should call ::start + and the first arg is + a tmuxinator project name + should call #start + a thor command + (help) + should call ::start + (-v) + should call ::start + something else + should call ::start + when no args are supplied + should call #local + 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 a tmuxinator command + should call ::start + and the first arg is + a tmuxinator project name + should call #start + something else + should call ::start + a thor command + (help) + should call ::start + (-v) + should call ::start + when no args are supplied + should call ::start Tmuxinator::Hooks #commands_from @@ -1558,167 +1704,7 @@ config value is Array joins array using ; -Tmuxinator::Project - should include Hooks - #window - gets the window and index for tmux - #tmux_options - no tmux options - returns nothing - with deprecations - still gets the tmux options - tmux_kill_session_command - when first window has a name - returns command to start a new detached session - #base_index - base index present - gets the base index - when pane_base_index is 1 and base_index is unset - gets the tmux default of 0 - base index not present - defaults to 0 - #tmux_command - tmux_command specified - gets the custom tmux command - tmux_command is not specified - returns the default - #commands - splits commands into an array - #pre_window - with deprecations - pre_tab is present - still gets the correct pre_window command - rbenv option is present - still gets the correct pre_window command - rvm option is present - still gets the correct pre_window command - pre_window in yaml is string - returns the string - pre_window in yaml is Array - joins array using ; - #send_pane_command - command for pane is not empty - returns the tmux command - no command for pane - returns empty string - #windows - with deprecations - still gets the list of windows - without deprecations - gets the list of windows - #deprecations - with deprecations - is not empty - without deprecations - is empty - #validate! - should raise if there is not a project name - should raise if there are no windows defined - #send_keys - no command for window - returns empty string - command for window is not empty - returns the tmux command - #render - renders the tmux config - with alias - renders the tmux config - wemux -sh: 1: wemux: not found - renders the wemux config - custom name - renders the tmux config with custom name - #pre - pre in yaml is Array - joins array using ; - pre 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 - #root? - root are present - returns true - #get_base_index - extracts base-index from the global tmux options - #tmux_has_session? - no active sessions - should return false if no sessions are found - active sessions - should return false if a partial (prefix) match is found - should return true only when `tmux ls` has the named session - #name - as emoji - will gracefully handle a name given as an emoji - without name - displays error message - window as non-string literal - will gracefully handle a window name given as a non-string literal - without deprecations - gets the name - with deprecations - still gets the name - wemux - is wemux - as number - will gracefully handle a name given as a number - ::parse_settings - returns settings in a hash - removes settings from args - #initialize - valid yaml - creates an instance - #startup_pane - startup pane specified - get the startup pane index from project config - startup pane not specified - returns the base pane instead - 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 - #attach? - attach is false in yaml - returns false - attach is false in yaml, but command line forces attach - returns true - attach is true in yaml - returns true - attach is true in yaml, but command line forces detach - returns false - attach is not defined in yaml - returns true - #startup_window - startup window not specified - returns base index instead - startup window specified - gets the startup window from project config - #socket - socket path is present - gets the socket path - #name? - name is present - returns true - #root - without root - doesn't throw an error - with deprecations - still gets the root - without deprecations - gets the root - #windows? - windows are present - returns true - Tmuxinator::Doctor - .shell? - $SHELL is not set - returns false - $SHELL is set - returns true .installed? tmux is installed returns true @@ -1729,11 +1715,61 @@ returns true $EDITOR is not set returns false + .shell? + $SHELL is set + returns true + $SHELL is not set + returns false + +Tmuxinator::WemuxSupport + #name + is expected to eq "wemux" + #render + renders the template + #tmux + is expected to eq "wemux" + +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_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 ; + #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_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_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 -Finished in 2.67 seconds (files took 0.9694 seconds to load) +Finished in 1.64 seconds (files took 0.59388 seconds to load) 278 examples, 0 failures -Randomized with seed 31604 +Randomized with seed 43088 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1775,12 +1811,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/108237/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/108237/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/22109 and its subdirectories -I: Current time: Thu Mar 28 14:10:48 -12 2024 -I: pbuilder-time-stamp: 1711678248 +I: removing directory /srv/workspace/pbuilder/108237 and its subdirectories +I: Current time: Thu May 1 22:34:28 +14 2025 +I: pbuilder-time-stamp: 1746088468