Diff of the two buildlogs: -- --- b1/build.log 2024-12-23 21:27:54.226635330 +0000 +++ b2/build.log 2024-12-23 21:29:49.717378362 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Dec 23 09:26:19 -12 2024 -I: pbuilder-time-stamp: 1734989179 +I: Current time: Tue Dec 24 11:28:03 +14 2024 +I: pbuilder-time-stamp: 1734989283 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: unpacking ruby-puppet-forge_5.0.3-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/13646/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/30906/tmp/hooks/D01_modify_environment starting +debug: Running on virt32a. +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 Dec 23 21:28 /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/30906/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/30906/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='unstable' - 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]="37" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + 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=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='60cc6c3c42a242b0ba3ef31a6e71dcc7' - 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='13646' - PS1='# ' - PS2='> ' + INVOCATION_ID=43aa994b3a8d4eb78626849146205ba7 + 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=30906 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.nfWiKxIi/pbuilderrc_wQdf --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.nfWiKxIi/b1 --logfile b1/build.log ruby-puppet-forge_5.0.3-1.dsc' - SUDO_GID='110' - SUDO_UID='103' - 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.nfWiKxIi/pbuilderrc_xBHJ --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.nfWiKxIi/b2 --logfile b2/build.log ruby-puppet-forge_5.0.3-1.dsc' + SUDO_GID=113 + SUDO_UID=107 + 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 virt64z 6.1.0-28-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-armmp-lpae #1 SMP Debian 6.1.119-1 (2024-11-22) armv7l GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/13646/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/30906/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -83,7 +115,7 @@ Depends: debhelper-compat (= 13), gem2deb, rake, ruby-faraday (>= 2.0), ruby-faraday-follow-redirects (>= 0.3.0), ruby-minitar, ruby-rspec, ruby-semantic-puppet (>= 0.1.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. -(Reading database ... 19681 files and directories currently installed.) +(Reading database ... 19694 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: @@ -260,10 +292,10 @@ Get: 138 http://deb.debian.org/debian unstable/main armhf ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 139 http://deb.debian.org/debian unstable/main armhf ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 140 http://deb.debian.org/debian unstable/main armhf ruby-semantic-puppet all 1.1.0-1 [15.1 kB] -Fetched 42.0 MB in 9s (4802 kB/s) +Fetched 42.0 MB in 1s (34.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.12-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 ... 19681 files and directories currently installed.) +(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 ... 19694 files and directories currently installed.) Preparing to unpack .../libpython3.12-minimal_3.12.8-3_armhf.deb ... Unpacking libpython3.12-minimal:armhf (3.12.8-3) ... Selecting previously unselected package libexpat1:armhf. @@ -276,7 +308,7 @@ Setting up libexpat1:armhf (2.6.4-1) ... Setting up python3.12-minimal (3.12.8-3) ... Selecting previously unselected package python3-minimal. -(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 ... 20001 files and directories currently installed.) +(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 ... 20014 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_armhf.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. @@ -338,7 +370,7 @@ Unpacking libpython3-stdlib:armhf (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. -(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 ... 21064 files and directories currently installed.) +(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 ... 21077 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_armhf.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package sensible-utils. @@ -731,8 +763,8 @@ Setting up tzdata (2024b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Mon Dec 23 21:27:19 UTC 2024. -Universal Time is now: Mon Dec 23 21:27:19 UTC 2024. +Local time is now: Mon Dec 23 21:29:08 UTC 2024. +Universal Time is now: Mon Dec 23 21:29:08 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -856,7 +888,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-puppet-forge-5.0.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-puppet-forge_5.0.3-1_source.changes +I: user script /srv/workspace/pbuilder/30906/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/30906/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-puppet-forge-5.0.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-puppet-forge_5.0.3-1_source.changes dpkg-buildpackage: info: source package ruby-puppet-forge dpkg-buildpackage: info: source version 5.0.3-1 dpkg-buildpackage: info: source distribution unstable @@ -934,194 +970,162 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 1439 +Randomized with seed 29453 -PuppetForge::V3::Base::PaginatedCollection - knows the size of the entire collection - contains only a subset of the entire collection - exposes the pagination metadata - maps to a single page of the collection - enables page navigation - #all returns self for backwards compatibility. - exposes previous_url and next_url - #unpaginated - provides an iterator over the entire collection - provides a full iterator regardless of which page it's started on - -PuppetForge::Tar - returns an instance of minitar +PuppetForge::Unpacker + returns the appropriate categories of the contents of the tar file from the tar implementation + attempts to untar file to temporary location + attempts to set the ownership of a target dir to a source dir's owner -PuppetForge::V3::Module - ::find - can find modules that exist from a stateless call - can find modules that exist - raises exception for non-existent modules - #owner - grants access to module attributes without an API call - transparently makes API calls for other attributes - exposes the related module as a property - #releases - knows the size of the collection - loads releases lazily - grants access to release attributes without an API call - exposes the related releases as a property - #current_release - exposes the current_release as a property - grants access to release attributes without an API call - instance properies - are easily accessible +PuppetForge::V3::Release + with stubbed connection + #metadata + is lazy and repeatable + ::find + can find releases that exist + raises Faraday::ResourceNotFound for non-existent releases + #module + exposes the related module as a property + transparently makes API calls for other attributes + grants access to module attributes without an API call + #upload + when there is no auth token provided + raises PuppetForge::ReleaseForbidden + when the module is not valid + raises PuppetForge::ReleaseBadRequest + when the tarball does not exist + raises PuppetForge::FileNotFound + #verify + file_sha256 is available + only verifies sha-256 checksum + file_sha256 is not available + only verfies the md5 checksum + when allow_md5=false + file_sha256 is not available + raises an appropriate error + instance properies + are easily accessible + #download_url + handles an API response that does not include a scheme and host + handles an API response that includes a scheme and host + when PuppetForge.host has a path prefix + includes path prefix in download url + #download + downloads the file to the specified location + when response is 403 + raises PuppetForge::ReleaseForbidden + when connection fails + re-raises original error + connection management + setting proxy value after a connection is created + should reset connection + setting authorization value after a connection is created + should reset connection -PuppetForge::LazyAccessors - does not call methods to #inspect - local attributes - allow access to local attributes - allow access to local standalone methods - provide local attributes setters - provide local attributes predicates - allow access to locally satisfiable methods - allow `super` access to shadowed attributes - do not create accessors on the base class itself - unsatisfiable attributes - do not create accessors on the base class itself - raise an exception when accessing an unknown attribute - remote attributes - provide remote attributes predicates - provide remote attributes setters - allow access to remote attributes - allow access to locally unsatisfiable methods - allow multiple instances to access remote attributes - allow `super` access to shadowed remote attributes - do not create accessors on the base class itself +PuppetForge::Util + version_valid? + returns true for a valid version + returns false for an invalid version PuppetForge::V3::Base + ::new_collection + should handle responses with no results + should handle responses with no pagination info connection management - setting authorization value after a connection is created - should reset connection setting proxy value after a connection is created should reset connection - ::new_collection - should handle responses with no pagination info - should handle responses with no results + setting authorization value after a connection is created + should reset connection the host url setting - without a path prefix - should work - caches responses with a path prefix caches responses should work + without a path prefix + caches responses + should work -PuppetForge::LazyRelations - .lazy_collection - is expected to be a kind of PuppetForge::V3::Thing - does not call methods to #inspect - null relations - return an empty list - unsatisfiable attributes - raise an exception when accessing an unknown attribute - remote relations - allow chained lookups of lazy relations - local attributes - provide local attributes predicates - allow `super` access to shadowed attributes - provide local attributes setters - allow access to local attributes - allow access to local standalone methods - allow access to locally satisfiable methods - remote attributes - provide remote attributes setters - allow access to locally unsatisfiable methods - allow `super` access to shadowed remote attributes - provide remote attributes predicates - allow multiple instances to access remote attributes - allow access to remote attributes - .lazy - is expected to be a kind of PuppetForge::V3::Thing - does not call methods to #inspect - remote relations - allow chained lookups of lazy relations - null relations - do not return new instances - remote attributes - provide remote attributes predicates - allow `super` access to shadowed remote attributes - allow access to locally unsatisfiable methods - allow access to remote attributes - provide remote attributes setters - allow multiple instances to access remote attributes - local attributes - allow access to local standalone methods - allow access to local attributes - provide local attributes predicates - provide local attributes setters - allow `super` access to shadowed attributes - allow access to locally satisfiable methods - unsatisfiable attributes - raise an exception when accessing an unknown attribute - -PuppetForge::Unpacker - attempts to set the ownership of a target dir to a source dir's owner - attempts to untar file to temporary location - returns the appropriate categories of the contents of the tar file from the tar implementation - -PuppetForge::Util - version_valid? - returns false for an invalid version - returns true for a valid version - -PuppetForge - host attribute - should coerce non-String values if possible - should add a trailing slash if not present - -PuppetForge::Tar::Mini - unpacks a tar file - does not allow a directory to be written outside the destination directory - packs a tar file - does not allow a file to be written outside the destination directory - returns filenames in a tar separated into correct categories - does not allow an absolute path - -PuppetForge::Connection::ConnectionFailure - includes the proxy host in the error message when set - logs for timeout errors - includes the base URL in the error message +PuppetForge::Tar + returns an instance of minitar PuppetForge::V3::Metadata + #update + with a valid source + which is not a URL + does not predict a default project_page + does not predict a default issues_url + which is a GitHub URL + with a scheme + predicts a default issues_url + predicts a default project_page + without a scheme + predicts a default project_page + predicts a default issues_url + which is not a GitHub URL + does not predict a default project_page + does not predict a default issues_url + with an invalid version + raises an exception + with a invalid version range + raises an exception + with an invalid name + (missing module name) + raises an exception + (invalid namespace) + raises an exception + (short module name) + raises an exception + (module name starts with a number) + raises an exception + (missing namespace) + raises an exception + (non-alphanumeric module name) + raises an exception + with a invalid dependency name + raises an exception + with a valid name + extracts a module name from the name field + extracts the author name from the name field + and existing author + avoids overwriting the existing author + with a valid name and author + use the author name from the author field + and preexisting author + avoids overwriting the existing author + #release_name + returns nil in the absence of a version + returns a hyphenated string containing module name and version + is unaffected by author name + returns nil in the absence of a module name #dashed_name - returns a hyphenated string containing namespace and module name properly handles slash-separated names - is unaffected by author name returns nil in the absence of a module name + returns a hyphenated string containing namespace and module name + is unaffected by author name property lookups #license responds to the property - #description + #author responds to the property - #issues_url + #description responds to the property - #dependencies + #project_page responds to the property #dashed_name responds to the property - #project_page - responds to the property - #author + #release_name responds to the property #version responds to the property #source responds to the property - #summary + #dependencies responds to the property - #release_name + #summary responds to the property #name responds to the property - #release_name - returns a hyphenated string containing module name and version - returns nil in the absence of a version - returns nil in the absence of a module name - is unaffected by author name + #issues_url + responds to the property #to_hash contains the default set of keys ['license'] @@ -1129,125 +1133,157 @@ ['dependencies'] defaults to an empty set when updated with non-default data - overrides the defaults contains unanticipated values - #update - with an invalid name - (invalid namespace) - raises an exception - (non-alphanumeric module name) - raises an exception - (missing namespace) - raises an exception - (missing module name) - raises an exception - (short module name) - raises an exception - (module name starts with a number) - raises an exception - with a valid name - extracts the author name from the name field - extracts a module name from the name field - and existing author - avoids overwriting the existing author - with a valid name and author - use the author name from the author field - and preexisting author - avoids overwriting the existing author - with a valid source - which is a GitHub URL - with a scheme - predicts a default project_page - predicts a default issues_url - without a scheme - predicts a default issues_url - predicts a default project_page - which is not a URL - does not predict a default project_page - does not predict a default issues_url - which is not a GitHub URL - does not predict a default issues_url - does not predict a default project_page - with an invalid version - raises an exception - with a invalid version range - raises an exception - with a invalid dependency name - raises an exception + overrides the defaults -PuppetForge::V3::Release - with stubbed connection - #upload - when the tarball does not exist - raises PuppetForge::FileNotFound - when the module is not valid - raises PuppetForge::ReleaseBadRequest - when there is no auth token provided - raises PuppetForge::ReleaseForbidden - #verify - file_sha256 is not available - only verfies the md5 checksum - when allow_md5=false - file_sha256 is not available - raises an appropriate error - file_sha256 is available - only verifies sha-256 checksum - #download - downloads the file to the specified location - when connection fails - re-raises original error - when response is 403 - raises PuppetForge::ReleaseForbidden - instance properies - are easily accessible - #download_url - handles an API response that includes a scheme and host - handles an API response that does not include a scheme and host - when PuppetForge.host has a path prefix - includes path prefix in download url - ::find - can find releases that exist - raises Faraday::ResourceNotFound for non-existent releases - #metadata - is lazy and repeatable - #module - exposes the related module as a property - transparently makes API calls for other attributes - grants access to module attributes without an API call - connection management - setting authorization value after a connection is created - should reset connection - setting proxy value after a connection is created - should reset connection +PuppetForge + host attribute + should add a trailing slash if not present + should coerce non-String values if possible + +PuppetForge::LazyRelations + .lazy + does not call methods to #inspect + is expected to be a kind of PuppetForge::V3::Thing + local attributes + allow access to local attributes + allow `super` access to shadowed attributes + provide local attributes setters + provide local attributes predicates + allow access to local standalone methods + allow access to locally satisfiable methods + unsatisfiable attributes + raise an exception when accessing an unknown attribute + null relations + do not return new instances + remote attributes + allow access to remote attributes + provide remote attributes predicates + allow access to locally unsatisfiable methods + allow `super` access to shadowed remote attributes + allow multiple instances to access remote attributes + provide remote attributes setters + remote relations + allow chained lookups of lazy relations + .lazy_collection + does not call methods to #inspect + is expected to be a kind of PuppetForge::V3::Thing + remote attributes + allow multiple instances to access remote attributes + provide remote attributes setters + allow `super` access to shadowed remote attributes + provide remote attributes predicates + allow access to remote attributes + allow access to locally unsatisfiable methods + null relations + return an empty list + unsatisfiable attributes + raise an exception when accessing an unknown attribute + remote relations + allow chained lookups of lazy relations + local attributes + allow `super` access to shadowed attributes + allow access to locally satisfiable methods + allow access to local attributes + allow access to local standalone methods + provide local attributes predicates + provide local attributes setters + +PuppetForge::V3::Base::PaginatedCollection + contains only a subset of the entire collection + enables page navigation + exposes the pagination metadata + exposes previous_url and next_url + #all returns self for backwards compatibility. + maps to a single page of the collection + knows the size of the entire collection + #unpaginated + provides an iterator over the entire collection + provides a full iterator regardless of which page it's started on + +PuppetForge::LazyAccessors + does not call methods to #inspect + local attributes + provide local attributes predicates + provide local attributes setters + allow access to locally satisfiable methods + allow `super` access to shadowed attributes + allow access to local standalone methods + do not create accessors on the base class itself + allow access to local attributes + remote attributes + provide remote attributes setters + allow access to remote attributes + allow multiple instances to access remote attributes + provide remote attributes predicates + allow `super` access to shadowed remote attributes + allow access to locally unsatisfiable methods + do not create accessors on the base class itself + unsatisfiable attributes + do not create accessors on the base class itself + raise an exception when accessing an unknown attribute + +PuppetForge::V3::Module + #releases + loads releases lazily + knows the size of the collection + exposes the related releases as a property + grants access to release attributes without an API call + instance properies + are easily accessible + #current_release + exposes the current_release as a property + grants access to release attributes without an API call + #owner + exposes the related module as a property + grants access to module attributes without an API call + transparently makes API calls for other attributes + ::find + can find modules that exist from a stateless call + can find modules that exist + raises exception for non-existent modules + +PuppetForge::Connection::ConnectionFailure + logs for timeout errors + includes the base URL in the error message + includes the proxy host in the error message when set PuppetForge::LruCache - provides a #clear method - provides a #get method - raises an error if max_size is not a positive integer - defaults to a max_size of 30 - allows max_size to be set via the max_size parameter provides a #put method + provides a #clear method creates a new instance + raises an error if max_size is not a positive integer creates a cache key from a list of strings + allows max_size to be set via the max_size parameter + defaults to a max_size of 30 + provides a #get method + #put + removes the least recently used item if the cache is full + adds the value to the cache + adds the key to the front of the LRU list + is thread-safe #clear clears the cache #get - is thread-safe for get calls returns nil if the key is not present in the cache moves the key to the front of the LRU list returns the cached value for the given key - #put - removes the least recently used item if the cache is full - adds the value to the cache - adds the key to the front of the LRU list - is thread-safe + is thread-safe for get calls with environment variables uses the value of the PUPPET_FORGE_MAX_CACHE_SIZE environment variable if present -Finished in 0.85289 seconds (files took 0.78862 seconds to load) +PuppetForge::Tar::Mini + unpacks a tar file + does not allow a directory to be written outside the destination directory + does not allow an absolute path + packs a tar file + does not allow a file to be written outside the destination directory + returns filenames in a tar separated into correct categories + +Finished in 1.06 seconds (files took 0.98572 seconds to load) 184 examples, 0 failures -Randomized with seed 1439 +Randomized with seed 29453 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -1277,12 +1313,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/30906/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/30906/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/13646 and its subdirectories -I: Current time: Mon Dec 23 09:27:50 -12 2024 -I: pbuilder-time-stamp: 1734989270 +I: removing directory /srv/workspace/pbuilder/30906 and its subdirectories +I: Current time: Tue Dec 24 11:29:45 +14 2024 +I: pbuilder-time-stamp: 1734989385