Diff of the two buildlogs: -- --- b1/build.log 2025-01-21 17:50:18.754443217 +0000 +++ b2/build.log 2025-01-21 17:51:38.454830410 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Feb 23 12:11:17 -12 2026 -I: pbuilder-time-stamp: 1771891877 +I: Current time: Wed Jan 22 07:50:22 +14 2025 +I: pbuilder-time-stamp: 1737481822 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -24,52 +24,84 @@ dpkg-source: info: applying 0001-update-File.exists-to-File.exist.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/376841/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2764355/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-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 Jan 21 17:50 /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/2764355/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2764355/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' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' + 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='e578c92b4b414a548c3fda9caa93ffbe' - 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='376841' - PS1='# ' - PS2='> ' + INVOCATION_ID=d40fb7eeace24d978293d6af4d3d6200 + 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=2764355 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.EabmhKKz/pbuilderrc_GrfU --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.EabmhKKz/b1 --logfile b1/build.log ruby-chef-config_16.12.3-3.dsc' - SUDO_GID='111' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152: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.EabmhKKz/pbuilderrc_guu3 --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.EabmhKKz/b2 --logfile b2/build.log ruby-chef-config_16.12.3-3.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos15-amd64 6.11.10+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.10-1~bpo12+1 (2024-12-19) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/376841/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2764355/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -272,7 +304,7 @@ Get: 145 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB] Get: 146 http://deb.debian.org/debian unstable/main amd64 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 147 http://deb.debian.org/debian unstable/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] -Fetched 56.0 MB in 4s (15.6 MB/s) +Fetched 56.0 MB in 5s (11.6 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-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 ... 19851 files and directories currently installed.) @@ -758,8 +790,8 @@ Setting up tzdata (2025a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Feb 24 00:12:40 UTC 2026. -Universal Time is now: Tue Feb 24 00:12:40 UTC 2026. +Local time is now: Tue Jan 21 17:51:12 UTC 2025. +Universal Time is now: Tue Jan 21 17:51:12 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -895,7 +927,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-chef-config-16.12.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../ruby-chef-config_16.12.3-3_source.changes +I: user script /srv/workspace/pbuilder/2764355/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/2764355/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-chef-config-16.12.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../ruby-chef-config_16.12.3-3_source.changes dpkg-buildpackage: info: source package ruby-chef-config dpkg-buildpackage: info: source version 16.12.3-3 dpkg-buildpackage: info: source distribution unstable @@ -929,7 +965,7 @@ │ ruby-chef-config: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20260223-405877-z1sj6a/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250122-2771441-n1xtk4/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: open-ended dependency on fuzzyurl (>= 0) is not recommended use a bounded requirement, such as '~> x.y' @@ -940,7 +976,7 @@ Name: chef-config Version: 16.12.3 File: chef-config-16.12.3.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-chef-config/usr/share/rubygems-integration/all /tmp/d20260223-405877-z1sj6a/chef-config-16.12.3.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-chef-config/usr/share/rubygems-integration/all /tmp/d20250122-2771441-n1xtk4/chef-config-16.12.3.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-chef-config-16.12.3/debian/ruby-chef-config/usr/share/rubygems-integration/all/gems/chef-config-16.12.3/lib/chef-config.rb /build/reproducible-path/ruby-chef-config-16.12.3/debian/ruby-chef-config/usr/share/rubygems-integration/all/gems/chef-config-16.12.3/lib/chef-config/config.rb @@ -990,313 +1026,187 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 24360 - -ChefConfig::PathHelper - forcing windows/non-windows - forcing windows - cleanpath changes slashes into backslashes and leaves backslashes alone - path_separator is \ - cleanpath does not remove leading double backslash - platform-specific #join behavior - joins components that don't end in separators - joins components on Windows when some end with unix separators - joins components when some end with separators - joins components when some end and start with separators - forcing unix - cleanpath changes backslashes into slashes and leaves slashes alone - cleanpath removes extra slashes alone - cleanpath does not remove leading double backslash - path_separator is / - platform-specific #join behavior - joins components when some end with separators - joins components when some end and start with separators - joins components that don't end in separators - escape_glob_dir - escapes characters reserved by glob without using backslashes for path separators - when given more than one argument - joins, cleanpaths, and escapes characters reserved by glob - all_homes - on unix - when HOME is not set - returns an empty array - canonical_path - not on windows - returns a canonical path - windows_max_length_exceeded? - returns true if the path is too long (259 + NUL) for the API - returns false if the path is over 259 characters but uses the \\?\ prefix - returns false if the path is not too long (259 + NUL) for the standard API - on unix - cleanpath removes extra slashes alone - path_separator is / - cleanpath changes backslashes into slashes and leaves slashes alone - cleanpath does not remove leading double backslash - platform-specific #join behavior - joins components when some end and start with separators - joins components that don't end in separators - joins components when some end with separators - paths_eql? - returns false if the paths are different - returns true if the paths are the same - escape_glob - escapes characters reserved by glob - when given more than one argument - joins, cleanpaths, and escapes characters reserved by glob - common functionality - dirname - dirname('a/b/c/') is 'a/b' - dirname('/') is '/' - dirname('/a/b/c') is '/a/b' - dirname('abc') is '.' - dirname('a/b/c') is 'a/b' - join - joins starting with '' resolve to absolute paths - joins ending with '' add a / to the end - validate_path - on windows - returns the path if the path passes the tests - Adds the \\?\ prefix if the path exceeds MAX_LENGTH and does not have it - raises an error if the path has invalid characters - does not raise an error if everything looks great - printable? - returns false if the string contains a non-printable character - returns false if the string contains a newline or tab - returns true if the string contains no non-printable characters - returns true when given japanese unicode - returns true when given 'abc' in unicode - -ChefConfig.fips? - on *nix - fips file is present and contains 1 - returns true - fips file does not contain 1 - returns false - fips file is not present - returns false +Randomized with seed 5592 ChefConfig::Config - On Windows - ChefConfig::Config[:encrypted_data_bag_secret] - /etc/chef/encrypted_data_bag_secret does not exist - sets the value to nil - /etc/chef/encrypted_data_bag_secret exists - sets the value to /etc/chef/encrypted_data_bag_secret - ChefConfig::Config[:user_valid_regex] - on a platform that is not Windows - allows one letter usernames - ChefConfig::Config[:event_handlers] - sets a event_handlers to an empty array by default - should be able to add custom handlers - class method: windows_installation_drive - should return D: on a windows system - ChefConfig::Config[:internal_locale] - when the result includes 'en_*.utf8' - returns an English UTF-8 locale - when the result includes 'en_US.utf8' - returns an English UTF-8 locale - when the result includes 'en_*.UTF-8' - returns an English UTF-8 locale - on error - should default to 'en_US.UTF-8' - when the result does not include 'en_*.UTF-8' - should fall back to C locale - when the result includes 'C.UTF-8' - returns an English UTF-8 locale - when the result includes 'en_US.UTF-8' - returns an English UTF-8 locale - when the result includes 'en.UTF-8' - returns an English UTF-8 locale - ChefConfig::Config[:user_home] - should set when HOME is provided - falls back to the current working directory when HOME and USERPROFILE is not set - class method: platform_specific_path - a windows system with chef installed on C: drive - should return a windows path rooted in C: - a windows system with chef installed on D: drive - should return a windows path rooted in D: - default values - ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup - ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer - ChefConfig::Config[:show_download_progress] defaults to false - ChefConfig::Config[:ssl_ca_path] defaults to nil - ChefConfig::Config[:stream_execute_output] defaults to false - ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags - ChefConfig::Config[:download_progress_interval] defaults to every 10% - ChefConfig::Config[:environment_path] defaults to /var/chef/environments - ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts - ChefConfig::Config[:chef_repo_path] - when cookbook_path is not set - is set to the cache_path - when cookbook_path is set to a single path - is set to a path one directory up from the cookbook_path - when cookbook_path is set to multiple paths - is set to an Array of paths one directory up from the cookbook_paths - when cookbook_path is not set but cookbook_artifact_path is set - is set to a path one directory up from the cookbook_artifact_path - setting the config dir - when the user's home dir is /home/charlie/ - config_dir is /home/charlie/.chef/ - and chef is running in local mode - config_dir is /home/charlie/.chef/ - when the config file is given with a relative path - expands the path when determining config_dir - does not set derived paths at FS root - when the user's home dir is windows specific - config_dir is with backslashes - and chef is running in local mode - config_dir is with backslashes - when the config file is /etc/chef/client.rb - config_dir is /etc/chef - when config_dir is set to /other/config/dir/ - yields the explicit value - and chef is running in local mode - config_dir is /etc/chef - finding the windows embedded dir - doesn't error when not in an omnibus install - sets the ssl_ca_cert path if the cert file is available - finds the embedded dir in a custom install location - finds the embedded dir in the default location - ChefConfig::Config[:client_key] - sets the default path to the client key - when target mode is enabled - sets the default path to the client key with the target host name - when local mode is enabled - returns nil - ChefConfig::Config[:cache_path] - when chef is running in local mode - and config_dir is /a/b/c - cache_path is /a/b/c/local-mode-cache - and config_dir is /a/b/c/ - cache_path is /a/b/c/local-mode-cache - when /var/chef does not exist and /var is not accessible - defaults to $HOME/.chef - when /var/chef does not exist and /var is accessible - defaults to /var/chef - when /var/chef exists and is not accessible - defaults to $HOME/.chef - and target mode is enabled - cache path defaults to $HOME/.chef with the target host name - when /var/chef exists and is accessible - defaults to /var/chef - and target mode is enabled - cache path includes the target host name - ChefConfig::Config[:repo_mode] - when local mode is enabled - defaults to 'hosted_everything' - and osc_compat is enabled - defaults to 'everything' - when local mode is not enabled - and the chef_server_url is multi-tenant - defaults to 'hosted_everything' - and the chef_server_url is not multi-tenant - defaults to 'everything' - ChefConfig::Config[:chef_server_root] - when chef_server_url matches '../organizations/*' with a trailing slash - returns the full URL without /organizations/* - when chef_server_url matches '..organizations..' but not '../organizations/*' - returns the full URL without any modifications - when chef_server_url isn't set manually - returns the default of 'https://localhost:443' - when chef_server_url matches '../organizations/*' without a trailing slash - returns the full URL without /organizations/* - when chef_server_url is a standard URL without the string organization(s) - returns the full URL without any modifications - ChefConfig::Config[:fips] - returns false when no environment is set and not enabled on system - when fips is enabled on system - returns true - when ENV['CHEF_FIPS'] is empty - returns false - when ENV['CHEF_FIPS'] is set - returns true - Treating deprecation warnings as errors - outside of our test environment - defaults to NOT treating deprecation warnings as errors - when using our default RSpec configuration - treats deprecation warnings as errors in child processes when testing - sets CHEF_TREAT_DEPRECATION_WARNINGS_AS_ERRORS environment variable - defaults to treating deprecation warnings as errors + parsing arbitrary config from the CLI + when given input that is not in key=value form + raises UnparsableConfigOption + expand relative paths + when passes multiple cookbook_paths in config options + expanded paths + when passes multiple config options + expanded paths + when given cookbook_path + expanded cookbook_path + when no arbitrary config is given + succeeds + when given a boolean + converts to a boolean type and applies the config option + when given spaces between `key = value` + handles the extra spaces and applies the config option + when given a simple string option + applies the string option + when given an integer value + converts to a numeric type and applies the config option + when given a blank value + sets the value to nil export_proxies - when proxy_pass and proxy_user are passed as empty strings + when nothing is set + does not export any proxy settings + when proxy_pass and proxy_user are not provided does not populate the user or password when https_proxy, proxy_pass and proxy_user are set exports ENV['https_proxy'] - when http_proxy, proxy_pass and proxy_user are set - exports ENV['http_proxy'] when all the users and passwords are set but no proxies are set does not export any proxy settings - no_proxy is set - exports ENV['no_proxy'] when ftp_proxy, proxy_pass and proxy_user are set exports ENV['ftp_proxy'] - when proxy_pass and proxy_user are not provided + when http_proxy, proxy_pass and proxy_user are set + exports ENV['http_proxy'] + no_proxy is set + exports ENV['no_proxy'] + when proxy_pass and proxy_user are passed as empty strings does not populate the user or password when the proxy is provided without a scheme automatically adds the scheme to the proxy url - when nothing is set - does not export any proxy settings - when configuring formatters - has an empty list of formatters by default - configures a formatter with a short name - configures a formatter with a file output + allowing chefdk configuration outside of chefdk + allows arbitrary settings in the chefdk config context + validation_client_name + with a normal server URL + sets the validation client to myorg-validator + with an unusual server URL + sets the validation client to chef-validator + Treating deprecation warnings as errors + when using our default RSpec configuration + sets CHEF_TREAT_DEPRECATION_WARNINGS_AS_ERRORS environment variable + treats deprecation warnings as errors in child processes when testing + defaults to treating deprecation warnings as errors + outside of our test environment + defaults to NOT treating deprecation warnings as errors + #var_chef_path + on unix + var_chef_dir is /var/chef + etc_chef_dir is /etc/chef + var_root_dir is /var + when forced to windows + etc_chef_dir is C:\chef + var_root_dir is C:\ + var_chef_dir is C:\chef + when forced to unix + var_chef_dir is /var/chef + var_root_dir is /var + etc_chef_dir is /etc/chef + data collector URL + when using default settings + for local mode + sets the data collector server URL to nil + for Chef Solo legacy mode + sets the data collector server URL to nil + for Chef Client + configures the data collector URL as a relative path to the Chef Server URL proxy_uri + when the config setting is normalized (does not contain the scheme) + contains the port + contains the host + when the proxy is set by the environment + contains the host + contains the port when no_proxy is set - when no_proxy is included on a list with wildcards + when no_proxy is included on a list + is expected to eq nil + when no_proxy is a domain with no wildcard is expected to eq nil when no_proxy is the exact host is expected to eq nil - when no_proxy includes the same domain with a wildcard + when no_proxy is included on a list with wildcards is expected to eq nil - when no_proxy is a domain with no wildcard + when no_proxy includes the same domain with a wildcard is expected to eq nil when no_proxy is a domain with a dot prefix is expected to eq nil - when no_proxy is included on a list - is expected to eq nil - when the proxy is set by the environment - contains the port - contains the host when an empty proxy is set by the environment does not fail with URI parse exception - when the config setting is normalized (does not contain the scheme) - contains the host - contains the port - data collector URL - when using default settings - for Chef Solo legacy mode - sets the data collector server URL to nil - for Chef Client - configures the data collector URL as a relative path to the Chef Server URL - for local mode - sets the data collector server URL to nil - validation_client_name - with a normal server URL - sets the validation client to myorg-validator - with an unusual server URL - sets the validation client to chef-validator + when configuring formatters + configures a formatter with a short name + configures a formatter with a file output + has an empty list of formatters by default config attribute writer: chef_server_url sets the server url - when the url is a frozen string - strips the space from the url when setting without raising an error - when the url is invalid - raises an exception when the url has a leading space strips the space from the url when setting - allowing chefdk configuration outside of chefdk - allows arbitrary settings in the chefdk config context + when the url is invalid + raises an exception + when the url is a frozen string + strips the space from the url when setting without raising an error On Unix default values - ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags - ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts - ChefConfig::Config[:stream_execute_output] defaults to false - ChefConfig::Config[:ssl_ca_path] defaults to nil - ChefConfig::Config[:download_progress_interval] defaults to every 10% ChefConfig::Config[:ssl_ca_file] defaults to nil + ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags + ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup ChefConfig::Config[:show_download_progress] defaults to false - ChefConfig::Config[:environment_path] defaults to /var/chef/environments ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer - ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup + ChefConfig::Config[:environment_path] defaults to /var/chef/environments + ChefConfig::Config[:download_progress_interval] defaults to every 10% + ChefConfig::Config[:ssl_ca_path] defaults to nil + ChefConfig::Config[:stream_execute_output] defaults to false + ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts + ChefConfig::Config[:cache_path] + when /var/chef does not exist and /var is accessible + defaults to /var/chef + when /var/chef does not exist and /var is not accessible + defaults to $HOME/.chef + when /var/chef exists and is accessible + defaults to /var/chef + and target mode is enabled + cache path includes the target host name + when /var/chef exists and is not accessible + defaults to $HOME/.chef + and target mode is enabled + cache path defaults to $HOME/.chef with the target host name + when chef is running in local mode + and config_dir is /a/b/c + cache_path is /a/b/c/local-mode-cache + and config_dir is /a/b/c/ + cache_path is /a/b/c/local-mode-cache + ChefConfig::Config[:fips] + returns false when no environment is set and not enabled on system + when fips is enabled on system + returns true + when ENV['CHEF_FIPS'] is empty + returns false + when ENV['CHEF_FIPS'] is set + returns true + setting the config dir + when the user's home dir is /home/charlie/ + config_dir is /home/charlie/.chef/ + and chef is running in local mode + config_dir is /home/charlie/.chef/ + when the config file is given with a relative path + does not set derived paths at FS root + expands the path when determining config_dir + when the config file is /etc/chef/client.rb + config_dir is /etc/chef + when config_dir is set to /other/config/dir/ + yields the explicit value + and chef is running in local mode + config_dir is /etc/chef + ChefConfig::Config[:client_key] + sets the default path to the client key + when target mode is enabled + sets the default path to the client key with the target host name + when local mode is enabled + returns nil + ChefConfig::Config[:repo_mode] + when local mode is not enabled + and the chef_server_url is multi-tenant + defaults to 'hosted_everything' + and the chef_server_url is not multi-tenant + defaults to 'everything' + when local mode is enabled + defaults to 'hosted_everything' + and osc_compat is enabled + defaults to 'everything' ChefConfig::Config[:chef_repo_path] when cookbook_path is set to multiple paths is set to an Array of paths one directory up from the cookbook_paths @@ -1306,49 +1216,86 @@ is set to a path one directory up from the cookbook_artifact_path when cookbook_path is not set is set to the cache_path - ChefConfig::Config[:client_key] - sets the default path to the client key - when target mode is enabled - sets the default path to the client key with the target host name - when local mode is enabled - returns nil - ChefConfig::Config[:fips] - returns false when no environment is set and not enabled on system - when ENV['CHEF_FIPS'] is set - returns true - when ENV['CHEF_FIPS'] is empty - returns false - when fips is enabled on system - returns true - ChefConfig::Config[:cache_path] - when /var/chef exists and is not accessible - defaults to $HOME/.chef - and target mode is enabled - cache path defaults to $HOME/.chef with the target host name - when chef is running in local mode - and config_dir is /a/b/c/ - cache_path is /a/b/c/local-mode-cache - and config_dir is /a/b/c - cache_path is /a/b/c/local-mode-cache - when /var/chef exists and is accessible - defaults to /var/chef - and target mode is enabled - cache path includes the target host name - when /var/chef does not exist and /var is accessible - defaults to /var/chef - when /var/chef does not exist and /var is not accessible - defaults to $HOME/.chef ChefConfig::Config[:chef_server_root] - when chef_server_url matches '../organizations/*' without a trailing slash - returns the full URL without /organizations/* - when chef_server_url matches '..organizations..' but not '../organizations/*' - returns the full URL without any modifications when chef_server_url is a standard URL without the string organization(s) returns the full URL without any modifications - when chef_server_url matches '../organizations/*' with a trailing slash - returns the full URL without /organizations/* + when chef_server_url matches '..organizations..' but not '../organizations/*' + returns the full URL without any modifications when chef_server_url isn't set manually returns the default of 'https://localhost:443' + when chef_server_url matches '../organizations/*' with a trailing slash + returns the full URL without /organizations/* + when chef_server_url matches '../organizations/*' without a trailing slash + returns the full URL without /organizations/* + ChefConfig::Config[:internal_locale] + when the result includes 'en_US.UTF-8' + returns an English UTF-8 locale + on error + should default to 'en_US.UTF-8' + when the result includes 'en_*.UTF-8' + returns an English UTF-8 locale + when the result includes 'en_*.utf8' + returns an English UTF-8 locale + when the result does not include 'en_*.UTF-8' + should fall back to C locale + when the result includes 'en_US.utf8' + returns an English UTF-8 locale + when the result includes 'C.UTF-8' + returns an English UTF-8 locale + when the result includes 'en.UTF-8' + returns an English UTF-8 locale + ChefConfig::Config[:encrypted_data_bag_secret] + /etc/chef/encrypted_data_bag_secret exists + sets the value to /etc/chef/encrypted_data_bag_secret + /etc/chef/encrypted_data_bag_secret does not exist + sets the value to nil + class method: platform_specific_path + should return given path on non-windows systems + ChefConfig::Config[:user_home] + should set when HOME is provided + falls back to the current working directory when HOME and USERPROFILE is not set + ChefConfig::Config[:event_handlers] + should be able to add custom handlers + sets a event_handlers to an empty array by default + class method: windows_installation_drive + should return nil on a non-windows system + ChefConfig::Config[:user_valid_regex] + on a platform that is not Windows + allows one letter usernames + On Windows + ChefConfig::Config[:event_handlers] + should be able to add custom handlers + sets a event_handlers to an empty array by default + ChefConfig::Config[:user_valid_regex] + on a platform that is not Windows + allows one letter usernames + class method: windows_installation_drive + should return D: on a windows system + class method: platform_specific_path + a windows system with chef installed on C: drive + should return a windows path rooted in C: + a windows system with chef installed on D: drive + should return a windows path rooted in D: + ChefConfig::Config[:encrypted_data_bag_secret] + /etc/chef/encrypted_data_bag_secret does not exist + sets the value to nil + /etc/chef/encrypted_data_bag_secret exists + sets the value to /etc/chef/encrypted_data_bag_secret + default values + ChefConfig::Config[:show_download_progress] defaults to false + ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup + ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags + ChefConfig::Config[:download_progress_interval] defaults to every 10% + ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts + ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer + ChefConfig::Config[:stream_execute_output] defaults to false + ChefConfig::Config[:ssl_ca_path] defaults to nil + ChefConfig::Config[:environment_path] defaults to /var/chef/environments + finding the windows embedded dir + finds the embedded dir in a custom install location + doesn't error when not in an omnibus install + finds the embedded dir in the default location + sets the ssl_ca_cert path if the cert file is available setting the config dir when the config file is /etc/chef/client.rb config_dir is /etc/chef @@ -1363,91 +1310,180 @@ config_dir is /home/charlie/.chef/ and chef is running in local mode config_dir is /home/charlie/.chef/ + when the user's home dir is windows specific + config_dir is with backslashes + and chef is running in local mode + config_dir is with backslashes ChefConfig::Config[:repo_mode] when local mode is not enabled - and the chef_server_url is not multi-tenant - defaults to 'everything' and the chef_server_url is multi-tenant defaults to 'hosted_everything' + and the chef_server_url is not multi-tenant + defaults to 'everything' when local mode is enabled defaults to 'hosted_everything' and osc_compat is enabled defaults to 'everything' - class method: platform_specific_path - should return given path on non-windows systems - ChefConfig::Config[:encrypted_data_bag_secret] - /etc/chef/encrypted_data_bag_secret does not exist - sets the value to nil - /etc/chef/encrypted_data_bag_secret exists - sets the value to /etc/chef/encrypted_data_bag_secret - class method: windows_installation_drive - should return nil on a non-windows system + ChefConfig::Config[:chef_server_root] + when chef_server_url isn't set manually + returns the default of 'https://localhost:443' + when chef_server_url is a standard URL without the string organization(s) + returns the full URL without any modifications + when chef_server_url matches '../organizations/*' with a trailing slash + returns the full URL without /organizations/* + when chef_server_url matches '..organizations..' but not '../organizations/*' + returns the full URL without any modifications + when chef_server_url matches '../organizations/*' without a trailing slash + returns the full URL without /organizations/* + ChefConfig::Config[:fips] + returns false when no environment is set and not enabled on system + when ENV['CHEF_FIPS'] is empty + returns false + when fips is enabled on system + returns true + when ENV['CHEF_FIPS'] is set + returns true + ChefConfig::Config[:client_key] + sets the default path to the client key + when local mode is enabled + returns nil + when target mode is enabled + sets the default path to the client key with the target host name + ChefConfig::Config[:chef_repo_path] + when cookbook_path is set to multiple paths + is set to an Array of paths one directory up from the cookbook_paths + when cookbook_path is not set + is set to the cache_path + when cookbook_path is not set but cookbook_artifact_path is set + is set to a path one directory up from the cookbook_artifact_path + when cookbook_path is set to a single path + is set to a path one directory up from the cookbook_path + ChefConfig::Config[:cache_path] + when chef is running in local mode + and config_dir is /a/b/c/ + cache_path is /a/b/c/local-mode-cache + and config_dir is /a/b/c + cache_path is /a/b/c/local-mode-cache + when /var/chef does not exist and /var is accessible + defaults to /var/chef + when /var/chef exists and is not accessible + defaults to $HOME/.chef + and target mode is enabled + cache path defaults to $HOME/.chef with the target host name + when /var/chef does not exist and /var is not accessible + defaults to $HOME/.chef + when /var/chef exists and is accessible + defaults to /var/chef + and target mode is enabled + cache path includes the target host name ChefConfig::Config[:user_home] should set when HOME is provided falls back to the current working directory when HOME and USERPROFILE is not set ChefConfig::Config[:internal_locale] when the result includes 'en_*.UTF-8' returns an English UTF-8 locale - when the result includes 'en.UTF-8' + when the result includes 'en_US.UTF-8' returns an English UTF-8 locale when the result includes 'en_*.utf8' returns an English UTF-8 locale + when the result does not include 'en_*.UTF-8' + should fall back to C locale when the result includes 'C.UTF-8' returns an English UTF-8 locale + on error + should default to 'en_US.UTF-8' when the result includes 'en_US.utf8' returns an English UTF-8 locale - when the result includes 'en_US.UTF-8' + when the result includes 'en.UTF-8' returns an English UTF-8 locale - on error - should default to 'en_US.UTF-8' - when the result does not include 'en_*.UTF-8' - should fall back to C locale - ChefConfig::Config[:user_valid_regex] - on a platform that is not Windows - allows one letter usernames - ChefConfig::Config[:event_handlers] - should be able to add custom handlers - sets a event_handlers to an empty array by default - #var_chef_path - when forced to windows - etc_chef_dir is C:\chef - var_chef_dir is C:\chef - var_root_dir is C:\ + +ChefConfig.fips? + on *nix + fips file does not contain 1 + returns false + fips file is not present + returns false + fips file is present and contains 1 + returns true + +ChefConfig::PathHelper + validate_path + on windows + Adds the \\?\ prefix if the path exceeds MAX_LENGTH and does not have it + returns the path if the path passes the tests + does not raise an error if everything looks great + raises an error if the path has invalid characters + all_homes on unix - etc_chef_dir is /etc/chef - var_root_dir is /var - var_chef_dir is /var/chef - when forced to unix - etc_chef_dir is /etc/chef - var_root_dir is /var - var_chef_dir is /var/chef - parsing arbitrary config from the CLI - when given an integer value - converts to a numeric type and applies the config option - when given spaces between `key = value` - handles the extra spaces and applies the config option - when given a boolean - converts to a boolean type and applies the config option - when given a blank value - sets the value to nil - when no arbitrary config is given - succeeds - when given a simple string option - applies the string option - expand relative paths - when given cookbook_path - expanded cookbook_path - when passes multiple cookbook_paths in config options - expanded paths - when passes multiple config options - expanded paths - when given input that is not in key=value form - raises UnparsableConfigOption + when HOME is not set + returns an empty array + on unix + cleanpath removes extra slashes alone + cleanpath changes backslashes into slashes and leaves slashes alone + path_separator is / + cleanpath does not remove leading double backslash + platform-specific #join behavior + joins components that don't end in separators + joins components when some end and start with separators + joins components when some end with separators + common functionality + join + joins starting with '' resolve to absolute paths + joins ending with '' add a / to the end + dirname + dirname('/a/b/c') is '/a/b' + dirname('abc') is '.' + dirname('/') is '/' + dirname('a/b/c/') is 'a/b' + dirname('a/b/c') is 'a/b' + forcing windows/non-windows + forcing unix + cleanpath changes backslashes into slashes and leaves slashes alone + cleanpath removes extra slashes alone + cleanpath does not remove leading double backslash + path_separator is / + platform-specific #join behavior + joins components when some end with separators + joins components when some end and start with separators + joins components that don't end in separators + forcing windows + cleanpath does not remove leading double backslash + cleanpath changes slashes into backslashes and leaves backslashes alone + path_separator is \ + platform-specific #join behavior + joins components that don't end in separators + joins components when some end and start with separators + joins components on Windows when some end with unix separators + joins components when some end with separators + canonical_path + not on windows + returns a canonical path + paths_eql? + returns true if the paths are the same + returns false if the paths are different + escape_glob + escapes characters reserved by glob + when given more than one argument + joins, cleanpaths, and escapes characters reserved by glob + windows_max_length_exceeded? + returns false if the path is over 259 characters but uses the \\?\ prefix + returns true if the path is too long (259 + NUL) for the API + returns false if the path is not too long (259 + NUL) for the standard API + escape_glob_dir + escapes characters reserved by glob without using backslashes for path separators + when given more than one argument + joins, cleanpaths, and escapes characters reserved by glob + printable? + returns true if the string contains no non-printable characters + returns false if the string contains a non-printable character + returns true when given japanese unicode + returns false if the string contains a newline or tab + returns true when given 'abc' in unicode -Finished in 0.28486 seconds (files took 0.68208 seconds to load) +Finished in 0.41877 seconds (files took 0.37947 seconds to load) 237 examples, 0 failures -Randomized with seed 24360 +Randomized with seed 5592 /usr/bin/ruby3.3 /usr/bin/gem2deb-test-runner @@ -1469,227 +1505,207 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 313 +Randomized with seed 24297 ChefConfig.fips? on *nix - fips file is not present - returns false fips file does not contain 1 returns false + fips file is not present + returns false fips file is present and contains 1 returns true ChefConfig::Config On Unix - ChefConfig::Config[:user_valid_regex] - on a platform that is not Windows - allows one letter usernames ChefConfig::Config[:user_home] should set when HOME is provided falls back to the current working directory when HOME and USERPROFILE is not set - ChefConfig::Config[:event_handlers] - sets a event_handlers to an empty array by default - should be able to add custom handlers default values + ChefConfig::Config[:show_download_progress] defaults to false ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags - ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts - ChefConfig::Config[:ssl_ca_path] defaults to nil + ChefConfig::Config[:ssl_ca_file] defaults to nil ChefConfig::Config[:stream_execute_output] defaults to false - ChefConfig::Config[:show_download_progress] defaults to false ChefConfig::Config[:download_progress_interval] defaults to every 10% + ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts ChefConfig::Config[:environment_path] defaults to /var/chef/environments - ChefConfig::Config[:ssl_ca_file] defaults to nil - ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup + ChefConfig::Config[:ssl_ca_path] defaults to nil + ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer + ChefConfig::Config[:repo_mode] + when local mode is enabled + defaults to 'hosted_everything' + and osc_compat is enabled + defaults to 'everything' + when local mode is not enabled + and the chef_server_url is not multi-tenant + defaults to 'everything' + and the chef_server_url is multi-tenant + defaults to 'hosted_everything' ChefConfig::Config[:chef_server_root] - when chef_server_url isn't set manually - returns the default of 'https://localhost:443' - when chef_server_url matches '..organizations..' but not '../organizations/*' - returns the full URL without any modifications + when chef_server_url matches '../organizations/*' without a trailing slash + returns the full URL without /organizations/* when chef_server_url is a standard URL without the string organization(s) returns the full URL without any modifications + when chef_server_url matches '..organizations..' but not '../organizations/*' + returns the full URL without any modifications + when chef_server_url isn't set manually + returns the default of 'https://localhost:443' when chef_server_url matches '../organizations/*' with a trailing slash returns the full URL without /organizations/* - when chef_server_url matches '../organizations/*' without a trailing slash - returns the full URL without /organizations/* - ChefConfig::Config[:client_key] - sets the default path to the client key - when target mode is enabled - sets the default path to the client key with the target host name - when local mode is enabled - returns nil setting the config dir - when the user's home dir is /home/charlie/ - config_dir is /home/charlie/.chef/ - and chef is running in local mode - config_dir is /home/charlie/.chef/ when the config file is /etc/chef/client.rb config_dir is /etc/chef when config_dir is set to /other/config/dir/ yields the explicit value and chef is running in local mode config_dir is /etc/chef + when the user's home dir is /home/charlie/ + config_dir is /home/charlie/.chef/ + and chef is running in local mode + config_dir is /home/charlie/.chef/ when the config file is given with a relative path does not set derived paths at FS root expands the path when determining config_dir + ChefConfig::Config[:client_key] + sets the default path to the client key + when local mode is enabled + returns nil + when target mode is enabled + sets the default path to the client key with the target host name ChefConfig::Config[:chef_repo_path] - when cookbook_path is set to a single path - is set to a path one directory up from the cookbook_path when cookbook_path is not set but cookbook_artifact_path is set is set to a path one directory up from the cookbook_artifact_path - when cookbook_path is not set - is set to the cache_path when cookbook_path is set to multiple paths is set to an Array of paths one directory up from the cookbook_paths + when cookbook_path is set to a single path + is set to a path one directory up from the cookbook_path + when cookbook_path is not set + is set to the cache_path ChefConfig::Config[:fips] returns false when no environment is set and not enabled on system + when ENV['CHEF_FIPS'] is empty + returns false when fips is enabled on system returns true when ENV['CHEF_FIPS'] is set returns true - when ENV['CHEF_FIPS'] is empty - returns false - ChefConfig::Config[:repo_mode] - when local mode is not enabled - and the chef_server_url is not multi-tenant - defaults to 'everything' - and the chef_server_url is multi-tenant - defaults to 'hosted_everything' - when local mode is enabled - defaults to 'hosted_everything' - and osc_compat is enabled - defaults to 'everything' ChefConfig::Config[:cache_path] when /var/chef does not exist and /var is not accessible defaults to $HOME/.chef - when /var/chef does not exist and /var is accessible - defaults to /var/chef - when /var/chef exists and is accessible - defaults to /var/chef + when /var/chef exists and is not accessible + defaults to $HOME/.chef and target mode is enabled - cache path includes the target host name + cache path defaults to $HOME/.chef with the target host name when chef is running in local mode and config_dir is /a/b/c/ cache_path is /a/b/c/local-mode-cache and config_dir is /a/b/c cache_path is /a/b/c/local-mode-cache - when /var/chef exists and is not accessible - defaults to $HOME/.chef + when /var/chef does not exist and /var is accessible + defaults to /var/chef + when /var/chef exists and is accessible + defaults to /var/chef and target mode is enabled - cache path defaults to $HOME/.chef with the target host name - ChefConfig::Config[:encrypted_data_bag_secret] - /etc/chef/encrypted_data_bag_secret exists - sets the value to /etc/chef/encrypted_data_bag_secret - /etc/chef/encrypted_data_bag_secret does not exist - sets the value to nil + cache path includes the target host name + class method: platform_specific_path + should return given path on non-windows systems + class method: windows_installation_drive + should return nil on a non-windows system + ChefConfig::Config[:event_handlers] + should be able to add custom handlers + sets a event_handlers to an empty array by default + ChefConfig::Config[:user_valid_regex] + on a platform that is not Windows + allows one letter usernames ChefConfig::Config[:internal_locale] when the result includes 'en.UTF-8' returns an English UTF-8 locale - when the result does not include 'en_*.UTF-8' - should fall back to C locale - when the result includes 'en_*.UTF-8' - returns an English UTF-8 locale - when the result includes 'en_*.utf8' - returns an English UTF-8 locale when the result includes 'en_US.UTF-8' returns an English UTF-8 locale - when the result includes 'en_US.utf8' + when the result includes 'en_*.UTF-8' returns an English UTF-8 locale on error should default to 'en_US.UTF-8' + when the result includes 'en_US.utf8' + returns an English UTF-8 locale + when the result includes 'en_*.utf8' + returns an English UTF-8 locale when the result includes 'C.UTF-8' returns an English UTF-8 locale - class method: platform_specific_path - should return given path on non-windows systems - class method: windows_installation_drive - should return nil on a non-windows system - allowing chefdk configuration outside of chefdk - allows arbitrary settings in the chefdk config context - when configuring formatters - configures a formatter with a file output - configures a formatter with a short name - has an empty list of formatters by default + when the result does not include 'en_*.UTF-8' + should fall back to C locale + ChefConfig::Config[:encrypted_data_bag_secret] + /etc/chef/encrypted_data_bag_secret exists + sets the value to /etc/chef/encrypted_data_bag_secret + /etc/chef/encrypted_data_bag_secret does not exist + sets the value to nil + export_proxies + no_proxy is set + exports ENV['no_proxy'] + when proxy_pass and proxy_user are passed as empty strings + does not populate the user or password + when all the users and passwords are set but no proxies are set + does not export any proxy settings + when https_proxy, proxy_pass and proxy_user are set + exports ENV['https_proxy'] + when the proxy is provided without a scheme + automatically adds the scheme to the proxy url + when proxy_pass and proxy_user are not provided + does not populate the user or password + when ftp_proxy, proxy_pass and proxy_user are set + exports ENV['ftp_proxy'] + when http_proxy, proxy_pass and proxy_user are set + exports ENV['http_proxy'] + when nothing is set + does not export any proxy settings + validation_client_name + with a normal server URL + sets the validation client to myorg-validator + with an unusual server URL + sets the validation client to chef-validator On Windows + ChefConfig::Config[:user_home] + should set when HOME is provided + falls back to the current working directory when HOME and USERPROFILE is not set + class method: windows_installation_drive + should return D: on a windows system + ChefConfig::Config[:event_handlers] + should be able to add custom handlers + sets a event_handlers to an empty array by default ChefConfig::Config[:internal_locale] - when the result includes 'en_US.utf8' + when the result includes 'en_US.UTF-8' returns an English UTF-8 locale - on error - should default to 'en_US.UTF-8' - when the result includes 'en.UTF-8' + when the result includes 'en_US.utf8' returns an English UTF-8 locale when the result includes 'C.UTF-8' returns an English UTF-8 locale + when the result includes 'en.UTF-8' + returns an English UTF-8 locale when the result includes 'en_*.utf8' returns an English UTF-8 locale - when the result does not include 'en_*.UTF-8' - should fall back to C locale when the result includes 'en_*.UTF-8' returns an English UTF-8 locale - when the result includes 'en_US.UTF-8' - returns an English UTF-8 locale + when the result does not include 'en_*.UTF-8' + should fall back to C locale + on error + should default to 'en_US.UTF-8' ChefConfig::Config[:user_valid_regex] on a platform that is not Windows allows one letter usernames - ChefConfig::Config[:user_home] - falls back to the current working directory when HOME and USERPROFILE is not set - should set when HOME is provided - class method: windows_installation_drive - should return D: on a windows system default values - ChefConfig::Config[:ssl_ca_path] defaults to nil - ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags + ChefConfig::Config[:download_progress_interval] defaults to every 10% ChefConfig::Config[:stream_execute_output] defaults to false + ChefConfig::Config[:ssl_ca_path] defaults to nil ChefConfig::Config[:show_download_progress] defaults to false + ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup ChefConfig::Config[:cookbook_artifact_path] defaults to /var/chef/cookbook_artifacts ChefConfig::Config[:environment_path] defaults to /var/chef/environments ChefConfig::Config[:ssl_verify_mode] defaults to :verify_peer - ChefConfig::Config[:file_backup_path] defaults to /var/chef/backup - ChefConfig::Config[:download_progress_interval] defaults to every 10% - ChefConfig::Config[:chef_server_root] - when chef_server_url matches '../organizations/*' without a trailing slash - returns the full URL without /organizations/* - when chef_server_url isn't set manually - returns the default of 'https://localhost:443' - when chef_server_url is a standard URL without the string organization(s) - returns the full URL without any modifications - when chef_server_url matches '..organizations..' but not '../organizations/*' - returns the full URL without any modifications - when chef_server_url matches '../organizations/*' with a trailing slash - returns the full URL without /organizations/* - finding the windows embedded dir - doesn't error when not in an omnibus install - sets the ssl_ca_cert path if the cert file is available - finds the embedded dir in a custom install location - finds the embedded dir in the default location - setting the config dir - when the config file is given with a relative path - does not set derived paths at FS root - expands the path when determining config_dir - when the config file is /etc/chef/client.rb - config_dir is /etc/chef - when config_dir is set to /other/config/dir/ - yields the explicit value - and chef is running in local mode - config_dir is /etc/chef - when the user's home dir is /home/charlie/ - config_dir is /home/charlie/.chef/ - and chef is running in local mode - config_dir is /home/charlie/.chef/ - when the user's home dir is windows specific - config_dir is with backslashes - and chef is running in local mode - config_dir is with backslashes + ChefConfig::Config[:data_bag_path] defaults to /var/chef/data_bags ChefConfig::Config[:cache_path] when /var/chef does not exist and /var is not accessible defaults to $HOME/.chef - when chef is running in local mode - and config_dir is /a/b/c/ - cache_path is /a/b/c/local-mode-cache - and config_dir is /a/b/c - cache_path is /a/b/c/local-mode-cache - when /var/chef does not exist and /var is accessible - defaults to /var/chef when /var/chef exists and is accessible defaults to /var/chef and target mode is enabled @@ -1698,31 +1714,72 @@ defaults to $HOME/.chef and target mode is enabled cache path defaults to $HOME/.chef with the target host name + when /var/chef does not exist and /var is accessible + defaults to /var/chef + when chef is running in local mode + and config_dir is /a/b/c + cache_path is /a/b/c/local-mode-cache + and config_dir is /a/b/c/ + cache_path is /a/b/c/local-mode-cache + ChefConfig::Config[:chef_repo_path] + when cookbook_path is set to multiple paths + is set to an Array of paths one directory up from the cookbook_paths + when cookbook_path is not set + is set to the cache_path + when cookbook_path is set to a single path + is set to a path one directory up from the cookbook_path + when cookbook_path is not set but cookbook_artifact_path is set + is set to a path one directory up from the cookbook_artifact_path ChefConfig::Config[:repo_mode] when local mode is not enabled - and the chef_server_url is not multi-tenant - defaults to 'everything' and the chef_server_url is multi-tenant defaults to 'hosted_everything' + and the chef_server_url is not multi-tenant + defaults to 'everything' when local mode is enabled defaults to 'hosted_everything' and osc_compat is enabled defaults to 'everything' + setting the config dir + when the config file is given with a relative path + does not set derived paths at FS root + expands the path when determining config_dir + when the user's home dir is /home/charlie/ + config_dir is /home/charlie/.chef/ + and chef is running in local mode + config_dir is /home/charlie/.chef/ + when the user's home dir is windows specific + config_dir is with backslashes + and chef is running in local mode + config_dir is with backslashes + when the config file is /etc/chef/client.rb + config_dir is /etc/chef + when config_dir is set to /other/config/dir/ + yields the explicit value + and chef is running in local mode + config_dir is /etc/chef ChefConfig::Config[:client_key] sets the default path to the client key when local mode is enabled returns nil when target mode is enabled sets the default path to the client key with the target host name - ChefConfig::Config[:chef_repo_path] - when cookbook_path is set to a single path - is set to a path one directory up from the cookbook_path - when cookbook_path is set to multiple paths - is set to an Array of paths one directory up from the cookbook_paths - when cookbook_path is not set but cookbook_artifact_path is set - is set to a path one directory up from the cookbook_artifact_path - when cookbook_path is not set - is set to the cache_path + finding the windows embedded dir + finds the embedded dir in a custom install location + doesn't error when not in an omnibus install + finds the embedded dir in the default location + sets the ssl_ca_cert path if the cert file is available + ChefConfig::Config[:chef_server_root] + when chef_server_url isn't set manually + returns the default of 'https://localhost:443' + when chef_server_url is a standard URL without the string organization(s) + returns the full URL without any modifications + when chef_server_url matches '../organizations/*' with a trailing slash + returns the full URL without /organizations/* + when chef_server_url matches '..organizations..' but not '../organizations/*' + returns the full URL without any modifications + when chef_server_url matches '../organizations/*' without a trailing slash + returns the full URL without /organizations/* ChefConfig::Config[:fips] returns false when no environment is set and not enabled on system when ENV['CHEF_FIPS'] is set @@ -1737,196 +1794,175 @@ /etc/chef/encrypted_data_bag_secret exists sets the value to /etc/chef/encrypted_data_bag_secret class method: platform_specific_path - a windows system with chef installed on D: drive - should return a windows path rooted in D: a windows system with chef installed on C: drive should return a windows path rooted in C: - ChefConfig::Config[:event_handlers] - should be able to add custom handlers - sets a event_handlers to an empty array by default - parsing arbitrary config from the CLI - expand relative paths - when passes multiple config options - expanded paths - when given cookbook_path - expanded cookbook_path - when passes multiple cookbook_paths in config options - expanded paths - when no arbitrary config is given - succeeds - when given a boolean - converts to a boolean type and applies the config option - when given an integer value - converts to a numeric type and applies the config option - when given input that is not in key=value form - raises UnparsableConfigOption - when given a simple string option - applies the string option - when given a blank value - sets the value to nil - when given spaces between `key = value` - handles the extra spaces and applies the config option + a windows system with chef installed on D: drive + should return a windows path rooted in D: data collector URL when using default settings - for Chef Solo legacy mode + for local mode sets the data collector server URL to nil for Chef Client configures the data collector URL as a relative path to the Chef Server URL - for local mode + for Chef Solo legacy mode sets the data collector server URL to nil + allowing chefdk configuration outside of chefdk + allows arbitrary settings in the chefdk config context + config attribute writer: chef_server_url + sets the server url + when the url has a leading space + strips the space from the url when setting + when the url is invalid + raises an exception + when the url is a frozen string + strips the space from the url when setting without raising an error #var_chef_path - when forced to unix - var_chef_dir is /var/chef - etc_chef_dir is /etc/chef - var_root_dir is /var when forced to windows - etc_chef_dir is C:\chef var_chef_dir is C:\chef + etc_chef_dir is C:\chef var_root_dir is C:\ - on unix + when forced to unix + var_root_dir is /var etc_chef_dir is /etc/chef + var_chef_dir is /var/chef + on unix var_root_dir is /var var_chef_dir is /var/chef + etc_chef_dir is /etc/chef proxy_uri when an empty proxy is set by the environment does not fail with URI parse exception - when the proxy is set by the environment - contains the host - contains the port when the config setting is normalized (does not contain the scheme) + contains the port + contains the host + when the proxy is set by the environment contains the host contains the port when no_proxy is set - when no_proxy includes the same domain with a wildcard + when no_proxy is a domain with a dot prefix is expected to eq nil when no_proxy is included on a list with wildcards is expected to eq nil when no_proxy is a domain with no wildcard is expected to eq nil - when no_proxy is included on a list + when no_proxy includes the same domain with a wildcard is expected to eq nil - when no_proxy is a domain with a dot prefix + when no_proxy is included on a list is expected to eq nil when no_proxy is the exact host is expected to eq nil Treating deprecation warnings as errors - outside of our test environment - defaults to NOT treating deprecation warnings as errors when using our default RSpec configuration + sets CHEF_TREAT_DEPRECATION_WARNINGS_AS_ERRORS environment variable treats deprecation warnings as errors in child processes when testing defaults to treating deprecation warnings as errors - sets CHEF_TREAT_DEPRECATION_WARNINGS_AS_ERRORS environment variable - validation_client_name - with a normal server URL - sets the validation client to myorg-validator - with an unusual server URL - sets the validation client to chef-validator - export_proxies - when proxy_pass and proxy_user are passed as empty strings - does not populate the user or password - when http_proxy, proxy_pass and proxy_user are set - exports ENV['http_proxy'] - when https_proxy, proxy_pass and proxy_user are set - exports ENV['https_proxy'] - when ftp_proxy, proxy_pass and proxy_user are set - exports ENV['ftp_proxy'] - when nothing is set - does not export any proxy settings - when proxy_pass and proxy_user are not provided - does not populate the user or password - when all the users and passwords are set but no proxies are set - does not export any proxy settings - when the proxy is provided without a scheme - automatically adds the scheme to the proxy url - no_proxy is set - exports ENV['no_proxy'] - config attribute writer: chef_server_url - sets the server url - when the url is a frozen string - strips the space from the url when setting without raising an error - when the url is invalid - raises an exception - when the url has a leading space - strips the space from the url when setting + outside of our test environment + defaults to NOT treating deprecation warnings as errors + when configuring formatters + configures a formatter with a short name + configures a formatter with a file output + has an empty list of formatters by default + parsing arbitrary config from the CLI + when given an integer value + converts to a numeric type and applies the config option + expand relative paths + when given cookbook_path + expanded cookbook_path + when passes multiple cookbook_paths in config options + expanded paths + when passes multiple config options + expanded paths + when given input that is not in key=value form + raises UnparsableConfigOption + when given a blank value + sets the value to nil + when given spaces between `key = value` + handles the extra spaces and applies the config option + when no arbitrary config is given + succeeds + when given a boolean + converts to a boolean type and applies the config option + when given a simple string option + applies the string option ChefConfig::PathHelper + all_homes + on unix + when HOME is not set + returns an empty array validate_path on windows + raises an error if the path has invalid characters does not raise an error if everything looks great returns the path if the path passes the tests Adds the \\?\ prefix if the path exceeds MAX_LENGTH and does not have it - raises an error if the path has invalid characters + printable? + returns true when given japanese unicode + returns false if the string contains a non-printable character + returns false if the string contains a newline or tab + returns true when given 'abc' in unicode + returns true if the string contains no non-printable characters + paths_eql? + returns false if the paths are different + returns true if the paths are the same + canonical_path + not on windows + returns a canonical path on unix - cleanpath removes extra slashes alone - cleanpath does not remove leading double backslash - path_separator is / cleanpath changes backslashes into slashes and leaves slashes alone + path_separator is / + cleanpath does not remove leading double backslash + cleanpath removes extra slashes alone platform-specific #join behavior - joins components when some end with separators - joins components that don't end in separators joins components when some end and start with separators + joins components that don't end in separators + joins components when some end with separators + common functionality + join + joins starting with '' resolve to absolute paths + joins ending with '' add a / to the end + dirname + dirname('a/b/c/') is 'a/b' + dirname('/') is '/' + dirname('abc') is '.' + dirname('/a/b/c') is '/a/b' + dirname('a/b/c') is 'a/b' + windows_max_length_exceeded? + returns true if the path is too long (259 + NUL) for the API + returns false if the path is not too long (259 + NUL) for the standard API + returns false if the path is over 259 characters but uses the \\?\ prefix forcing windows/non-windows forcing unix + cleanpath does not remove leading double backslash cleanpath changes backslashes into slashes and leaves slashes alone cleanpath removes extra slashes alone - cleanpath does not remove leading double backslash path_separator is / platform-specific #join behavior joins components that don't end in separators - joins components when some end and start with separators joins components when some end with separators + joins components when some end and start with separators forcing windows - cleanpath does not remove leading double backslash - path_separator is \ cleanpath changes slashes into backslashes and leaves backslashes alone + path_separator is \ + cleanpath does not remove leading double backslash platform-specific #join behavior - joins components on Windows when some end with unix separators joins components that don't end in separators - joins components when some end with separators joins components when some end and start with separators - common functionality - dirname - dirname('abc') is '.' - dirname('/a/b/c') is '/a/b' - dirname('a/b/c/') is 'a/b' - dirname('/') is '/' - dirname('a/b/c') is 'a/b' - join - joins ending with '' add a / to the end - joins starting with '' resolve to absolute paths - canonical_path - not on windows - returns a canonical path + joins components on Windows when some end with unix separators + joins components when some end with separators escape_glob_dir escapes characters reserved by glob without using backslashes for path separators when given more than one argument joins, cleanpaths, and escapes characters reserved by glob - all_homes - on unix - when HOME is not set - returns an empty array - paths_eql? - returns false if the paths are different - returns true if the paths are the same - windows_max_length_exceeded? - returns false if the path is over 259 characters but uses the \\?\ prefix - returns false if the path is not too long (259 + NUL) for the standard API - returns true if the path is too long (259 + NUL) for the API escape_glob escapes characters reserved by glob when given more than one argument joins, cleanpaths, and escapes characters reserved by glob - printable? - returns true if the string contains no non-printable characters - returns true when given 'abc' in unicode - returns true when given japanese unicode - returns false if the string contains a non-printable character - returns false if the string contains a newline or tab -Finished in 0.29248 seconds (files took 0.22247 seconds to load) +Finished in 0.45868 seconds (files took 0.40131 seconds to load) 237 examples, 0 failures -Randomized with seed 313 +Randomized with seed 24297 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1958,12 +1994,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/2764355/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2764355/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/376841 and its subdirectories -I: Current time: Mon Feb 23 12:13:16 -12 2026 -I: pbuilder-time-stamp: 1771891996 +I: removing directory /srv/workspace/pbuilder/2764355 and its subdirectories +I: Current time: Wed Jan 22 07:51:37 +14 2025 +I: pbuilder-time-stamp: 1737481897