Diff of the two buildlogs: -- --- b1/build.log 2024-04-24 05:44:02.546674039 +0000 +++ b2/build.log 2024-04-24 05:45:06.459951273 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue May 27 00:06:22 -12 2025 -I: pbuilder-time-stamp: 1748347582 +I: Current time: Wed Apr 24 19:44:04 +14 2024 +I: pbuilder-time-stamp: 1713937444 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -31,54 +31,86 @@ dpkg-source: info: applying 0004-Fix-requires-so-that-they-work-inside-autopkgtest.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/18456/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/38622/tmp/hooks/D01_modify_environment starting +debug: Running on ionos2-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Apr 24 05:44 /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/38622/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/38622/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=10 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='7669dddf1c4948e9aa03183f74d392f4' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='18456' - PS1='# ' - PS2='> ' + INVOCATION_ID=49ea0acd2f97433db2d87a2694e80cff + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=38622 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.wVjYWpMi/pbuilderrc_IVxa --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.wVjYWpMi/b1 --logfile b1/build.log ruby-simplecov_0.22.0-1.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://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.wVjYWpMi/pbuilderrc_EjRr --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.wVjYWpMi/b2 --logfile b2/build.log ruby-simplecov_0.22.0-1.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos6-i386 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 26 17:47 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/18456/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Apr 21 07:13 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/38622/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -264,7 +296,7 @@ Get: 136 http://deb.debian.org/debian trixie/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 137 http://deb.debian.org/debian trixie/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 138 http://deb.debian.org/debian trixie/main i386 ruby-simplecov-html all 0.12.3-2 [468 kB] -Fetched 48.9 MB in 1s (79.3 MB/s) +Fetched 48.9 MB in 1s (65.9 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:i386. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19876 files and directories currently installed.) @@ -718,8 +750,8 @@ Setting up tzdata (2024a-1) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue May 27 12:06:44 UTC 2025. -Universal Time is now: Tue May 27 12:06:44 UTC 2025. +Local time is now: Wed Apr 24 05:44:36 UTC 2024. +Universal Time is now: Wed Apr 24 05:44:36 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -846,7 +878,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-simplecov-0.22.0/ && 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-simplecov_0.22.0-1_source.changes +I: user script /srv/workspace/pbuilder/38622/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/38622/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-simplecov-0.22.0/ && 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-simplecov_0.22.0-1_source.changes dpkg-buildpackage: info: source package ruby-simplecov dpkg-buildpackage: info: source version 0.22.0-1 dpkg-buildpackage: info: source distribution unstable @@ -875,13 +911,13 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-simplecov/ -O--buildsystem=ruby dh_ruby --install /build/reproducible-path/ruby-simplecov-0.22.0/debian/ruby-simplecov -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20250527-23431-qvz3wq/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20240424-51974-qsdarv/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash Successfully built RubyGem Name: simplecov Version: 0.22.0 File: simplecov-0.22.0.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-simplecov/usr/share/rubygems-integration/all /tmp/d20250527-23431-qvz3wq/simplecov-0.22.0.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-simplecov/usr/share/rubygems-integration/all /tmp/d20240424-51974-qsdarv/simplecov-0.22.0.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/reproducible-path/ruby-simplecov-0.22.0/debian/ruby-simplecov/usr/share/rubygems-integration/all/gems/simplecov-0.22.0/lib/minitest/simplecov_plugin.rb /build/reproducible-path/ruby-simplecov-0.22.0/debian/ruby-simplecov/usr/share/rubygems-integration/all/gems/simplecov-0.22.0/lib/simplecov.rb @@ -968,411 +1004,364 @@ mv test_projects/rails/rspec_rails/Gemfile.lock test_projects/rails/rspec_rails/.gem2deb.Gemfile.lock /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --exclude-pattern ./spec/default_formatter_spec.rb,./spec/gemspec_spec.rb --format documentation -Randomized with seed 43186 +Randomized with seed 28576 SimpleCov::Result with a (mocked) Coverage.result - with groups set up for all files - has 3 groups - has sample_controller.rb in 'Controllers' group - has user.rb in 'Models' group - and simple formatter being used - returns a formatted string with result.format! - and multi formatter being used - returns an array containing formatted string with result.format! - .from_hash - can consume multiple commands a simple cov result initialized from that - has accurate covered percentages - responds to covered_percent - has accurate least covered file - has files equal to source_files - responds to missed_lines - responds to least_covered_file - responds to covered_lines has 3 filenames - responds to total_lines - has 3 source files responds to covered_strength + responds to covered_lines + has accurate covered percentages + returns an instance of SimpleCov::FileList for source_files and files has accurate covered percent + responds to total_lines + has accurate least covered file + responds to covered_percent + responds to missed_lines + has files equal to source_files responds to covered_percentages - returns an instance of SimpleCov::FileList for source_files and files + has 3 source files + responds to least_covered_file dumped with to_hash is a hash loaded back with from_hash - has the same covered_percent - has 3 source files - has the same covered_percentages has the same timestamp - has the same original_result + has the same covered_percentages has the same command_name - with groups set up that do not match all files - has sample.rb in "Ungrouped" group - returns all groups as instances of SimpleCov::FileList + has the same original_result + has the same covered_percent + has 3 source files + with groups set up for all files + has sample_controller.rb in 'Controllers' group + has user.rb in 'Models' group has 3 groups - has 1 item per group + and simple formatter being used + returns a formatted string with result.format! + and multi formatter being used + returns an array containing formatted string with result.format! + .from_hash + can consume multiple commands with some filters set up - has [80.0, 80.0] covered percentages has 80 covered percent has 2 files in a new simple cov result + has [80.0, 80.0] covered percentages + with groups set up that do not match all files + has sample.rb in "Ungrouped" group + has 3 groups + returns all groups as instances of SimpleCov::FileList + has 1 item per group -SimpleCov::SourceFile - a file where everything is skipped and missed #563 - has 0.0 covered_strength - has no covered or missed lines - has 0.0 covered_percent - a file with if/elsif - branch coverage - covers 3/6 - covers the branch that includes 42 - line coverage - covers 6/9 - file with branches - branch coverage - has 50% branch coverage - has line 7 with missed branches branch - has total branches count 6 - has missed branches count 3 - has coverage report - has line 3 with missed branches branch - has covered branches count 3 - line coverage - has 6 covered lines - has 7 relevant lines - has line coverage - has 1 missed line - a file where nothing is ever executed mixed with skipping #563 - has 0.0 covered_percent - has 0.0 covered_strength - a file with nested branches - line coverage - covers 6/7 - branch coverage - registered 2 hits for the while branch - covers 3/5 - a file that is never relevant - has 0.0 covered_strength - has 100.0 covered_percent - has 100.0 branch coverage - a file with more complex skipping - line coverage - has 6 relevant lines - has a whole lot of skipped lines - has 100.0 covered_percent - has 6 covered lines - has no missed lines - branch coverage - covers 3/4 branches - has an empty branch report - a file with case without else - branch coverage - marks the non declared else branch as missing at the point of the case - covers the branch that includes 42 - covers 1/4 (counting the else branch) - line coverage - covers 4/6 - a file where everything is skipped/irrelevant but executed #563 - branch coverage - does has neither covered nor missed branches - has no branches - has an empty branch report - line coverage - has 0.0 covered_strength - has no covered lines - has a whole lot of skipped lines - has no relevant lines - has 0.0 covered_percent - has no missed lines - simulating potential Ruby 1.9 defect -- see Issue #56 - prints a warning to stderr if coverage array contains more data than lines in the file - has 16 source lines regardless of extra data in coverage array - a file contains non-ASCII characters - empty euc-jp file - has empty lines - EUC-JP with magic comment and shebang - has all the right lines - behaves like converting to UTF-8 - has all source lines of encoding UTF-8 - UTF-8 without magic comment - has the line with 135°C - behaves like converting to UTF-8 - has all source lines of encoding UTF-8 - EUC-JP with magic comment - has the line with 135°C - behaves like converting to UTF-8 - has all source lines of encoding UTF-8 - UTF-8 with magic comment - has the line with 135°C - behaves like converting to UTF-8 - has all source lines of encoding UTF-8 - a file with an uneven usage of # :nocov:s - branch coverage - has 100% branch coverage on 1/1 - has 5 branches marked as skipped - line coverage - has 12 lines skipped - reports 100% coverage on 4/4 - a file entirely ignored with a single # :nocov: - branch coverage - has all branches marked as skipped - has 100% branch coverage on 0/0 - line coverage - has all lines skipped - reports 100% coverage on 0/0 - A file that has inline branches - has branches report on 3 lines - has covered branches count 2 - has branches coverage percent 50.00 - has dual element in condition at line 3 report - a file with case - branch coverage - covers 1/4 - covers all the things right - line coverage - covers 4/7 - a source file initialized with some coverage data - has 16 source lines - has source equal to src - has all source lines of type SimpleCov::SourceFile::Line - has a project filename which removes the project directory - has source_lines equal to lines - has a filename - has 'class Foo' as line(2).source - line coverage - returns line numbers 11, 12, 13, 14, 15 for skipped_lines - returns lines number 8 for missed_lines - returns lines number 2, 3, 4, 7 for covered_lines - returns lines number 1, 5, 6, 9, 10, 16 for never_lines - has 80% covered_percent - branch coverage - is considered 100% branches covered - has total branches count 0 - has covered branches count 0 - has missed branches count 0 - has branch coverage report - the branch tester script - branch coverage - covers 10/24 - notifies us of the missing else branch on line 27 that's hit - line coverage - covers 18/28 - -SimpleCov::LinesClassifier - #classify - relevant lines - determines invalid UTF-8 byte sequences as relevant - determines code as relevant - not-relevant lines - determines whitespace is not-relevant - :nocov: blocks - determines :nocov: blocks are not-relevant - determines all lines after a non-closing :nocov: as not-relevant - comments - determines comments are not-relevant - doesn't mistake interpolation as a comment +return codes + inside fixtures/frameworks + when running rspec_bad.rb + behaves like bad tests + with default configuration + prints a message to STDERR + has a non-zero exit status + when print_error_status is disabled + has a non-zero exit status + does not print anything to STDERR + when running testunit_good.rb + behaves like good tests + has a zero exit status + prints nothing to STDERR + when running testunit_bad.rb + behaves like bad tests + with default configuration + has a non-zero exit status + prints a message to STDERR + when print_error_status is disabled + does not print anything to STDERR + has a non-zero exit status + when running rspec_good.rb + behaves like good tests + has a zero exit status + prints nothing to STDERR SimpleCov - .start_coverage_measurement - starts coverage with lines and branches if branches is activated - starts coverage in lines mode by default .result with merging disabled when not running returns nil when running - caches its result - doesn't store the current coverage - uses the result from Coverage doesn't merge the result adds not-loaded-files + caches its result + uses the result from Coverage + doesn't store the current coverage with merging enabled when not running merges the result when running + stores the current coverage uses the result from Coverage merges the result - stores the current coverage caches its result adds not-loaded-files .collate when files to be merged - and multiple reports to be merged - creates a merged report and a single report to be merged creates a merged report identical to the original and multiple reports to be merged, one of them outdated - creates a merged report with only the results from the current resultset if ignore_timeout: false ignores timeout by default creating a report with all values + creates a merged report with only the results from the current resultset if ignore_timeout: false + and multiple reports to be merged + creates a merged report when no files to be merged shows an error message + .start_coverage_measurement + starts coverage with lines and branches if branches is activated + starts coverage in lines mode by default .exit_status_from_exception + when a non SystemExit occurs + return SimpleCov::ExitCodes::EXCEPTION when no exception has occurred returns nil when a SystemExit has occurred returns the SystemExit status - when a non SystemExit occurs - return SimpleCov::ExitCodes::EXCEPTION .process_result when minimum coverage is 100% + when actual coverage is almost 100% + return SimpleCov::ExitCodes::MINIMUM_COVERAGE branch coverage errors out when the coverage is too low when actual coverage is exactly 100% return SimpleCov::ExitCodes::SUCCESS - when actual coverage is almost 100% - return SimpleCov::ExitCodes::MINIMUM_COVERAGE - -SimpleCov::UselessResultsRemover - still retains the app path - Result ignore gem file path from result set - -SimpleCov::CommandGuesser - correctly guesses "RSpec" for RSpec - correctly guesses "Functional Tests" for functional tests - correctly guesses "Cucumber Features" for cucumber features - defaults to RSpec because RSpec constant is defined - correctly guesses "Integration Tests" for integration tests - correctly guesses "Unit Tests" for unit tests - -SimpleCov::ExitCodes::MinimumCoverageByFileCheck - all files passing requirements - is expected not to be failing - one file violating requirements - is expected to be failing - -return codes - inside fixtures/frameworks - when running testunit_bad.rb - behaves like bad tests - when print_error_status is disabled - does not print anything to STDERR - has a non-zero exit status - with default configuration - has a non-zero exit status - prints a message to STDERR - when running testunit_good.rb - behaves like good tests - has a zero exit status - prints nothing to STDERR - when running rspec_bad.rb - behaves like bad tests - when print_error_status is disabled - does not print anything to STDERR - has a non-zero exit status - with default configuration - prints a message to STDERR - has a non-zero exit status - when running rspec_good.rb - behaves like good tests - prints nothing to STDERR - has a zero exit status - -SimpleCov::ExitCodes::MinimumOverallCoverageCheck - coverage slightly violated - is expected to be failing - coverage violated - is expected to be failing - everything exactly ok - is expected not to be failing - one criterion violated - is expected to be failing SimpleCov::SourceFile::Branch - #overlaps_with?(range) - doesn't overlap with a range before its lines - overlaps with a range that pends in its middle - overlaps with a range that partially includes its end - overlaps with a range that partially includes its beginning - doesn't overlap with a range beyond its lines - overlaps with a range that fully includes everything - overlaps with a range that exactly includes it - a source branch if..else - correct branch report skipping lines can be skipped isn't skipped by default a source branch without coverage - is missed is neither covered not missed if skipped isn't covered + is missed A source branch with coverage is neither covered not missed if skipped is not missed is covered + #overlaps_with?(range) + overlaps with a range that partially includes its end + doesn't overlap with a range before its lines + overlaps with a range that fully includes everything + overlaps with a range that exactly includes it + overlaps with a range that partially includes its beginning + doesn't overlap with a range beyond its lines + overlaps with a range that pends in its middle + a source branch if..else + correct branch report + +SimpleCov::Result + has 14 lines of code + has 11 covered lines + has the correct covered strength + has the correct covered percent + has the correct least covered file + has 5 skipped lines + has the correct covered percentages + has 17 never lines + has 3 missed lines + +SimpleCov::SourceFile::Line + raises ArgumentError when initialized with invalid coverage + raises ArgumentError when initialized with invalid src + raises ArgumentError when initialized with invalid line_number + A source line without coverage + has coverage of 0 + is not covered + is not skipped + status is missed + is missed + is not never + A source line with coverage + has coverage of 3 + is not missed + status is covered + is covered + is not skipped + is not never + A source line with no code + status is never + is not missed + has nil coverage + is not skipped + is not covered + is never + a source line + returns "# the ruby source" as src + has line number 5 + returns the same for source as for src + has equal line_number, line and number + flagged as skipped! + is not never + is not covered + is not missed + status is skipped + is skipped + +SimpleCov::Combine::ResultsCombiner + merges frozen resultsets + with two faked coverage resultsets + a merge + has proper results for parallel_tests.rb + has proper results for conditionally_loaded_1.rb + has proper results for resultset2.rb + has proper results for conditionally_loaded_2.rb + has proper results for user.rb + has proper results for sample.rb + has proper results for three.rb + has proper results for sample_controller.rb + has proper results for resultset1.rb + +SimpleCov::UselessResultsRemover + Result ignore gem file path from result set + still retains the app path + +SimpleCov::ExitCodes::MaximumCoverageDropCheck + more coverage drop allowed + is expected not to be failing + last coverage lower then new coverage + is expected not to be failing + we're at the same coverage + is expected not to be failing + one coverage lower than maximum drop + is expected to be failing + but allowed drop is within range + is expected not to be failing + old last_run.json format + is expected not to be failing + no last run coverage information + is expected not to be failing + coverage expectation for a coverage that wasn't previously present + is expected not to be failing + last coverage higher than new coverage + is expected to be failing + but allowed drop is within range + is expected not to be failing SimpleCov::ResultMerger + resultset handling + returns an empty hash when the resultset cache file is empty + returns an empty hash when the resultset cache file is not present .synchronize_resultset blocks other processes is reentrant (i.e. doesn't block its own process) + .resultset + synchronizes reads basic workings with 2 resultsets has stored data in resultset_path JSON file - returns proper values for merged_result returns a hash containing keys ['result1' and 'result2'] for resultset + returns proper values for merged_result with second result way above the merge_timeout has only one result in SimpleCov::ResultMerger.results - resultset handling - returns an empty hash when the resultset cache file is empty - returns an empty hash when the resultset cache file is not present - .resultset - synchronizes reads + .store_result + persists to disk + synchronizes writes + refreshes the resultset .merge_and_store - pre 0.18 result format - gets the same content back but under "lines" merging behavior - 2 normal results - correctly merges the 2 results - has the result stored both resultsets outdated completely omits the result from the merge includes both when we say ignore_timeout: true 1 resultset is outdated includes it when we say ignore_timeout: true completely omits the result from the merge - .store_result - persists to disk - refreshes the resultset - synchronizes writes + 2 normal results + correctly merges the 2 results + has the result stored + pre 0.18 result format + gets the same content back but under "lines" + +SimpleCov::CommandGuesser + correctly guesses "Integration Tests" for integration tests + correctly guesses "Functional Tests" for functional tests + correctly guesses "RSpec" for RSpec + defaults to RSpec because RSpec constant is defined + correctly guesses "Unit Tests" for unit tests + correctly guesses "Cucumber Features" for cucumber features + +SimpleCov::SourceFile + doesn't match a new SimpleCov::ArrayFilter when a file path different than 'sample.rb' is passed as array + matches a new SimpleCov::ArrayFilter when /sample.rb/ is passed as array + doesn't match a new SimpleCov::ArrayFilter when a custom class that returns false is passed as array + doesn't match a parent directory with a new SimpleCov::ArrayFilter + doesn't match a new SimpleCov::StringFilter 'foobar' + matches a new SimpleCov::ArrayFilter when two file paths including 'sample.rb' are passed as array + matches a new SimpleCov::ArrayFilter when 'sample.rb' is passed as array + matches a new SimpleCov::StringFilter 'spec/fixtures/sample.rb' + doesn't match a new SimpleCov::StringFilter '.pl' + matches a new SimpleCov::ArrayFilter when a block is passed as array and returns true + matches a new SimpleCov::StringFilter 'spec/fixtures' + matches a new SimpleCov::StringFilter 'sample.rb' + matches a new SimpleCov::RegexFilter //fixtures// + doesn't match a new SimpleCov::StringFilter 'some/path' + doesn't match a new SimpleCov::BlockFilter that is not applicable + matches a new SimpleCov::BlockFilter that is applicable + matches a new SimpleCov::ArrayFilter when a custom class that returns true is passed as array + doesn't match a new SimpleCov::ArrayFilter when a block that returns false is passed as array + matches a new SimpleCov::RegexFilter /^/spec// + doesn't match a new SimpleCov::ArrayFilter when a file path different than /sample.rb/ is passed as array + doesn't match a new SimpleCov::RegexFilter /^/fixtures// + doesn't match a parent directory with a new SimpleCov::StringFilter + .class_for_argument + returns SimpleCov::StringFilter for a string + returns SimpleCov::RegexFilter for a string + returns SimpleCov::RegexFilter for a string + with no filters set up and a basic source file in an array + returns 1 item after executing SimpleCov.filtered on files when using a "fooo" string filter + returns a FileList after filtering + returns 1 item after executing SimpleCov.filtered on files when using an always-false block filter + returns 0 items after executing SimpleCov.filtered on files when using a "sample" string filter + returns 0 items after executing SimpleCov.filtered on files when using a "spec/fixtures" string filter + returns 0 items after executing SimpleCov.filtered on files when using a block filter that returns true + with the default configuration + outside the project + filters even if the sibling directory has SimpleCov.root as a prefix + filters + inside the project + filters hidden folders + filters hidden files + filters vendor/bundle + doesn't filter + doesn't filter hidden files further down the path + +SimpleCov::ExitCodes::MinimumOverallCoverageCheck + everything exactly ok + is expected not to be failing + coverage slightly violated + is expected to be failing + coverage violated + is expected to be failing + one criterion violated + is expected to be failing + +loading config + without ENV[HOME] + shouldn't raise any errors + +SimpleCov::LinesClassifier + #classify + not-relevant lines + determines whitespace is not-relevant + :nocov: blocks + determines :nocov: blocks are not-relevant + determines all lines after a non-closing :nocov: as not-relevant + comments + determines comments are not-relevant + doesn't mistake interpolation as a comment + relevant lines + determines code as relevant + determines invalid UTF-8 byte sequences as relevant SimpleCov profiles provides a sensible rails profile provides a sensible test_frameworks profile -SimpleCov::SourceFile::Line - raises ArgumentError when initialized with invalid coverage - raises ArgumentError when initialized with invalid src - raises ArgumentError when initialized with invalid line_number - A source line with no code - has nil coverage - is never - is not covered - is not missed - is not skipped - status is never - a source line - returns "# the ruby source" as src - returns the same for source as for src - has equal line_number, line and number - has line number 5 - flagged as skipped! - is not never - is skipped - is not missed - status is skipped - is not covered - A source line with coverage - is not never - is not missed - status is covered - is covered - is not skipped - has coverage of 3 - A source line without coverage - is not never - is not skipped - has coverage of 0 - status is missed - is not covered - is missed +SimpleCov::Formatter::MultiFormatter + .[] + constructs a formatter with multiple children SimpleCov::Configuration #print_error_status @@ -1382,210 +1371,257 @@ is expected to equal true #tracked_files #coverage_criterion - works fine with line + works fine with :branch + defaults to line errors out on unknown coverage + works fine with line works fine setting it back and forth - works fine with :branch + #primary_coverage + can't set primary coverage to arbitrary things + can set primary coverage to line + when branch coverage is enabled + can set primary coverage to branch + when branch coverage is not enabled + cannot set primary coverage to branch + when unconfigured + returns nil + #coverage_criteria defaults to line when configured returns the configured glob and configured again with nil returns nil - #coverage_criteria - defaults to line - #enable_for_subprocesses - can be set to true - can be enabled and then disabled again - returns false by default - #minimum_coverage_by_file + #enable_coverage + can't enable arbitrary things + can enable line again + can enable branch coverage + #maximum_coverage_drop behaves like setting coverage expectations sets the right coverage value when called with a number - warns you about your usage - sets the right coverage when called with a hash of just branch - does not warn you about your usage - sets the right coverage when called with both line and branch sets the right coverage when called with a hash of just line - raises when unknown coverage criteria provided - raises when trying to set branch coverage but not enabled - when primary coverage is set - sets the right coverage value when called with a number - #minimum_coverage - behaves like setting coverage expectations - does not warn you about your usage - warns you about your usage - sets the right coverage value when called with a number sets the right coverage when called with a hash of just branch + warns you about your usage raises when unknown coverage criteria provided - sets the right coverage when called with a hash of just line + does not warn you about your usage sets the right coverage when called with both line and branch raises when trying to set branch coverage but not enabled when primary coverage is set sets the right coverage value when called with a number - #maximum_coverage_drop + #minimum_coverage_by_file behaves like setting coverage expectations sets the right coverage value when called with a number - sets the right coverage when called with a hash of just branch does not warn you about your usage - sets the right coverage when called with both line and branch raises when unknown coverage criteria provided + sets the right coverage when called with both line and branch raises when trying to set branch coverage but not enabled - sets the right coverage when called with a hash of just line warns you about your usage + sets the right coverage when called with a hash of just line + sets the right coverage when called with a hash of just branch when primary coverage is set sets the right coverage value when called with a number - #primary_coverage - can set primary coverage to line - can't set primary coverage to arbitrary things - when branch coverage is enabled - can set primary coverage to branch - when branch coverage is not enabled - cannot set primary coverage to branch + #enable_for_subprocesses + returns false by default + can be enabled and then disabled again + can be set to true #refuse_coverage_drop - sets the right coverage value when called with `:line` sets the right coverage value when called with no args - sets the right coverage value when called with `:branch` + sets the right coverage value when called with `:line` sets the right coverage value when called with `:line` and `:branch` - #enable_coverage - can enable line again - can't enable arbitrary things - can enable branch coverage + sets the right coverage value when called with `:branch` #branch_coverage? returns false for line coverage returns true of branch coverage is being measured - when unconfigured - returns nil - -loading config - without ENV[HOME] - shouldn't raise any errors - -SimpleCov::Formatter::MultiFormatter - .[] - constructs a formatter with multiple children - -SimpleCov::Combine::ResultsCombiner - merges frozen resultsets - with two faked coverage resultsets - a merge - has proper results for conditionally_loaded_2.rb - has proper results for resultset1.rb - has proper results for sample.rb - has proper results for parallel_tests.rb - has proper results for three.rb - has proper results for user.rb - has proper results for conditionally_loaded_1.rb - has proper results for sample_controller.rb - has proper results for resultset2.rb - -SimpleCov::LastRun - defines a last_run_path - writes json to its last_run_path that can be parsed again - reading - a non empty result - reads json from its last_run_path - but the last_run file does not exist - returns nil - an empty result - returns nil + #minimum_coverage + behaves like setting coverage expectations + sets the right coverage value when called with a number + sets the right coverage when called with both line and branch + raises when trying to set branch coverage but not enabled + warns you about your usage + does not warn you about your usage + sets the right coverage when called with a hash of just branch + raises when unknown coverage criteria provided + sets the right coverage when called with a hash of just line + when primary coverage is set + sets the right coverage value when called with a number -SimpleCov::ExitCodes::MaximumCoverageDropCheck - no last run coverage information - is expected not to be failing - one coverage lower than maximum drop - is expected to be failing - but allowed drop is within range - is expected not to be failing - coverage expectation for a coverage that wasn't previously present - is expected not to be failing - old last_run.json format - is expected not to be failing - last coverage lower then new coverage - is expected not to be failing - more coverage drop allowed - is expected not to be failing - we're at the same coverage - is expected not to be failing - last coverage higher than new coverage - is expected to be failing - but allowed drop is within range - is expected not to be failing +SimpleCov::SourceFile + a file with an uneven usage of # :nocov:s + branch coverage + has 5 branches marked as skipped + has 100% branch coverage on 1/1 + line coverage + has 12 lines skipped + reports 100% coverage on 4/4 + a source file initialized with some coverage data + has all source lines of type SimpleCov::SourceFile::Line + has source_lines equal to lines + has 'class Foo' as line(2).source + has 16 source lines + has a filename + has a project filename which removes the project directory + has source equal to src + branch coverage + is considered 100% branches covered + has total branches count 0 + has branch coverage report + has missed branches count 0 + has covered branches count 0 + line coverage + has 80% covered_percent + returns lines number 2, 3, 4, 7 for covered_lines + returns lines number 8 for missed_lines + returns line numbers 11, 12, 13, 14, 15 for skipped_lines + returns lines number 1, 5, 6, 9, 10, 16 for never_lines + a file with case without else + branch coverage + covers 1/4 (counting the else branch) + marks the non declared else branch as missing at the point of the case + covers the branch that includes 42 + line coverage + covers 4/6 + a file where everything is skipped and missed #563 + has 0.0 covered_percent + has no covered or missed lines + has 0.0 covered_strength + a file entirely ignored with a single # :nocov: + branch coverage + has 100% branch coverage on 0/0 + has all branches marked as skipped + line coverage + has all lines skipped + reports 100% coverage on 0/0 + a file with more complex skipping + branch coverage + has an empty branch report + covers 3/4 branches + line coverage + has a whole lot of skipped lines + has no missed lines + has 6 relevant lines + has 100.0 covered_percent + has 6 covered lines + a file with nested branches + branch coverage + registered 2 hits for the while branch + covers 3/5 + line coverage + covers 6/7 + a file that is never relevant + has 100.0 branch coverage + has 100.0 covered_percent + has 0.0 covered_strength + a file with case + branch coverage + covers all the things right + covers 1/4 + line coverage + covers 4/7 + a file where everything is skipped/irrelevant but executed #563 + branch coverage + has no branches + does has neither covered nor missed branches + has an empty branch report + line coverage + has 0.0 covered_strength + has no relevant lines + has no covered lines + has a whole lot of skipped lines + has 0.0 covered_percent + has no missed lines + a file contains non-ASCII characters + UTF-8 without magic comment + has the line with 135°C + behaves like converting to UTF-8 + has all source lines of encoding UTF-8 + empty euc-jp file + has empty lines + EUC-JP with magic comment + has the line with 135°C + behaves like converting to UTF-8 + has all source lines of encoding UTF-8 + UTF-8 with magic comment + has the line with 135°C + behaves like converting to UTF-8 + has all source lines of encoding UTF-8 + EUC-JP with magic comment and shebang + has all the right lines + behaves like converting to UTF-8 + has all source lines of encoding UTF-8 + a file where nothing is ever executed mixed with skipping #563 + has 0.0 covered_percent + has 0.0 covered_strength + file with branches + line coverage + has 7 relevant lines + has 1 missed line + has line coverage + has 6 covered lines + branch coverage + has line 3 with missed branches branch + has 50% branch coverage + has missed branches count 3 + has total branches count 6 + has covered branches count 3 + has line 7 with missed branches branch + has coverage report + A file that has inline branches + has dual element in condition at line 3 report + has covered branches count 2 + has branches coverage percent 50.00 + has branches report on 3 lines + the branch tester script + line coverage + covers 18/28 + branch coverage + notifies us of the missing else branch on line 27 that's hit + covers 10/24 + simulating potential Ruby 1.9 defect -- see Issue #56 + prints a warning to stderr if coverage array contains more data than lines in the file + has 16 source lines regardless of extra data in coverage array + a file with if/elsif + line coverage + covers 6/9 + branch coverage + covers the branch that includes 42 + covers 3/6 SimpleCov::CoverageStatistics .new - can deal with it if everything is 0 retains statistics and computes new ones can omit the total strength defaulting to 0.0 + can deal with it if everything is 0 .from returns an all 0s coverage statistics if there are no statistics produces sensible total results returns all empty statistics when initialized with a couple of empty results +SimpleCov::ExitCodes::MinimumCoverageByFileCheck + one file violating requirements + is expected to be failing + all files passing requirements + is expected not to be failing + A source file which is subsequently deleted does not cause an error -SimpleCov::Result - has 11 covered lines - has 17 never lines - has 3 missed lines - has 14 lines of code - has the correct least covered file - has the correct covered percent - has the correct covered percentages - has 5 skipped lines - has the correct covered strength - -SimpleCov::SourceFile - matches a new SimpleCov::StringFilter 'sample.rb' - matches a new SimpleCov::BlockFilter that is applicable - matches a new SimpleCov::ArrayFilter when /sample.rb/ is passed as array - doesn't match a new SimpleCov::StringFilter 'some/path' - doesn't match a new SimpleCov::ArrayFilter when a file path different than 'sample.rb' is passed as array - matches a new SimpleCov::StringFilter 'spec/fixtures' - doesn't match a new SimpleCov::RegexFilter /^/fixtures// - doesn't match a parent directory with a new SimpleCov::ArrayFilter - matches a new SimpleCov::ArrayFilter when a block is passed as array and returns true - doesn't match a new SimpleCov::ArrayFilter when a custom class that returns false is passed as array - doesn't match a new SimpleCov::ArrayFilter when a file path different than /sample.rb/ is passed as array - doesn't match a new SimpleCov::StringFilter '.pl' - doesn't match a new SimpleCov::ArrayFilter when a block that returns false is passed as array - doesn't match a parent directory with a new SimpleCov::StringFilter - matches a new SimpleCov::StringFilter 'spec/fixtures/sample.rb' - matches a new SimpleCov::RegexFilter /^/spec// - matches a new SimpleCov::ArrayFilter when two file paths including 'sample.rb' are passed as array - matches a new SimpleCov::ArrayFilter when a custom class that returns true is passed as array - matches a new SimpleCov::ArrayFilter when 'sample.rb' is passed as array - matches a new SimpleCov::RegexFilter //fixtures// - doesn't match a new SimpleCov::BlockFilter that is not applicable - doesn't match a new SimpleCov::StringFilter 'foobar' - .class_for_argument - returns SimpleCov::RegexFilter for a string - returns SimpleCov::StringFilter for a string - returns SimpleCov::RegexFilter for a string - with no filters set up and a basic source file in an array - returns a FileList after filtering - returns 0 items after executing SimpleCov.filtered on files when using a "sample" string filter - returns 1 item after executing SimpleCov.filtered on files when using an always-false block filter - returns 0 items after executing SimpleCov.filtered on files when using a block filter that returns true - returns 1 item after executing SimpleCov.filtered on files when using a "fooo" string filter - returns 0 items after executing SimpleCov.filtered on files when using a "spec/fixtures" string filter - with the default configuration - inside the project - filters hidden files - doesn't filter - filters hidden folders - doesn't filter hidden files further down the path - filters vendor/bundle - outside the project - filters - filters even if the sibling directory has SimpleCov.root as a prefix +SimpleCov::LastRun + defines a last_run_path + writes json to its last_run_path that can be parsed again + reading + an empty result + returns nil + but the last_run file does not exist + returns nil + a non empty result + reads json from its last_run_path Non-app warnings written to tmp/warnings.txt -Finished in 5.16 seconds (files took 0.26933 seconds to load) +Finished in 7.39 seconds (files took 0.40323 seconds to load) 385 examples, 0 failures -Randomized with seed 43186 +Randomized with seed 28576 mv ./.gem2deb.Gemfile.lock Gemfile.lock mv test_projects/monorepo/.gem2deb.Gemfile.lock test_projects/monorepo/Gemfile.lock @@ -1623,12 +1659,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/38622/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/38622/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/18456 and its subdirectories -I: Current time: Tue May 27 00:07:01 -12 2025 -I: pbuilder-time-stamp: 1748347621 +I: removing directory /srv/workspace/pbuilder/38622 and its subdirectories +I: Current time: Wed Apr 24 19:45:05 +14 2024 +I: pbuilder-time-stamp: 1713937505