Diff of the two buildlogs: -- --- b1/build.log 2024-03-30 14:18:29.279343363 +0000 +++ b2/build.log 2024-03-30 14:22:45.364423948 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Mar 30 02:12:45 -12 2024 -I: pbuilder-time-stamp: 1711807965 +I: Current time: Sun Mar 31 04:18:39 +14 2024 +I: pbuilder-time-stamp: 1711808319 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -28,52 +28,84 @@ 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/4140/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/16774/tmp/hooks/D01_modify_environment starting +debug: Running on virt64z. +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 30 14:18 /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/16774/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/16774/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='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='armhf' + 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]="arm-unknown-linux-gnueabihf") + 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=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='ac04c801ae1e44daa599cfed94b8e734' - 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='4140' - PS1='# ' - PS2='> ' + INVOCATION_ID=6cd0e0b530c54daabddb2ed7f1f742af + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + 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=16774 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.Sv1QD7a1/pbuilderrc_L8uc --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.Sv1QD7a1/b1 --logfile b1/build.log tmuxinator_3.1.2-1.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + 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.Sv1QD7a1/pbuilderrc_bz8e --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.Sv1QD7a1/b2 --logfile b2/build.log tmuxinator_3.1.2-1.dsc' + SUDO_GID=110 + SUDO_UID=103 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux ff4a 6.1.0-18-armmp-lpae #1 SMP Debian 6.1.76-1 (2024-02-01) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-18-arm64 #1 SMP Debian 6.1.76-1 (2024-02-01) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Mar 26 11:26 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/4140/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Mar 26 11:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/16774/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -305,7 +337,7 @@ Get: 168 http://deb.debian.org/debian trixie/main armhf ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 169 http://deb.debian.org/debian trixie/main armhf ruby-xdg all 2.2.3-1.1 [12.0 kB] Get: 170 http://deb.debian.org/debian trixie/main armhf tmux armhf 3.3a-5 [394 kB] -Fetched 48.6 MB in 7s (6969 kB/s) +Fetched 48.6 MB in 3s (17.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:armhf. (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 ... 19637 files and directories currently installed.) @@ -859,8 +891,8 @@ Setting up tzdata (2024a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Mar 30 14:15:57 UTC 2024. -Universal Time is now: Sat Mar 30 14:15:57 UTC 2024. +Local time is now: Sat Mar 30 14:20:45 UTC 2024. +Universal Time is now: Sat Mar 30 14:20:45 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-method-source (1.0.0-2) ... @@ -1015,7 +1047,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/16774/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/16774/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 @@ -1094,638 +1130,638 @@ 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/arm-linux-gnueabihf/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/arm-linux-gnueabihf/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 31937 - -Tmuxinator::Pane - creates an instance - does not set pane title - is expected to eql "foo:0.1" - when title is provided - sets pane title +Randomized with seed 32559 Tmuxinator::Window - #pre - pre is a string - returns the pre command - pre is not present - returns nil - #root - with window root - gets the window root - without window root - gets the project root - #name_options - without a name - specifies no tmux name option - with a name - specifies name with tmux name option - #tmux_synchronize_panes - synchronization enabled - should set the synchronize-panes window option on - #synchronize_before? - synchronization disabled - is expected to equal false - synchronize is true - is expected to equal true - synchronize is 'after' - is expected to equal false - synchronize is 'before' - is expected to equal true - synchronization not specified - is expected to equal false #panes - titled panes - creates panes with titles with nil returns an empty Array + nested collections + with nested array + returns two panes in an Array + with nested hash + returns two panes in an Array + titled panes + creates panes with titles with a String returns one pane in an Array with a three element Array returns three panes creates three panes - nested collections - with nested hash - returns two panes in an Array - with nested array - returns two panes in an Array - #build_commands - command is a hash - returns an empty array - command is empty - returns an empty array - command is a string - returns the command - command is an array - returns the flattened command - #tmux_select_first_pane - targets the pane based on the configured pane_base_index - #synchronize_after? - synchronization is true - is expected to equal false + #synchronize_before? synchronization disabled is expected to equal false - synchronization not specified + synchronize is 'before' + is expected to equal true + synchronize is true + is expected to equal true + synchronize is 'after' is expected to equal false - synchronization is 'before' + synchronization not specified is expected to equal false - synchronization is 'after' - is expected to equal true #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 + #synchronize_after? + synchronization is true + is expected to equal false + synchronization disabled + is expected to equal false + synchronization is 'after' + is expected to equal true + synchronization not specified + is expected to equal false + synchronization is 'before' + is expected to equal false + #tmux_select_first_pane + targets the pane based on the configured pane_base_index + #tmux_synchronize_panes + synchronization enabled + should set the synchronize-panes window option on #initialize creates an instance + #root + with window root + gets the window root + without window root + gets the project root + #pre + pre is a string + returns the pre command + pre is not present + returns nil + #build_commands + command is an array + returns the flattened command + command is a hash + returns an empty array + command is empty + returns an empty array + command is a string + returns the command + #name_options + without a name + specifies no tmux name option + with a name + specifies name with tmux name option + +Tmuxinator::Hooks + #commands_from + config value is Array + joins array using ; + config value is string + returns the string + +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::Hooks::Project + #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_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_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::Project + should include Hooks + #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 + #validate! + should raise if there is not a project name + should raise if there are no windows defined + #name + without name + displays error message + 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 deprecations + gets the name + as emoji + will gracefully handle a name given as an emoji + with deprecations + still gets the name + wemux + is wemux + #send_keys + no command for window + returns empty string + command for window is not empty + returns the tmux command + #root + without root + doesn't throw an error + with deprecations + still gets the root + without deprecations + gets the root + #commands + splits commands into an array + #get_base_index + extracts base-index from the global tmux 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, but command line forces detach + returns false + attach is true in yaml + returns true + attach is not defined in yaml + returns true + #window + gets the window and index for tmux + #get_pane_base_index + extracts pane-base-index from the global tmux window options + #pre_window + with deprecations + rvm option is present + still gets the correct pre_window command + pre_tab is present + still gets the correct pre_window command + rbenv option 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 + #socket + socket path is present + gets the socket path + ::parse_settings + returns settings in a hash + removes settings from args + #pre + pre in yaml is string + returns the string + pre in yaml is Array + joins array using ; + tmux_kill_session_command + when first window has a name + returns command to start a new detached session + #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 + #startup_pane + startup pane specified + get the startup pane index from project config + startup pane not specified + returns the base pane instead + ::load + should return an instance of the class if the file loads + should raise if the project file doesn't parse + #windows? + windows are present + returns true + #tmux_command + tmux_command is not specified + returns the default + tmux_command specified + gets the custom tmux command + #windows + without deprecations + gets the list of windows + with deprecations + still gets the list of windows + #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 + #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 + #send_pane_command + command for pane is not empty + returns the tmux command + no command for pane + returns empty string + #tmux_options + no tmux options + returns nothing + with deprecations + still gets the tmux options + tmux_new_session_command + when first window has a name + returns command to start a new detached session + when first window is nameless + returns command to for new detached session without a window name + #initialize + valid yaml + creates an instance + #name? + name is present + returns true + #deprecations + without deprecations + is empty + with deprecations + is not empty + +Tmuxinator::Doctor + .shell? + $SHELL is set + returns true + $SHELL is not set + returns false + .editor? + $EDITOR is set + returns true + $EDITOR is not set + returns false + .installed? + tmux is not installed + returns false + tmux is installed + returns true Tmuxinator::Cli + #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 + passes additional arguments through + does not set the project name + starts the project if given a valid project config file + #commands + lists the commands + #start(custom_name) + no deprecations + starts the project + #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 with custom session + force attach renders the project with attach code + force detach renders the project without attach code + renders the project + #doctor + checks requirements + no arguments + runs without error + exit status + returns a non-zero status when an error occurs + #copy + existing project doesn't exist + exit with error code + new project already exists + prompts user to confirm overwrite #delete - with a single argument - project exists - deletes the project - local project exists - deletes the local project - project doesn't exist - outputs an error message with multiple arguments - only one project exists - outputs an error message - deletes one project all projects exist deletes the projects + only one project exists + deletes one project + outputs an error message all projects do not exist outputs multiple error messages - 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 - #doctor - checks requirements - #implode - deletes the configuration directory(s) - confirms deletion of all projects - $TMUXINATOR_CONFIG specified - only deletes projects in that directory + with a single argument + project exists + deletes the project + project doesn't exist + outputs an error message + local project exists + deletes the local project #stop(with project config file) - does not set the project name does not stop the project if given a bogus project config file - stops the project does not set the project name even when set - #commands - lists the commands + does not set the project name + stops the project + #list + set --newline flag + force output to be one entry per line + no arguments are given + lists all projects + #stop + without project name + stops the project using .tmuxinator.yml + supported version + does not print the warning + unsupported version + prints the warning + with --suppress-tmux-version-warning flag + does not print the warning + with project name + stops the project #new - 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 exists creates a project file for-testing-tmuxinator session doesn't exist fails + with tmux < 1.6 + is unsupported with the --local option file exists just opens the file existing project doesn't exist creates a new tmuxinator project file - #stop - unsupported version - prints the warning - with --suppress-tmux-version-warning flag - does not print the warning - with project name - stops the project - without project name - stops the project using .tmuxinator.yml - supported version - does not print the warning - #list - no arguments are given - lists all projects - set --newline flag - force output to be one entry per line - #start(custom_name) - no deprecations - starts the project - exit status - returns a non-zero status when an error occurs - #copy - new project already exists - prompts user to confirm overwrite - existing project doesn't exist - exit with error code - #debug - named project - renders the project with custom session - force attach renders the project with attach code - force detach renders the project without 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 - #start - unsupported version - prints the warning - with --suppress-tmux-version-warning flag - does not print the warning - supported version - does not print the warning - deprecations - prints the deprecations - no deprecations - accepts additional arguments - starts the project - accepts a project config file flag - accepts a flag for alternate name - #version - prints the current version + without the --local option + existing project doesn't exist + creates a new tmuxinator project file + file exists + just opens the file + #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 #create_project + when creating a traditional named project + it should behave like a_proper_project + should create a valid 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 - no arguments - runs without error - #generate_project_file - should always generate a project file - should generate a project file using the correct project file path + attach + sets force_attach to true when 'attach: true' is provided + sets force_attach to false when no attach argument is provided + sets force_attach to false when 'attach: false' is provided + 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 -v + supports help + #version + prints the current version + #edit + when the project file _does_ already exist + should _not_ generate a new project file #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 - when the command used is '.' - it should behave like local_project - starts the project supported version does not print the warning - when the command used is 'local' + when the command used is '.' it should behave like local_project starts the project - #edit - when the project file _does_ already exist - should _not_ generate a new project file - #start(with project config file) - no deprecations - does not set the project name - does not start the project if given a bogus project config file - passes additional arguments through - starts the project if given a valid project config file - #completions - gets completions ::bootstrap - and there is a local project config + 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 thor command - (help) - should call ::start (-v) should call ::start - something else - should call ::start + (help) + 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 ::start + and there is a local project config 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 - 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 - #find_project_file - when the project file _does_ already exist - should _not_ generate a new project file - when the project file does not already exist - should generate a project file + something else + should call ::start + a tmuxinator project name + should call #start + #start + unsupported version + prints the warning + with --suppress-tmux-version-warning flag + does not print the warning + no deprecations + starts the project + accepts additional arguments + accepts a project config file flag + accepts a flag for alternate name + supported version + does not print the warning + deprecations + prints the deprecations + #implode + confirms deletion of all projects + deletes the configuration directory(s) + $TMUXINATOR_CONFIG specified + only deletes projects in that directory -Tmuxinator::Doctor - .installed? - tmux is not installed - returns false - tmux is installed - returns true - .shell? - $SHELL is set +Tmuxinator::Config + #default + gets the path of the default config + #default_path_option + >= 1.8 + returns -c + < 1.8 + returns default-path + #default? + when the file exists returns true - $SHELL is not set - returns false - .editor? - $EDITOR is set + when the file doesn't exist returns true - $EDITOR is not set - returns false - -Tmuxinator::Hooks - #commands_from - config value is Array - joins array using ; - config value is string - returns the string - -Tmuxinator::WemuxSupport - #render - renders the template - #tmux - is expected to eq "wemux" - #name - is expected to eq "wemux" - -Tmuxinator::Config #local? checks if the given project exists - #sample - gets the path of the sample project - #home - is ~/.tmuxinator #validate - when a project config file is provided - should take precedence over a named project - should take precedence over a local project + when a project name is provided should load and validate the project - should raise if the project config file can't be found - when no project can be found - should raise with NO_PROJECT_FOUND_MSG + should raise if the project file can't be found 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 name is provided - should raise if the project file can't be found + when no project can be found + should raise with NO_PROJECT_FOUND_MSG + when a project config file is provided + should take precedence over a local project + should take precedence over a named project + should raise if the project config file can't be found should load and validate the project #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 duplicate project files - is the first .yml file found with project yml gets the project as path to the yml file - #directories - with TMUXINATOR_CONFIG environment - is only [$TMUXINATOR_CONFIG] if set - without TMUXINATOR_CONFIG environment - is empty if no configuration directories exist - contains #xdg before #home - #project - with an non-local 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 without project yml gets the project as path to the yml file + with duplicate project files + is the first .yml file found + with project yaml + gets the project as path to the yaml file #directory - only $XDG_CONFIG_HOME/tmuxinator exists - is #xdg 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 - #default_path_option - < 1.8 - returns default-path - >= 1.8 - returns -c - #exists? - checks if the given project exists - #default? - when the file doesn't exist - returns true - when the file exists - returns true - #configs - gets a sorted list of all projects - lists only projects in $TMUXINATOR_CONFIG when set - #default - gets the path of the default config - #local_project - with a project yml + #xdg + is $XDG_CONFIG_HOME/tmuxinator + #sample + gets the path of the sample project + #project + with an non-local 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 + without project yml + gets the project as path to the yml file + #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 + #home + is ~/.tmuxinator #version - 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 '3.0-rc5' is expected to eq 3.0 - when reported version is '5935' - is expected to eq 5935.0 - when reported version is '2.4' - is expected to eq 2.4 when reported version is '2.9a' is expected to eq 2.9 + when reported version is 'next-3.1' + is expected to eq 3.1 when reported version is '-123-' is expected to eq 123.0 - 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 '1.9' + is expected to eq 1.9 + when reported version is '0.8' + is expected to eq 0.8 + when reported version is 'master' + is expected to eq Infinity when reported version is 'v3.12.0' is expected to eq 3.12 - when reported version is '2.9ä' - is expected to eq 2.9 + 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 '2.4' + is expected to eq 2.4 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 'foobar' + is expected to eq 0.0 when reported version is '1.0' is expected to eq 1.0 - when reported version is 'master' - is expected to eq Infinity - when reported version is 'next-3.1' - is expected to eq 3.1 + when reported version is '5935' + is expected to eq 5935.0 when reported version is '1.9a' is expected to eq 1.9 + when reported version is '2.9ä' + is expected to eq 2.9 when reported version is '' is expected to eq 0.0 - #xdg - is $XDG_CONFIG_HOME/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 + #exists? + checks if the given project exists #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 - environment variable $TMUXINATOR_CONFIG is nil - is an empty string -Tmuxinator::Project - should include Hooks - #send_keys - command for window is not empty - returns the tmux command - no command for window - returns empty string - #root? - root are present - returns true - #pre - pre in yaml is string - returns the string - pre in yaml is Array - joins array using ; - #validate! - should raise if there is not a project name - should raise if there are no windows defined - #commands - splits commands into an array - #initialize - valid yaml - creates an instance - ::parse_settings - removes settings from args - returns settings in a hash - #window - gets the window and index for tmux - tmux_new_session_command - when first window has a name - returns command to start a new detached session - when first window is nameless - returns command to for new detached session without a window name - #send_pane_command - command for pane is not empty - returns the tmux command - no command for pane - returns empty string - #deprecations - without deprecations - is empty - with deprecations - is not empty - #windows? - windows are present - returns true +Tmuxinator::WemuxSupport #render - renders the tmux config - custom name - renders the tmux config with custom name - wemux -sh: 1: wemux: not found - renders the wemux config - with alias - renders the tmux config - #pre_window - pre_window in yaml is string - returns the string - pre_window in yaml is Array - joins array using ; - 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 - #get_pane_base_index - extracts pane-base-index from the global tmux window options - #tmux_has_session? - active sessions - should return false if a partial (prefix) match is found - should return true only when `tmux ls` has the named session - no active sessions - should return false if no sessions are found - #name? - name is 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 - #tmux_command - tmux_command is not specified - returns the default - tmux_command specified - gets the custom tmux command - #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 + renders the template #name - as emoji - will gracefully handle a name given as an emoji - window as non-string literal - will gracefully handle a window name given as a non-string literal - wemux - is wemux - as number - will gracefully handle a name given as a number - without deprecations - gets the name - with deprecations - still gets the name - without name - displays error message - #tmux_options - no tmux options - returns nothing - with deprecations - still gets the tmux options - #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 - #get_base_index - extracts base-index from the global tmux options - #windows - without deprecations - gets the list of windows - with deprecations - still gets the list of windows - #attach? - attach is false in yaml - returns false - attach is not defined in yaml - returns true - attach is true in yaml, but command line forces detach - returns false - attach is true in yaml - returns true - attach is false in yaml, but command line forces attach - returns true - #socket - socket path is present - gets the socket path - ::load - should return an instance of the class if the file loads - should raise if the project file doesn't parse - tmux_kill_session_command - when first window has a name - returns command to start a new detached session - -Tmuxinator::Hooks::Project - #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 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_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_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 ; + is expected to eq "wemux" + #tmux + is expected to eq "wemux" -Finished in 14.83 seconds (files took 5.85 seconds to load) +Finished in 13.96 seconds (files took 4.37 seconds to load) 278 examples, 0 failures -Randomized with seed 31937 +Randomized with seed 32559 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1767,12 +1803,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/16774/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/16774/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/4140 and its subdirectories -I: Current time: Sat Mar 30 02:18:22 -12 2024 -I: pbuilder-time-stamp: 1711808302 +I: removing directory /srv/workspace/pbuilder/16774 and its subdirectories +I: Current time: Sun Mar 31 04:22:41 +14 2024 +I: pbuilder-time-stamp: 1711808561