Diff of the two buildlogs: -- --- b1/build.log 2024-12-31 07:45:42.924023232 +0000 +++ b2/build.log 2024-12-31 07:48:32.524304036 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Dec 30 19:43:45 -12 2024 -I: pbuilder-time-stamp: 1735631025 +I: Current time: Tue Dec 31 21:45:52 +14 2024 +I: pbuilder-time-stamp: 1735631152 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -33,52 +33,84 @@ dpkg-source: info: applying 0006-warning-Calling-Kernel-open-with-a-leading-is-deprec.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/20465/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/30187/tmp/hooks/D01_modify_environment starting +debug: Running on virt64z. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Dec 31 07:46 /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/30187/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/30187/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="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=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='b6dac75bfe274ae88a476a40be22f2da' - 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='20465' - PS1='# ' - PS2='> ' + INVOCATION_ID=08769ff81b834f67a19368d6fe54c3e5 + 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=30187 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.j0B5dprz/pbuilderrc_sr82 --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.j0B5dprz/b1 --logfile b1/build.log ruby-simplecov_0.22.0-2.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.j0B5dprz/pbuilderrc_OokE --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.j0B5dprz/b2 --logfile b2/build.log ruby-simplecov_0.22.0-2.dsc' + SUDO_GID=110 + SUDO_UID=103 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt32c 6.1.0-28-armmp-lpae #1 SMP Debian 6.1.119-1 (2024-11-22) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/20465/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/30187/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -268,7 +300,7 @@ Get: 140 http://deb.debian.org/debian trixie/main armhf ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB] Get: 141 http://deb.debian.org/debian trixie/main armhf ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 142 http://deb.debian.org/debian trixie/main armhf ruby-simplecov-html all 0.12.3-2 [468 kB] -Fetched 43.1 MB in 2s (27.2 MB/s) +Fetched 43.1 MB in 4s (11.0 MB/s) Preconfiguring packages ... 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 ... 19680 files and directories currently installed.) @@ -745,8 +777,8 @@ Setting up tzdata (2024b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Dec 31 07:44:48 UTC 2024. -Universal Time is now: Tue Dec 31 07:44:48 UTC 2024. +Local time is now: Tue Dec 31 07:47:07 UTC 2024. +Universal Time is now: Tue Dec 31 07:47:07 UTC 2024. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up autotools-dev (20220109.1) ... @@ -872,7 +904,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-2_source.changes +I: user script /srv/workspace/pbuilder/30187/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/30187/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-2_source.changes dpkg-buildpackage: info: source package ruby-simplecov dpkg-buildpackage: info: source version 0.22.0-2 dpkg-buildpackage: info: source distribution unstable @@ -906,13 +942,13 @@ │ ruby-simplecov: Installing files and building extensions for ruby3.1 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20241230-25298-zzt92k/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20241231-4536-zboo1q/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/d20241230-25298-zzt92k/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/d20241231-4536-zboo1q/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 @@ -999,104 +1035,96 @@ 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 15852 - -SimpleCov::LinesClassifier - #classify - not-relevant lines - determines whitespace is not-relevant - comments - doesn't mistake interpolation as a comment - determines comments are not-relevant - :nocov: blocks - determines all lines after a non-closing :nocov: as not-relevant - determines :nocov: blocks are not-relevant - relevant lines - determines code as relevant - determines invalid UTF-8 byte sequences as relevant - -SimpleCov::ResultMerger - .store_result - synchronizes writes - refreshes the resultset - persists to disk - .resultset - synchronizes reads - basic workings with 2 resultsets - has stored data in resultset_path JSON file - 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 not present - returns an empty hash when the resultset cache file is empty - .synchronize_resultset - is reentrant (i.e. doesn't block its own process) - blocks other processes - .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 - includes both when we say ignore_timeout: true - completely omits the result from the merge - 1 resultset is outdated - includes it when we say ignore_timeout: true - completely omits the result from the merge +Randomized with seed 34747 SimpleCov + .exit_status_from_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 .collate when no files to be merged shows an error message 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 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 a single report to be merged - creates a merged report identical to the original + and multiple reports to be merged + creates a merged report + .process_result + when minimum coverage is 100% + when actual coverage is exactly 100% + return SimpleCov::ExitCodes::SUCCESS + when actual coverage is almost 100% + return SimpleCov::ExitCodes::MINIMUM_COVERAGE + branch coverage + errors out when the coverage is too low .result with merging disabled + when not running + returns nil when running + adds not-loaded-files + doesn't merge the result doesn't store the current coverage uses the result from Coverage - adds not-loaded-files caches its result - doesn't merge the result - when not running - returns nil with merging enabled + when not running + merges the result when running - adds not-loaded-files - uses the result from Coverage stores the current coverage - merges the result + uses the result from Coverage + adds not-loaded-files caches its result - when not running merges the result - .exit_status_from_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 .start_coverage_measurement - starts coverage with lines and branches if branches is activated starts coverage in lines mode by default - .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 + starts coverage with lines and branches if branches is activated + +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 + +SimpleCov::ExitCodes::MinimumCoverageByFileCheck + all files passing requirements + is expected not to be failing + one file violating requirements + is expected to be failing + +SimpleCov::ExitCodes::MaximumCoverageDropCheck + no last run coverage information + is expected not to be failing + more coverage drop allowed + 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 + last coverage lower then new 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 + we're at the same coverage + is expected not to be failing + old last_run.json format + is expected not to be failing + coverage expectation for a coverage that wasn't previously present + is expected not to be failing SimpleCov::ExitCodes::MinimumOverallCoverageCheck everything exactly ok @@ -1108,218 +1136,223 @@ coverage slightly violated is expected to be failing -return codes - inside fixtures/frameworks - when running testunit_good.rb - behaves like good tests - has a zero exit status - prints nothing to STDERR (PENDING: Temporarily skipped with xit) - 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 (PENDING: Temporarily skipped with xit) - has a non-zero exit status - when running rspec_good.rb - behaves like good tests - has a zero exit status - prints nothing to STDERR (PENDING: Temporarily skipped with xit) - when running rspec_bad.rb - behaves like bad tests - when print_error_status is disabled - does not print anything to STDERR (PENDING: Temporarily skipped with xit) - has a non-zero exit status - with default configuration - has a non-zero exit status - prints a message to STDERR +SimpleCov + profiles + provides a sensible test_frameworks profile + provides a sensible rails profile + +loading config + without ENV[HOME] + shouldn't raise any errors A source file which is subsequently deleted does not cause an error +SimpleCov::CoverageStatistics + .new + 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::CommandGuesser + defaults to RSpec because RSpec constant is defined + correctly guesses "Unit Tests" for unit tests + correctly guesses "Functional Tests" for functional tests + correctly guesses "RSpec" for RSpec + correctly guesses "Cucumber Features" for cucumber features + correctly guesses "Integration Tests" for integration tests + 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 a block is passed as array and returns true - matches a new SimpleCov::StringFilter 'spec/fixtures' - matches a new SimpleCov::BlockFilter that is applicable - doesn't match a new SimpleCov::BlockFilter that is not applicable - doesn't match a new SimpleCov::StringFilter '.pl' - doesn't match a parent directory with a new SimpleCov::StringFilter - matches a new SimpleCov::StringFilter 'spec/fixtures/sample.rb' + 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// + matches a new SimpleCov::ArrayFilter when 'sample.rb' is passed as array + doesn't match a parent directory with a new SimpleCov::ArrayFilter doesn't match a new SimpleCov::ArrayFilter when a block that returns false is passed as array + matches a new SimpleCov::ArrayFilter when /sample.rb/ is passed as array matches a new SimpleCov::StringFilter 'sample.rb' - doesn't match a new SimpleCov::RegexFilter /^/fixtures// - matches a new SimpleCov::ArrayFilter when a custom class that returns true is passed as array + doesn't match a parent directory with a new SimpleCov::StringFilter + matches a new SimpleCov::ArrayFilter when a block is passed as array and returns true matches a new SimpleCov::RegexFilter //fixtures// - doesn't match a parent directory with a new SimpleCov::ArrayFilter - matches a new SimpleCov::ArrayFilter when two file paths including 'sample.rb' are passed as array + doesn't match a new SimpleCov::StringFilter '.pl' + matches a new SimpleCov::RegexFilter /^/spec// + doesn't match a new SimpleCov::BlockFilter that is not applicable doesn't match a new SimpleCov::StringFilter 'foobar' - 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/sample.rb' + matches a new SimpleCov::StringFilter 'spec/fixtures' + 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 two file paths including 'sample.rb' are passed as array + matches a new SimpleCov::BlockFilter that is applicable doesn't match a new SimpleCov::ArrayFilter when a custom class that returns false is passed as array doesn't match a new SimpleCov::StringFilter 'some/path' - matches a new SimpleCov::ArrayFilter when 'sample.rb' is passed as array - matches a new SimpleCov::ArrayFilter when /sample.rb/ is passed as array - matches a new SimpleCov::RegexFilter /^/spec// + matches a new SimpleCov::ArrayFilter when a custom class that returns true is passed as array with no filters set up and a basic source file in an array - returns a FileList after filtering returns 1 item after executing SimpleCov.filtered on files when using a "fooo" 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 "spec/fixtures" string filter + returns a FileList after filtering 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 an always-false block filter returns 0 items after executing SimpleCov.filtered on files when using a "sample" string filter - with the default configuration - outside the project - filters - filters even if the sibling directory has SimpleCov.root as a prefix - inside the project - doesn't filter - filters hidden folders - doesn't filter hidden files further down the path - filters vendor/bundle - filters hidden files .class_for_argument returns SimpleCov::RegexFilter for a string returns SimpleCov::RegexFilter for a string returns SimpleCov::StringFilter for a string - -SimpleCov::CommandGuesser - correctly guesses "Functional Tests" for functional tests - correctly guesses "RSpec" for RSpec - correctly guesses "Cucumber Features" for cucumber features - correctly guesses "Integration Tests" for integration tests - correctly guesses "Unit Tests" for unit tests - defaults to RSpec because RSpec constant is defined - -SimpleCov - profiles - provides a sensible rails profile - provides a sensible test_frameworks profile - -SimpleCov::ExitCodes::MinimumCoverageByFileCheck - one file violating requirements - is expected to be failing - all files passing requirements - is expected not to be failing - -SimpleCov::UselessResultsRemover - Result ignore gem file path from result set - still retains the app path - -SimpleCov::ExitCodes::MaximumCoverageDropCheck - 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 - more coverage drop allowed - 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 - last coverage lower then new coverage - is expected not to be failing - we're at the same coverage - is expected not to be failing - old last_run.json format - is expected not to be failing + with the default configuration + inside the project + filters vendor/bundle + doesn't filter hidden files further down the path + filters hidden files + filters hidden folders + doesn't filter + outside the project + filters + filters even if the sibling directory has SimpleCov.root as a prefix SimpleCov::Combine::ResultsCombiner merges frozen resultsets with two faked coverage resultsets a merge - has proper results for user.rb - has proper results for three.rb has proper results for sample.rb + has proper results for resultset1.rb + has proper results for user.rb has proper results for parallel_tests.rb + has proper results for three.rb has proper results for resultset2.rb has proper results for conditionally_loaded_2.rb - has proper results for conditionally_loaded_1.rb - has proper results for resultset1.rb has proper results for sample_controller.rb + has proper results for conditionally_loaded_1.rb + +SimpleCov::ResultMerger + basic workings with 2 resultsets + has stored data in resultset_path JSON file + 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 + .merge_and_store + merging behavior + both resultsets outdated + includes both when we say ignore_timeout: true + completely omits the result from the merge + 2 normal results + correctly merges the 2 results + has the result stored + 1 resultset is outdated + includes it when we say ignore_timeout: true + completely omits the result from the merge + pre 0.18 result format + gets the same content back but under "lines" + .synchronize_resultset + blocks other processes + is reentrant (i.e. doesn't block its own process) + .store_result + refreshes the resultset + synchronizes writes + persists to disk + resultset handling + returns an empty hash when the resultset cache file is not present + returns an empty hash when the resultset cache file is empty + .resultset + synchronizes reads SimpleCov::Result - with a (mocked) Coverage.result - with some filters set up - has 80 covered percent - has [80.0, 80.0] covered percentages - has 2 files in a new simple cov result - with groups set up for all files - has sample_controller.rb in 'Controllers' group - has user.rb in 'Models' group - has 3 groups - 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 groups set up that do not match all files - has 1 item per group - returns all groups as instances of SimpleCov::FileList - has sample.rb in "Ungrouped" group - has 3 groups - a simple cov result initialized from that - has files equal to source_files - has 3 source files - has accurate least covered file - has accurate covered percent - responds to least_covered_file - responds to covered_strength - has 3 filenames - responds to covered_percent - has accurate covered percentages - responds to total_lines - responds to missed_lines - responds to covered_percentages - returns an instance of SimpleCov::FileList for source_files and files - responds to covered_lines - dumped with to_hash - is a hash - loaded back with from_hash - has 3 source files - has the same original_result - has the same timestamp - has the same covered_percent - has the same command_name - has the same covered_percentages + has the correct least covered file + has 5 skipped lines + has 14 lines of code + has 3 missed lines + has the correct covered strength + has 11 covered lines + has the correct covered percentages + has the correct covered percent + has 17 never lines + +SimpleCov::SourceFile::Line + raises ArgumentError when initialized with invalid src + raises ArgumentError when initialized with invalid line_number + raises ArgumentError when initialized with invalid coverage + a source line + has line number 5 + returns the same for source as for src + returns "# the ruby source" as src + has equal line_number, line and number + flagged as skipped! + is skipped + is not missed + status is skipped + is not never + is not covered + A source line with coverage + status is covered + is not never + is not missed + is covered + is not skipped + has coverage of 3 + A source line with no code + is never + is not skipped + is not covered + is not missed + has nil coverage + status is never + A source line without coverage + is not skipped + status is missed + is missed + is not never + is not covered + has coverage of 0 + +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 + doesn't mistake interpolation as a comment + determines comments are not-relevant + relevant lines + determines invalid UTF-8 byte sequences as relevant + determines code as relevant + +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 (PENDING: Temporarily skipped with xit) + has a non-zero exit status + with default configuration + has a non-zero exit status + prints a message to STDERR + when running rspec_good.rb + behaves like good tests + has a zero exit status + prints nothing to STDERR (PENDING: Temporarily skipped with xit) + when running testunit_good.rb + behaves like good tests + prints nothing to STDERR (PENDING: Temporarily skipped with xit) + has a zero exit status + when running rspec_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 + has a non-zero exit status + does not print anything to STDERR (PENDING: Temporarily skipped with xit) SimpleCov::Configuration - #print_error_status - when manually set - is expected to equal false - when not manually set - is expected to equal true #tracked_files when configured returns the configured glob and configured again with nil returns nil - #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` and `:branch` - #minimum_coverage - behaves like setting coverage expectations - warns you about your usage - does not warn you about your usage - sets the right coverage when called with both line and branch - sets the right coverage value when called with a number - raises when unknown coverage criteria provided - raises when trying to set branch coverage but not enabled - sets the right coverage when called with a hash of just branch - 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 - #enable_for_subprocesses - can be set to true - can be enabled and then disabled again - returns false by default #primary_coverage can set primary coverage to line can't set primary coverage to arbitrary things @@ -1329,301 +1362,304 @@ cannot set primary coverage to branch #minimum_coverage_by_file behaves like setting coverage expectations - raises when unknown coverage criteria provided - warns you about your usage raises when trying to set branch coverage but not enabled - sets the right coverage when called with a hash of just branch sets the right coverage when called with both line and branch + does not warn you about your usage + raises when unknown coverage criteria provided sets the right coverage when called with a hash of just line + warns you about your usage sets the right coverage value when called with a number - does not warn you about your usage + 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 + #coverage_criteria + defaults to line + #branch_coverage? + returns true of branch coverage is being measured + returns false for line coverage #coverage_criterion errors out on unknown coverage - defaults to line works fine setting it back and forth works fine with line works fine with :branch + defaults to line + #minimum_coverage + behaves like setting coverage expectations + sets the right coverage when called with a hash of just branch + warns you about your usage + sets the right coverage value when called with a number + raises when unknown coverage criteria provided + does not warn you about your usage + sets the right coverage when called with a hash of just line + raises when trying to set branch coverage but not enabled + sets the right coverage when called with both line and branch + when primary coverage is set + sets the right coverage value when called with a number #enable_coverage + can't enable arbitrary things can enable line again can enable branch coverage - can't enable arbitrary things - #branch_coverage? - returns true of branch coverage is being measured - returns false for line coverage - when unconfigured - returns nil #maximum_coverage_drop behaves like setting coverage expectations - warns you about your usage sets the right coverage when called with a hash of just line raises when trying to set branch coverage but not enabled - 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 a hash of just branch + sets the right coverage value when called with a number + warns you about your usage raises when unknown coverage criteria provided sets the right coverage when called with both line and branch when primary coverage is set sets the right coverage value when called with a number - #coverage_criteria - defaults to line - -SimpleCov::Formatter::MultiFormatter - .[] - constructs a formatter with multiple children + #refuse_coverage_drop + sets the right coverage value when called with `:branch` + sets the right coverage value when called with `:line` and `:branch` + sets the right coverage value when called with no args + sets the right coverage value when called with `:line` + when unconfigured + returns nil + #enable_for_subprocesses + returns false by default + can be enabled and then disabled again + can be set to true + #print_error_status + when manually set + is expected to equal false + when not manually set + is expected to equal true SimpleCov::SourceFile::Branch - A source branch with coverage - is neither covered not missed if skipped - is covered - is not missed + skipping lines + can be skipped + isn't skipped by default #overlaps_with?(range) + overlaps with a range that pends in its middle doesn't overlap with a range before its lines 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 + overlaps with a range that fully includes everything overlaps with a range that partially includes its end - overlaps with a range that pends in its middle overlaps with a range that partially includes its beginning - skipping lines - can be skipped - isn't skipped by default + a source branch if..else + correct branch report a source branch without coverage is neither covered not missed if skipped isn't covered is missed - a source branch if..else - correct branch report - -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 - -loading config - without ENV[HOME] - shouldn't raise any errors + A source branch with coverage + is not missed + is neither covered not missed if skipped + is covered 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 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 with more complex skipping - branch coverage - covers 3/4 branches - has an empty branch report - line coverage - has 100.0 covered_percent - has no missed lines - has 6 relevant lines - has 6 covered lines - has a whole lot of skipped lines - a file where everything is skipped/irrelevant but executed #563 - branch coverage - does has neither covered nor missed branches - has an empty branch report - has no branches - 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 that has inline branches has dual element in condition at line 3 report - has branches report on 3 lines has branches coverage percent 50.00 + has branches report on 3 lines has covered branches count 2 - 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 - branch coverage - covers 3/5 - registered 2 hits for the while branch + a file where everything is skipped/irrelevant but executed #563 line coverage - covers 6/7 - file with branches + has no missed lines + has a whole lot of skipped lines + has 0.0 covered_percent + has no covered lines + has 0.0 covered_strength + has no relevant lines branch coverage - has covered branches count 3 - has coverage report - has line 7 with missed branches branch - has missed branches count 3 - has total branches count 6 - has line 3 with missed branches branch - has 50% branch coverage - line coverage - has 7 relevant lines - has 1 missed line - has 6 covered lines - has line coverage - a file that is never relevant - has 0.0 covered_strength - has 100.0 covered_percent - has 100.0 branch coverage + does has neither covered nor missed branches + has no branches + has an empty branch report a file with an uneven usage of # :nocov:s line coverage reports 100% coverage on 4/4 has 12 lines skipped branch coverage - has 5 branches marked as skipped has 100% branch coverage on 1/1 - a file with if/elsif + has 5 branches marked as skipped + a file contains non-ASCII characters + 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 + empty euc-jp file + has empty lines + 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 + 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 with case line coverage - covers 6/9 + covers 4/7 branch coverage - covers 3/6 - covers the branch that includes 42 - a file entirely ignored with a single # :nocov: - line coverage - has all lines skipped - reports 100% coverage on 0/0 + covers all the things right + covers 1/4 + the branch tester script branch coverage - has all branches marked as skipped - has 100% branch coverage on 0/0 + notifies us of the missing else branch on line 27 that's hit + covers 10/24 + line coverage + covers 18/28 a source file initialized with some coverage data - has a filename + has a project filename which removes the project directory + has 'class Foo' as line(2).source + has 16 source lines has all source lines of type SimpleCov::SourceFile::Line has source_lines equal to lines has source equal to src - has a project filename which removes the project directory - has 16 source lines - has 'class Foo' as line(2).source + has a filename line coverage + returns line numbers 11, 12, 13, 14, 15 for skipped_lines returns lines number 1, 5, 6, 9, 10, 16 for never_lines returns lines number 2, 3, 4, 7 for covered_lines has 80% covered_percent returns lines number 8 for missed_lines - returns line numbers 11, 12, 13, 14, 15 for skipped_lines branch coverage - has branch coverage report has missed branches count 0 - has total branches count 0 has covered branches count 0 + has total branches count 0 + has branch coverage report is considered 100% branches covered - a file with case + 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 more complex skipping + branch coverage + covers 3/4 branches + has an empty branch report line coverage - covers 4/7 + has a whole lot of skipped lines + has 6 covered lines + has no missed lines + has 6 relevant lines + has 100.0 covered_percent + a file with case without else + line coverage + covers 4/6 branch coverage - covers 1/4 - covers all the things right - the branch tester script + covers 1/4 (counting the else branch) + covers the branch that includes 42 + marks the non declared else branch as missing at the point of the case + a file with nested branches + line coverage + covers 6/7 branch coverage - notifies us of the missing else branch on line 27 that's hit - covers 10/24 + registered 2 hits for the while branch + covers 3/5 + 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 - covers 18/28 - simulating potential Ruby 1.9 defect -- see Issue #56 - has 16 source lines regardless of extra data in coverage array - prints a warning to stderr if coverage array contains more data than lines in the file - 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 and shebang - has all the right lines - 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 - has the line with 135°C - behaves like converting to UTF-8 - has all source lines of encoding UTF-8 + has 1 missed line + has 6 covered lines + has 7 relevant lines + has line coverage + branch coverage + has covered branches count 3 + has 50% branch coverage + has total branches count 6 + has line 3 with missed branches branch + has line 7 with missed branches branch + has coverage report + has missed branches count 3 + a file that is never relevant + has 100.0 branch coverage + has 0.0 covered_strength + has 100.0 covered_percent + a file with if/elsif + line coverage + covers 6/9 + branch coverage + covers 3/6 + covers the branch that includes 42 + 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 + reports 100% coverage on 0/0 + has all lines skipped + 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 -SimpleCov::Result - has 5 skipped lines - has 3 missed lines - has the correct covered percent - has the correct covered percentages - has 14 lines of code - has the correct least covered file - has 11 covered lines - has 17 never lines - has the correct covered strength +SimpleCov::Formatter::MultiFormatter + .[] + constructs a formatter with multiple children -SimpleCov::SourceFile::Line - raises ArgumentError when initialized with invalid src - raises ArgumentError when initialized with invalid line_number - raises ArgumentError when initialized with invalid coverage - A source line with coverage - is covered - is not skipped - is not never - status is covered - has coverage of 3 - is not missed - 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 skipped - status is skipped - is not covered - is not never - is not missed - A source line without coverage - status is missed - is not never - has coverage of 0 - is missed - is not skipped - is not covered - A source line with no code - is not covered - status is never - has nil coverage - is not missed - is not skipped - is never +SimpleCov::UselessResultsRemover + still retains the app path + Result ignore gem file path from result set -SimpleCov::CoverageStatistics - .from - produces sensible total results - returns all empty statistics when initialized with a couple of empty results - returns an all 0s coverage statistics if there are no statistics - .new - can deal with it if everything is 0 - can omit the total strength defaulting to 0.0 - retains statistics and computes new ones +SimpleCov::Result + with a (mocked) Coverage.result + with groups set up for all files + has user.rb in 'Models' group + has 3 groups + has sample_controller.rb in 'Controllers' 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! + a simple cov result initialized from that + returns an instance of SimpleCov::FileList for source_files and files + responds to total_lines + has 3 source files + has accurate least covered file + responds to missed_lines + responds to least_covered_file + has accurate covered percent + responds to covered_percent + has 3 filenames + responds to covered_strength + responds to covered_percentages + has files equal to source_files + has accurate covered percentages + responds to covered_lines + dumped with to_hash + is a hash + loaded back with from_hash + has the same covered_percentages + has the same command_name + has the same timestamp + has 3 source files + has the same covered_percent + has the same original_result + with some filters set up + has [80.0, 80.0] covered percentages + has 2 files in a new simple cov result + has 80 covered percent + .from_hash + can consume multiple commands + 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 3 groups + has 1 item per group Non-app warnings written to tmp/warnings.txt Pending: (Failures listed here are expected and do not affect your suite's status) - 1) return codes inside fixtures/frameworks when running testunit_good.rb behaves like good tests prints nothing to STDERR + 1) 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 # Temporarily skipped with xit - # ./spec/return_codes_spec.rb:25 + # ./spec/return_codes_spec.rb:48 - 2) 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 + 2) return codes inside fixtures/frameworks when running rspec_good.rb behaves like good tests prints nothing to STDERR # Temporarily skipped with xit - # ./spec/return_codes_spec.rb:48 + # ./spec/return_codes_spec.rb:25 - 3) return codes inside fixtures/frameworks when running rspec_good.rb behaves like good tests prints nothing to STDERR + 3) return codes inside fixtures/frameworks when running testunit_good.rb behaves like good tests prints nothing to STDERR # Temporarily skipped with xit # ./spec/return_codes_spec.rb:25 @@ -1631,10 +1667,10 @@ # Temporarily skipped with xit # ./spec/return_codes_spec.rb:48 -Finished in 10.12 seconds (files took 0.86283 seconds to load) +Finished in 13.21 seconds (files took 0.87055 seconds to load) 385 examples, 0 failures, 4 pending -Randomized with seed 15852 +Randomized with seed 34747 mv ./.gem2deb.Gemfile.lock Gemfile.lock mv test_projects/monorepo/.gem2deb.Gemfile.lock test_projects/monorepo/Gemfile.lock @@ -1672,12 +1708,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/30187/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/30187/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/20465 and its subdirectories -I: Current time: Mon Dec 30 19:45:38 -12 2024 -I: pbuilder-time-stamp: 1735631138 +I: removing directory /srv/workspace/pbuilder/30187 and its subdirectories +I: Current time: Tue Dec 31 21:48:28 +14 2024 +I: pbuilder-time-stamp: 1735631308