Diff of the two buildlogs: -- --- b1/build.log 2025-09-02 23:04:42.715077024 +0000 +++ b2/build.log 2025-09-02 23:06:59.319248812 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Sep 2 11:03:29 -12 2025 -I: pbuilder-time-stamp: 1756854209 +I: Current time: Tue Oct 6 19:27:44 +14 2026 +I: pbuilder-time-stamp: 1791264464 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -30,52 +30,84 @@ dpkg-source: info: applying disable-randomly-failing-test.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2544314/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/254840/tmp/hooks/D01_modify_environment starting +debug: Running on infom02-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Oct 6 05:27 /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/254840/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/254840/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='5e2cb4e904474217a118f743cc4feb91' - 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='2544314' - PS1='# ' - PS2='> ' + INVOCATION_ID=dd780a47848541c9ac596a116545fb7e + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=254840 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.TXUj913Y/pbuilderrc_lnkg --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.TXUj913Y/b1 --logfile b1/build.log ruby-rspec-rails_7.1.1-2.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' + 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.TXUj913Y/pbuilderrc_0NuA --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.TXUj913Y/b2 --logfile b2/build.log ruby-rspec-rails_7.1.1-2.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' I: uname -a - Linux infom01-amd64 6.12.41+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.41-1 (2025-08-12) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.41+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.41-1 (2025-08-12) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2544314/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/254840/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -319,7 +351,7 @@ Get: 178 http://deb.debian.org/debian forky/main amd64 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B] Get: 179 http://deb.debian.org/debian forky/main amd64 ruby-sqlite3 amd64 1.7.3-2 [50.2 kB] Get: 180 http://deb.debian.org/debian forky/main amd64 ruby-warning all 1.3.0-1 [8968 B] -Fetched 41.8 MB in 3s (13.6 MB/s) +Fetched 41.8 MB in 4s (11.1 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19897 files and directories currently installed.) @@ -910,8 +942,8 @@ Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' -Local time is now: Tue Sep 2 23:04:23 UTC 2025. -Universal Time is now: Tue Sep 2 23:04:23 UTC 2025. +Local time is now: Tue Oct 6 05:29:22 UTC 2026. +Universal Time is now: Tue Oct 6 05:29:22 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up ruby-websocket-extensions (0.1.5-2) ... @@ -1074,7 +1106,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-rspec-rails-7.1.1/ && 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-rspec-rails_7.1.1-2_source.changes +I: user script /srv/workspace/pbuilder/254840/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/254840/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-rspec-rails-7.1.1/ && 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-rspec-rails_7.1.1-2_source.changes dpkg-buildpackage: info: source package ruby-rspec-rails dpkg-buildpackage: info: source version 7.1.1-2 dpkg-buildpackage: info: source distribution unstable @@ -1107,7 +1143,7 @@ │ ruby-rspec-rails: Installing files and building extensions for ruby3.3 │ └──────────────────────────────────────────────────────────────────────────────┘ -/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250902-2549731-9zl8jy/gemspec +/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20261006-265507-t92cmh/gemspec WARNING: open-ended dependency on actionpack (>= 7.0) is not recommended if actionpack is semantically versioned, use: add_runtime_dependency "actionpack", "~> 7.0" @@ -1125,7 +1161,7 @@ Name: rspec-rails Version: 7.1.1 File: rspec-rails-7.1.1.gem -/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-rspec-rails/usr/share/rubygems-integration/all /tmp/d20250902-2549731-9zl8jy/rspec-rails-7.1.1.gem +/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-rspec-rails/usr/share/rubygems-integration/all /tmp/d20261006-265507-t92cmh/rspec-rails-7.1.1.gem /build/reproducible-path/ruby-rspec-rails-7.1.1/debian/ruby-rspec-rails/usr/share/rubygems-integration/all/gems/rspec-rails-7.1.1/lib/generators/rspec.rb /build/reproducible-path/ruby-rspec-rails-7.1.1/debian/ruby-rspec-rails/usr/share/rubygems-integration/all/gems/rspec-rails-7.1.1/lib/generators/rspec/channel/channel_generator.rb /build/reproducible-path/ruby-rspec-rails-7.1.1/debian/ruby-rspec-rails/usr/share/rubygems-integration/all/gems/rspec-rails-7.1.1/lib/generators/rspec/channel/templates/channel_spec.rb.erb @@ -1249,514 +1285,968 @@ RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-rspec-rails-7.1.1/debian/ruby-rspec-rails/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-rspec-rails-7.1.1/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake /usr/bin/ruby3.3 -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 ./spec/rspec/rails/active_model_spec.rb ./spec/rspec/rails/active_record_spec.rb ./spec/rspec/rails/assertion_adapter_spec.rb ./spec/rspec/rails/assertion_delegator_spec.rb ./spec/rspec/rails/configuration_spec.rb ./spec/rspec/rails/example/channel_example_group_spec.rb ./spec/rspec/rails/example/controller_example_group_spec.rb ./spec/rspec/rails/example/feature_example_group_spec.rb ./spec/rspec/rails/example/helper_example_group_spec.rb ./spec/rspec/rails/example/job_example_group_spec.rb ./spec/rspec/rails/example/mailbox_example_group_spec.rb ./spec/rspec/rails/example/model_example_group_spec.rb ./spec/rspec/rails/example/rails_example_group_spec.rb ./spec/rspec/rails/example/request_example_group_spec.rb ./spec/rspec/rails/example/routing_example_group_spec.rb ./spec/rspec/rails/example/system_example_group_spec.rb ./spec/rspec/rails/example/view_example_group_spec.rb ./spec/rspec/rails/fixture_file_upload_support_spec.rb ./spec/rspec/rails/fixture_support_spec.rb ./spec/rspec/rails/matchers/action_cable/have_broadcasted_to_spec.rb ./spec/rspec/rails/matchers/action_cable/have_stream_spec.rb ./spec/rspec/rails/matchers/action_mailbox_spec.rb ./spec/rspec/rails/matchers/active_job_spec.rb ./spec/rspec/rails/matchers/be_a_new_spec.rb ./spec/rspec/rails/matchers/be_new_record_spec.rb ./spec/rspec/rails/matchers/be_routable_spec.rb ./spec/rspec/rails/matchers/be_valid_spec.rb ./spec/rspec/rails/matchers/has_spec.rb ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb ./spec/rspec/rails/matchers/have_http_status_spec.rb ./spec/rspec/rails/matchers/have_rendered_spec.rb ./spec/rspec/rails/matchers/redirect_to_spec.rb ./spec/rspec/rails/matchers/relation_match_array_spec.rb ./spec/rspec/rails/matchers/route_to_spec.rb ./spec/rspec/rails/matchers/send_email_spec.rb ./spec/rspec/rails/minitest_lifecycle_adapter_spec.rb ./spec/rspec/rails/setup_and_teardown_adapter_spec.rb ./spec/rspec/rails/view_rendering_spec.rb ./spec/rspec/rails/view_spec_methods_spec.rb ./spec/rspec/rails_spec.rb --format documentation -Randomized with seed 156 +Randomized with seed 52652 -RSpec::Rails::RequestExampleGroup +RSpec::Rails::MailboxExampleGroup + #have_been_delivered + does not raise otherwise + raises on undelivered mail + #have_bounced + raises on unbounced mail + does not raise otherwise + #process + sends mail to the mailbox behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :request` - for an example group defined in a file in the ./spec/requests/ directory - does not include itself in the example group - does not tag groups in that directory with `type: :request` - for an example group defined in a file in the .\spec\api\ directory - does not include itself in the example group - does not tag groups in that directory with `type: :request` - for an example group defined in a file in the .\spec\requests\ directory - does not include itself in the example group - does not tag groups in that directory with `type: :request` - for an example group defined in a file in the ./spec/integration/ directory - does not tag groups in that directory with `type: :request` - does not include itself in the example group - for an example group defined in a file in the .\spec\integration\ directory + includes itself in example groups tagged with `type: :mailbox` + for an example group defined in a file in the ./spec/mailboxes/ directory does not include itself in the example group - does not tag groups in that directory with `type: :request` - for an example group defined in a file in the ./spec/api/ directory + does not tag groups in that directory with `type: :mailbox` + for an example group defined in a file in the .\spec\mailboxes\ directory does not include itself in the example group - does not tag groups in that directory with `type: :request` + does not tag groups in that directory with `type: :mailbox` when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :request` - for an example group defined in a file in the .\spec\requests\ directory - includes itself in the example group - allows users to override the type - tags groups in that directory with `type: :request` - applies configured `before(:context)` hooks with `type: :request` metadata - for an example group defined in a file in the .\spec\integration\ directory - allows users to override the type - applies configured `before(:context)` hooks with `type: :request` metadata - includes itself in the example group - tags groups in that directory with `type: :request` - for an example group defined in a file in the ./spec/integration/ directory - applies configured `before(:context)` hooks with `type: :request` metadata - includes itself in the example group - allows users to override the type - tags groups in that directory with `type: :request` - for an example group defined in a file in the .\spec\api\ directory - applies configured `before(:context)` hooks with `type: :request` metadata - includes itself in the example group - tags groups in that directory with `type: :request` + includes itself in example groups tagged with `type: :mailbox` + for an example group defined in a file in the ./spec/mailboxes/ directory + applies configured `before(:context)` hooks with `type: :mailbox` metadata + tags groups in that directory with `type: :mailbox` allows users to override the type - for an example group defined in a file in the ./spec/requests/ directory includes itself in the example group - tags groups in that directory with `type: :request` - applies configured `before(:context)` hooks with `type: :request` metadata - allows users to override the type - for an example group defined in a file in the ./spec/api/ directory - tags groups in that directory with `type: :request` + for an example group defined in a file in the .\spec\mailboxes\ directory + tags groups in that directory with `type: :mailbox` + applies configured `before(:context)` hooks with `type: :mailbox` metadata includes itself in the example group - applies configured `before(:context)` hooks with `type: :request` metadata allows users to override the type + #have_failed + raises on unfailed mail + does not raise otherwise -ActiveSupport::Relation match_array matcher - fails if the scope encompasses fewer records than on the right hand side - fails if the scope encompasses more records than on the right hand side - verifies that the scope returns the records on the right hand side, regardless of order +have_http_status + with general status code group :redirect + behaves like supports different response instances + returns false given another type + has a negated failure message reporting it was given another type + has a failure message reporting it was given another type + given something that acts as a Capybara::Session + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + behaves like status code matcher + has a negated failure message reporting the expected and actual status codes + describes behaves like status code matcher + has a failure message reporting the expected and actual status codes + matching a response + returns true for a response with code + returns false for a response with a different code + with a nil status + raises an ArgumentError + with a symbolic status + raises an ArgumentError + has a negated failure message reporting the expected status code + describes responding by the symbolic and associated numeric status code + has a failure message reporting the expected and actual statuses + behaves like supports different response instances + returns false given another type + has a negated failure message reporting it was given another type + has a failure message reporting it was given another type + given an ActionDispatch::TestResponse + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + matching a response + returns false for a response with a different code + returns true for a response with the equivalent code + http status :server_error + behaves like supports different response instances + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + returns false given another type + given an ActionDispatch::TestResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + with general status code group :error + behaves like status code matcher + describes behaves like status code matcher + has a negated failure message reporting the expected and actual status codes + has a failure message reporting the expected and actual status codes + matching a response + returns false for a response with a different code + returns true for a response with code + behaves like supports different response instances + returns false given another type + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + with general status code group :success + behaves like status code matcher + has a failure message reporting the expected and actual status codes + has a negated failure message reporting the expected and actual status codes + describes behaves like status code matcher + matching a response + returns true for a response with code + returns false for a response with a different code + behaves like supports different response instances + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + returns false given another type + given something that acts as a Capybara::Session + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + http status :not_found + behaves like supports different response instances + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + returns false given another type + given an ActionDispatch::TestResponse + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + http status :successful + behaves like supports different response instances + returns false given another type + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + given something that acts as a Capybara::Session + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + with general status code group :server_error + behaves like supports different response instances + has a negated failure message reporting it was given another type + has a failure message reporting it was given another type + returns false given another type + given something that acts as a Capybara::Session + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + behaves like status code matcher + has a negated failure message reporting the expected and actual status codes + describes behaves like status code matcher + has a failure message reporting the expected and actual status codes + matching a response + returns false for a response with a different code + returns true for a response with code + http status :missing + behaves like does not use deprecated methods for Rails 5.2+ + does not use deprecated method for Rails >= 5.2 + http status :error + behaves like does not use deprecated methods for Rails 5.2+ + does not use deprecated method for Rails >= 5.2 + with general status code group :successful + behaves like supports different response instances + has a failure message reporting it was given another type + returns false given another type + has a negated failure message reporting it was given another type + given an ActionDispatch::Response + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + behaves like status code matcher + has a negated failure message reporting the expected and actual status codes + has a failure message reporting the expected and actual status codes + describes behaves like status code matcher + matching a response + returns true for a response with code + returns false for a response with a different code + with general status code group :not_found + behaves like supports different response instances + has a failure message reporting it was given another type + returns false given another type + has a negated failure message reporting it was given another type + given an ActionDispatch::Response + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + behaves like status code matcher + has a failure message reporting the expected and actual status codes + has a negated failure message reporting the expected and actual status codes + describes behaves like status code matcher + matching a response + returns false for a response with a different code + returns true for a response with code + with general status code group :missing + behaves like status code matcher + has a negated failure message reporting the expected and actual status codes + describes behaves like status code matcher + has a failure message reporting the expected and actual status codes + matching a response + returns true for a response with code + returns false for a response with a different code + behaves like supports different response instances + has a failure message reporting it was given another type + has a negated failure message reporting it was given another type + returns false given another type + given a Rack::MockResponse + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given an ActionDispatch::TestResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + with deprecated rack status codes + supports the original names + http status :success + behaves like does not use deprecated methods for Rails 5.2+ + does not use deprecated method for Rails >= 5.2 + with a numeric status code + has a failure message reporting the expected and actual status codes + describes responding with the numeric status code + has a negated failure message reporting the expected status code + behaves like supports different response instances + has a negated failure message reporting it was given another type + returns false given another type + has a failure message reporting it was given another type + given an ActionDispatch::TestResponse + returns true for a response with the same code + given something that acts as a Capybara::Session + returns true for a response with the same code + given an ActionDispatch::Response + returns true for a response with the same code + given a Rack::MockResponse + returns true for a response with the same code + matching a response + returns false for a response with a different code + returns true for a response with the same code + +redirect_to + with should_not + when fails due to some other exception + raises that exception + when assert_redirected_to fails + passes + when assert_redirected_to passes + fails with custom failure message + with should + when assert_redirected_to passes + passes + when fails due to some other exception + raises that exception + when assert_redirected_to fails + uses failure message from assert_redirected_to Configuration - metadata `type: :model` sets up model example groups metadata `type: :controller` sets up controller example groups - metadata `type: :routing` sets up routing example groups + deprecates fixture_path + #filter_rails_from_backtrace! adds exclusion patterns for rails gems + adds 'vendor/' to the backtrace exclusions + fixture support is included with metadata `:use_fixtures` and fixture_paths configured + adds 'lib/rspec/rails' to the backtrace exclusions deprecates fixture_path = - metadata `type: :feature` sets up feature example groups - fixture support is included with metadata `:use_fixtures` and deprecated fixture_path configured fixture support is included with metadata `:use_fixtures` + metadata `type: :mailer` sets up mailer example groups + metadata `type: :routing` sets up routing example groups + metadata `type: :model` sets up model example groups + metadata `type: :view` sets up view example groups + fixture support is included with metadata `:use_fixtures` and deprecated fixture_path configured + metadata `type: :helper` sets up helper example groups metadata `type: :request` sets up request example groups has a default #file_fixture_path of 'spec/fixtures/files' - fixture support is included with metadata `:use_fixtures` and fixture_paths configured - metadata `type: :helper` sets up helper example groups - deprecates fixture_path - metadata `type: :view` sets up view example groups - metadata `type: :mailer` sets up mailer example groups - #filter_rails_from_backtrace! adds exclusion patterns for rails gems - adds 'lib/rspec/rails' to the backtrace exclusions - adds 'vendor/' to the backtrace exclusions + metadata `type: :feature` sets up feature example groups + clears ActionMailer::Base::Deliveries after each example + only has deliveries from this test (e.g. from email@example.com) (PENDING: Temporarily skipped with xit) + only has deliveries from this test (e.g. from email_2@example.com) (PENDING: Temporarily skipped with xit) adds settings `#rendering_views?` is `false` by default - `#render_views?` is false by default - `#fixture_paths?` is `false` by default - `#render_views` sets `render_views?` to `true` + `#use_transactional_fixtures?` is `false` by default + `#global_fixtures?` is `false` by default `#infer_base_class_for_anonymous_controllers?` is `true` by default - `#global_fixtures` is `nil` by default + `#fixture_paths?` is `false` by default `#rendering_views?` is `false` by default - `#use_instantiated_fixtures` is `nil` by default - `#use_instantiated_fixtures?` is `false` by default + `#fixture_paths?` is `false` by default + `#use_transactional_examples` is an alias for `use_transactional_fixtures` `#infer_base_class_for_anonymous_controllers?` is `true` by default + `#render_views` sets `render_views?` to `true` `#rendering_views` is `nil` by default + `#global_fixtures` is `nil` by default + `#infer_base_class_for_anonymous_controllers` is `true` by default `#global_fixtures?` is `false` by default + `#use_instantiated_fixtures` is `nil` by default `#use_transactional_fixtures?` is `false` by default + `#render_views?` is false by default `#use_transactional_fixtures` is `nil` by default - `#fixture_paths?` is `false` by default - `#use_instantiated_fixtures?` is `false` by default - `#use_transactional_fixtures?` is `false` by default - `#global_fixtures?` is `false` by default - `#use_transactional_examples` is an alias for `use_transactional_fixtures` - `#infer_base_class_for_anonymous_controllers` is `true` by default `#fixture_paths` is `nil` by default - `#global_fixtures=` - changes `global_fixtures?` to the true for a truthy value - sets `global_fixtures` to the provided value - `#fixture_paths=` - sets `fixture_paths` to the provided value - changes `fixture_paths?` to the true for a truthy value - `#render_views=` - sets `render_views?` to the truthiness of the provided value - `#infer_base_class_for_anonymous_controllers=` - sets `infer_base_class_for_anonymous_controllers` to the provided value - changes `infer_base_class_for_anonymous_controllers?` to the true for a truthy value + `#use_instantiated_fixtures?` is `false` by default + `#use_instantiated_fixtures?` is `false` by default `#use_transactional_fixtures=` - sets `use_transactional_fixtures` to the provided value changes `use_transactional_fixtures?` to the true for a truthy value + sets `use_transactional_fixtures` to the provided value + `#use_instantiated_fixtures=` + changes `use_instantiated_fixtures?` to the true for a truthy value + sets `use_instantiated_fixtures` to the provided value + `#infer_base_class_for_anonymous_controllers=` + changes `infer_base_class_for_anonymous_controllers?` to the true for a truthy value + sets `infer_base_class_for_anonymous_controllers` to the provided value `#rendering_views=` changes `rendering_views?` to the true for a truthy value sets `rendering_views` to the provided value - `#use_instantiated_fixtures=` - sets `use_instantiated_fixtures` to the provided value - changes `use_instantiated_fixtures?` to the true for a truthy value + `#render_views=` + sets `render_views?` to the truthiness of the provided value + `#global_fixtures=` + changes `global_fixtures?` to the true for a truthy value + sets `global_fixtures` to the provided value + `#fixture_paths=` + changes `fixture_paths?` to the true for a truthy value + sets `fixture_paths` to the provided value #infer_spec_type_from_file_location! - sets the type to `:request` for file path `spec/requests` + sets the type to `:model` for file path `spec/models` + sets the type to `:controller` for file path `spec/controllers` + sets the type to `:request` for file path `spec/integration` + sets the type to `:request` for file path `spec/api` sets the type to `:view` for file path `spec/views` + sets the type to `:feature` for file path `spec/features` sets the type to `:routing` for file path `spec/routing` + sets the type to `:request` for file path `spec/requests` sets the type to `:helper` for file path `spec/helpers` sets the type to `:mailer` for file path `spec/mailers` - sets the type to `:request` for file path `spec/api` - sets the type to `:request` for file path `spec/integration` - sets the type to `:model` for file path `spec/models` - sets the type to `:feature` for file path `spec/features` - sets the type to `:controller` for file path `spec/controllers` - clears ActionMailer::Base::Deliveries after each example - only has deliveries from this test (e.g. from email_2@example.com) (PENDING: Temporarily skipped with xit) - only has deliveries from this test (e.g. from email@example.com) (PENDING: Temporarily skipped with xit) -should have_xxx - works with ActiveRecord::Associations::CollectionProxy +RSpec::Rails::RailsExampleGroup + supports tagged_logger + does not leak context between example groups + will not leak ActiveSupport::CurrentAttributes between examples -ActiveModel support +RSpec::Rails::ViewSpecMethods + .remove_extra_params_accessors_from + when accessors are not defined + does nothing + when accessors are defined + removes them + .add_extra_params_accessors_to + when accessors are not yet defined + adds them as instance methods + the added #extra_params reader + raises an error when a user tries to mutate it + when accessors are already defined + does not redefine them + +HaveEnqueuedMail matchers + have_enqueued_mail + passes when negated + generates a failure message with arguments + passes with at_least when enqueued emails are over the limit + passes with :twice count + fails with with block with incorrect data + fails when negated and mail is enqueued + passes when negated with 0 arguments and a non-mailer job is enqueued + throws descriptive error when no test adapter set + accepts composable matchers as an at date + passes when deliver_later is called with a queue argument + passes with :once count + passes multiple arguments to with block + generates a failure message with unmatching enqueued mail jobs + passes when deliver_later is called with a wait_until argument + passes with multiple emails + generates a failure message when given 0 argument + matches based on mailer class and method name + counts only emails enqueued in the block + passes for mailer methods that accept arguments when the provided argument matcher is not used + passes when only given mailer argument + passes with provided argument matchers + generates a failure message with at least hint + passes when using the enqueue_mail alias + passes with at_most when enqueued emails are under the limit + passes with :thrice count + passes when negated with only mailer arguments + fails when too many emails are enqueued + passes for mailer methods with default arguments + passes when using the have_enqueued_email alias + passes when using the enqueue_email alias + passes when a mailer method is called with deliver_later + passes when negated with 0 arguments + ensure that the right mailer is enqueued + only calls with block if other conditions are met + generates a failure message with at most hint + generates a failure message + generates a failure message with on_queue + generates a failure message when given only mailer argument + generates a failure message with at + passes when given 0 arguments + mailer job is unified + passes when given a global id serialized argument + passes when mailer is parameterized + passes with provided argument matchers + matches arguments when mailer has only args + passes when using a mailer with `delivery_job` set to a sub class of `ActionMailer::DeliveryJob` + passes when mixing parameterized and non-parameterized emails + fails if the arguments do not match the mailer method's signature + verifying the arguments passed match the mailer's signature + fails if there is a mismatch + with partial double verification disabled + skips signature checks + when partial double verification is temporarily suspended + skips signature checks + when parameterized + passes with provided argument matchers (PENDING: This version of Rails does not support parameterized mailers) + passes when mixing parameterized and non-parameterized emails (PENDING: This version of Rails does not support parameterized mailers) + fails if the arguments do not match the mailer method's signature (PENDING: This version of Rails does not support parameterized mailers) + passes when mailer is parameterized (PENDING: This version of Rails does not support parameterized mailers) + +be_routable + provides a description + with should + fails if routes do not recognize the path + passes if routes recognize the path + with should_not + fails if routes recognize the path + passes if routes do not recognize the path + +RSpec::Rails::AssertionDelegator + provides a module that delegates assertion methods to an isolated class + does not delegate method_missing + delegates back to the including instance for methods the assertion module requires + +ActiveSupport::Relation match_array matcher + fails if the scope encompasses fewer records than on the right hand side + fails if the scope encompasses more records than on the right hand side + verifies that the scope returns the records on the right hand side, regardless of order + +RSpec::Rails::SystemExampleGroup + #driver + sets :rack_test driver using by before_action + calls :driven_by method only once + uses :selenium_chrome_headless driver by default + #metadata + still raises correctly if you use it for something else + fakes out the rails expected method + behaves like an rspec-rails example group mixin + adds does not add `:type` metadata on inclusion + when `infer_spec_type_from_file_location!` is configured + includes itself in example groups tagged with `type: :system` + for an example group defined in a file in the .\spec\system\ directory + applies configured `before(:context)` hooks with `type: :system` metadata + tags groups in that directory with `type: :system` + allows users to override the type + includes itself in the example group + for an example group defined in a file in the ./spec/system/ directory + includes itself in the example group + allows users to override the type + applies configured `before(:context)` hooks with `type: :system` metadata + tags groups in that directory with `type: :system` + when `infer_spec_type_from_file_location!` is not configured + includes itself in example groups tagged with `type: :system` + for an example group defined in a file in the ./spec/system/ directory + does not include itself in the example group + does not tag groups in that directory with `type: :system` + for an example group defined in a file in the .\spec\system\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :system` + #after + sets the :extra_failure_lines metadata to an array of STDOUT lines (PENDING: Temporarily skipped with xit) + #method_name + converts special characters to underscores + handles long method names which include unicode characters + hook order + calls Capybara.reset_sessions (TestUnit after_teardown) after any after hooks + #take_screenshot + handles Rails calling metadata (PENDING: Temporarily skipped with xit) + +ActiveRecord support with partial double verification enabled - allows you to stub instances of `ActiveModel` - allows you to stub `ActiveModel` + allows you to stub `ActiveRecord::Base` + allows you to stub abstract classes with partial double verification disabled - allows you to stub instances of `ActiveModel` - allows you to stub `ActiveModel` + allows you to stub `ActiveRecord::Base` + allows you to stub abstract classes -RSpec::Rails::MailboxExampleGroup - #have_bounced - does not raise otherwise - raises on unbounced mail +send_email + with to_not + checks email sending by no params + fails with a clear message for negated version + fails for multiple matches + fails with a clear message + checks email sending by all params together + fails with a clear message when no emails were sent + with a custom negated version defined + works with a negated version + fails with a clear message + with a compound negated version + works when first matching fails + works when both matchings pass + works when second matching fails + with compound matching + works when second matching fails + works when first matching fails + works when both matchings pass + +RSpec::Rails::RoutingExampleGroup + named routes + delegates them to the route_set behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :mailbox` - for an example group defined in a file in the ./spec/mailboxes/ directory - does not tag groups in that directory with `type: :mailbox` + includes itself in example groups tagged with `type: :routing` + for an example group defined in a file in the .\spec\routing\ directory does not include itself in the example group - for an example group defined in a file in the .\spec\mailboxes\ directory + does not tag groups in that directory with `type: :routing` + for an example group defined in a file in the ./spec/routing/ directory + does not tag groups in that directory with `type: :routing` does not include itself in the example group - does not tag groups in that directory with `type: :mailbox` when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :mailbox` - for an example group defined in a file in the ./spec/mailboxes/ directory - applies configured `before(:context)` hooks with `type: :mailbox` metadata - includes itself in the example group - tags groups in that directory with `type: :mailbox` + includes itself in example groups tagged with `type: :routing` + for an example group defined in a file in the .\spec\routing\ directory + applies configured `before(:context)` hooks with `type: :routing` metadata allows users to override the type - for an example group defined in a file in the .\spec\mailboxes\ directory + includes itself in the example group + tags groups in that directory with `type: :routing` + for an example group defined in a file in the ./spec/routing/ directory + tags groups in that directory with `type: :routing` allows users to override the type - tags groups in that directory with `type: :mailbox` includes itself in the example group - applies configured `before(:context)` hooks with `type: :mailbox` metadata - #have_failed - does not raise otherwise - raises on unfailed mail - #have_been_delivered - raises on undelivered mail - does not raise otherwise - #process - sends mail to the mailbox + applies configured `before(:context)` hooks with `type: :routing` metadata -RSpec::Rails::FeatureExampleGroup - includes Rails route helpers +ActionMailbox matchers + receive_inbound_email + passes when it receives inbound email + passes when negated when it doesn't receive inbound email + fails when negated when it receives inbound email + fails when it doesn't receive inbound email + +RSpec::Rails + has no malformed whitespace + +be_valid matcher + uses a custom failure message if provided + includes the error messages for simple implementations of error messages + includes a brief error message for the simplest implementation of validity + includes a failure message for the negative case + includes the validation context if provided + includes the error messages in the failure message + includes a brief error message when error message is wrong arity + does not include the validation context if not provided + +have_rendered + with should_not + when fails due to some other exception + raises that exception + when assert_template passes + fails with custom failure message + when assert_template fails + passes + when fails with a redirect + gives informative error message + with a badly formatted error message + falls back to something informative + given a hash + delegates to assert_template + given a string + delegates to assert_template + with should + when assert_template passes + passes + when fails due to some other exception + raises that exception + when assert_template fails + uses failure message from assert_template + given a symbol + converts to_s and delegates to assert_template + +RSpec::Rails::JobExampleGroup behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion + when `infer_spec_type_from_file_location!` is configured + includes itself in example groups tagged with `type: :job` + for an example group defined in a file in the .\spec\jobs\ directory + includes itself in the example group + tags groups in that directory with `type: :job` + applies configured `before(:context)` hooks with `type: :job` metadata + allows users to override the type + for an example group defined in a file in the ./spec/jobs/ directory + tags groups in that directory with `type: :job` + applies configured `before(:context)` hooks with `type: :job` metadata + allows users to override the type + includes itself in the example group when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :feature` - for an example group defined in a file in the .\spec\features\ directory + includes itself in example groups tagged with `type: :job` + for an example group defined in a file in the .\spec\jobs\ directory + does not tag groups in that directory with `type: :job` does not include itself in the example group - does not tag groups in that directory with `type: :feature` - for an example group defined in a file in the ./spec/features/ directory + for an example group defined in a file in the ./spec/jobs/ directory + does not tag groups in that directory with `type: :job` does not include itself in the example group - does not tag groups in that directory with `type: :feature` + +route_to + provides a description + uses failure message from assert_recognizes + delegates to assert_recognizes + with should_not + when an exception is raised + raises that exception + when assert_recognizes passes + fails with custom message + when assert_recognizes fails with an assertion failure + passes + when assert_recognizes fails with a routing error + passes + with shortcut syntax + routes with nested query parameters + routes with multiple query parameters + routes with one query parameter + routes without extra options + routes with extra options + with should + when an exception is raised + raises that exception + when assert_recognizes passes + passes + when assert_recognizes fails with an assertion failure + fails with message from assert_recognizes + when assert_recognizes fails with a routing error + fails with message from assert_recognizes + +RSpec::Rails::ChannelExampleGroup + behaves like an rspec-rails example group mixin + adds does not add `:type` metadata on inclusion when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :feature` - for an example group defined in a file in the .\spec\features\ directory - applies configured `before(:context)` hooks with `type: :feature` metadata + includes itself in example groups tagged with `type: :channel` + for an example group defined in a file in the .\spec\channels\ directory + applies configured `before(:context)` hooks with `type: :channel` metadata + tags groups in that directory with `type: :channel` includes itself in the example group allows users to override the type - tags groups in that directory with `type: :feature` - for an example group defined in a file in the ./spec/features/ directory - includes itself in the example group - tags groups in that directory with `type: :feature` + for an example group defined in a file in the ./spec/channels/ directory + tags groups in that directory with `type: :channel` allows users to override the type - applies configured `before(:context)` hooks with `type: :feature` metadata - when nested inside a request example group - includes Rails route helpers - #visit - raises an error informing about missing Capybara - is resistant to load order errors + includes itself in the example group + applies configured `before(:context)` hooks with `type: :channel` metadata + when `infer_spec_type_from_file_location!` is not configured + includes itself in example groups tagged with `type: :channel` + for an example group defined in a file in the .\spec\channels\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :channel` + for an example group defined in a file in the ./spec/channels/ directory + does not include itself in the example group + does not tag groups in that directory with `type: :channel` + +be_a_new matcher + new record + right class + passes + wrong class + fails + existing record + right class + fails + wrong class + fails + #with + right class and new record + all attributes same + passes + no attributes same + fails + one attribute same + passes + with composable matchers + one attribute is a composable matcher + passes + fails + matcher is wrong type + fails + two attributes are composable matchers + only one matcher present in actual + fails + both matchers present in actual + passes + one attribute value not the same + fails + wrong class and existing record + all attributes same + fails + one attribute value not the same + fails + no attributes same + fails ActiveJob matchers - have_been_performed - fails when job is not performed - counts all performed jobs - passes when negated - passes with default jobs count (exactly one) - have_performed_job - passes multiple arguments to with block - fails when too many jobs performed - passes with :twice count - passes with at_least count when performed jobs are over limit - generates failure message with at most hint - passes with :thrice count - only calls with block if other conditions are met - passes with provided queue name as symbol - reports correct number in fail error message - passes with provided arguments containing global id object - passes with provided at date - fails with with block with incorrect data - passes with :once count - throws descriptive error when no test adapter set - passes with default jobs count (exactly one) - passes with at_most count when performed jobs are under limit - counts only jobs performed in block - passes with job name - passes with multiple jobs - passes with provided queue name as string - fails when job is not performed - generates failure message with at least hint - passes when negated - passes deserialized arguments to with block - fails when negated and job is performed - passes with provided arguments - generates failure message with all provided options - passes with provided argument matchers - raises ArgumentError when no Proc passed to expect + Active Job test helpers + does not raise that "assert_nothing_raised" is undefined have_been_enqueued - counts all enqueued jobs - passes when negated passes with default jobs count (exactly one) - fails when negated and several jobs enqueued accepts composable matchers as an at date + fails when negated and several jobs enqueued + passes when negated + counts all enqueued jobs fails when job is not enqueued verifying the arguments passed match the job's signature fails if there is an arity mismatch fails if there is a keyword/positional arguments mismatch - when partial double verification is temporarily suspended - skips signature checks with partial double verification disabled skips signature checks - Active Job test helpers - does not raise that "assert_nothing_raised" is undefined + when partial double verification is temporarily suspended + skips signature checks have_enqueued_job - passes with at_most count when enqueued jobs are under limit - passes with multiple jobs - passes with job name - fails when too many jobs enqueued - accepts composable matchers as an at date + passes deserialized arguments to with block + counts only jobs enqueued in block passes when negated - raises ArgumentError when no Proc passed to expect - generates failure message with all provided options - does not have an enqueued job when providing at of :no_wait and there is a wait + passes with at_least count when enqueued jobs are over limit + passes with provided arguments + passes with :twice count + passes with multiple jobs + throws descriptive error when no test adapter set + fails with with block with incorrect data passes with provided queue name as string + passes with provided queue name as symbol passes when using alias - passes with provided argument matchers - warns when time offsets are inprecise - only calls with block if other conditions are met - has an enqueued job when providing at of :no_wait and there is no wait - reports correct number in fail error message - passes with :twice count + fails when job is not enqueued + passes with :thrice count + passes with Time passes with provided arguments containing global id object + only calls with block if other conditions are met + fails when too many jobs enqueued + passes with provided priority number as string + fails when the priority was set to a different value fails when negated and several jobs enqueued - works with time offsets - fails with with block with incorrect data + reports correct number in fail error message + passes with default jobs count (exactly one) passes with ActiveSupport::TimeWithZone - throws descriptive error when no test adapter set - fails when the priority was set to a different value + passes with provided at date + passes multiple arguments to with block + passes with provided at time + accepts matchers as arguments to at_priority (PENDING: No reason given) + has an enqueued job when providing at and there is no wait + warns when time offsets are inprecise generates failure message with at most hint - ignores undeserializable arguments + fails when negated and job is enqueued + accepts composable matchers as an at date has an enqueued job when not providing at and there is a wait - passes with default jobs count (exactly one) + does not have an enqueued job when providing at of :no_wait and there is a wait + has an enqueued job when providing at of :no_wait and there is no wait passes with :once count - has an enqueued job when providing at and there is no wait - fails when job is not enqueued - passes with provided at date - fails when negated and job is enqueued - passes with provided priority number as integer + passes with job name + generates failure message with all provided options + passes with provided argument matchers generates failure message with at least hint - passes with provided priority number as string - accepts matchers as arguments to at_priority (PENDING: No reason given) - passes with :thrice count - passes with at_least count when enqueued jobs are over limit - passes multiple arguments to with block - passes with provided at time - passes with provided queue name as symbol fails when the priority wan't set - passes deserialized arguments to with block - passes with Time - passes with provided arguments - counts only jobs enqueued in block + ignores undeserializable arguments + raises ArgumentError when no Proc passed to expect + passes with provided priority number as integer + works with time offsets + passes with at_most count when enqueued jobs are under limit when job is retried passes with reenqueued job when previously enqueued jobs were performed counts newly enqueued jobs verifying the arguments passed match the job's signature - fails if there is an arity mismatch fails if there is a keyword/positional arguments mismatch + fails if there is an arity mismatch with partial double verification disabled skips signature checks without rspec-mocks loaded skips signature checks when partial double verification is temporarily suspended skips signature checks + have_been_performed + fails when job is not performed + passes when negated + counts all performed jobs + passes with default jobs count (exactly one) + have_performed_job + generates failure message with at least hint + raises ArgumentError when no Proc passed to expect + counts only jobs performed in block + fails with with block with incorrect data + passes with default jobs count (exactly one) + passes with at_most count when performed jobs are under limit + reports correct number in fail error message + passes multiple arguments to with block + passes with :thrice count + passes with job name + generates failure message with at most hint + passes deserialized arguments to with block + passes with provided at date + passes when negated + passes with multiple jobs + passes with provided arguments + passes with provided arguments containing global id object + passes with :once count + throws descriptive error when no test adapter set + passes with provided queue name as string + passes with at_least count when performed jobs are over limit + only calls with block if other conditions are met + passes with :twice count + fails when job is not performed + fails when too many jobs performed + fails when negated and job is performed + passes with provided queue name as symbol + passes with provided argument matchers + generates failure message with all provided options -render_template - given a symbol - converts to_s and delegates to assert_template - with should_not - when assert_template fails - passes - when fails due to some other exception - raises that exception - when fails with a redirect - gives informative error message - with a badly formatted error message - falls back to something informative - when assert_template passes - fails with custom failure message - given a string - delegates to assert_template - given a hash - delegates to assert_template - with should - when assert_template fails - uses failure message from assert_template - when fails due to some other exception - raises that exception - when assert_template passes - passes - -RSpec::Rails::AssertionDelegator - does not delegate method_missing - provides a module that delegates assertion methods to an isolated class - delegates back to the including instance for methods the assertion module requires - -RSpec::Rails::MinitestAssertionAdapter - exposes assert_same to host examples - exposes assert_operator to host examples - exposes refute_pattern to host examples - exposes assert_in_epsilon to host examples - exposes assert_path_exists to host examples - exposes assert_includes to host examples - exposes refute_operator to host examples - exposes assert_respond_to to host examples - exposes assert_output to host examples - does not leak TestUnit specific methods into the AssertionDelegator - exposes refute_predicate to host examples - exposes assert_equal to host examples - exposes assert_instance_of to host examples - exposes refute_equal to host examples - exposes flunk to host examples - exposes refute_match to host examples - exposes refute to host examples - exposes assert_kind_of to host examples - exposes assert to host examples - exposes refute_nil to host examples - does not expose internal methods of Minitest - exposes assert_predicate to host examples - exposes assert_pattern to host examples - exposes assert_send to host examples - exposes assert_nil to host examples - exposes assert_in_delta to host examples - does not expose Minitest's message method - exposes refute_same to host examples - exposes refute_in_epsilon to host examples - exposes refute_path_exists to host examples - exposes assert_match to host examples - exposes refute_includes to host examples - exposes assert_silent to host examples - exposes refute_kind_of to host examples - exposes refute_respond_to to host examples - exposes refute_in_delta to host examples - exposes assert_empty to host examples - exposes refute_empty to host examples - exposes refute_instance_of to host examples - exposes assert_raises to host examples - exposes assert_throws to host examples - -RSpec::Rails::JobExampleGroup +RSpec::Rails::HelperExampleGroup + provides a controller_path based on the helper module's name behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :job` - for an example group defined in a file in the .\spec\jobs\ directory + includes itself in example groups tagged with `type: :helper` + for an example group defined in a file in the .\spec\helpers\ directory + does not tag groups in that directory with `type: :helper` does not include itself in the example group - does not tag groups in that directory with `type: :job` - for an example group defined in a file in the ./spec/jobs/ directory + for an example group defined in a file in the ./spec/helpers/ directory + does not tag groups in that directory with `type: :helper` does not include itself in the example group - does not tag groups in that directory with `type: :job` when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :job` - for an example group defined in a file in the ./spec/jobs/ directory - allows users to override the type - applies configured `before(:context)` hooks with `type: :job` metadata - tags groups in that directory with `type: :job` - includes itself in the example group - for an example group defined in a file in the .\spec\jobs\ directory + includes itself in example groups tagged with `type: :helper` + for an example group defined in a file in the ./spec/helpers/ directory includes itself in the example group - tags groups in that directory with `type: :job` + applies configured `before(:context)` hooks with `type: :helper` metadata + tags groups in that directory with `type: :helper` allows users to override the type - applies configured `before(:context)` hooks with `type: :job` metadata + for an example group defined in a file in the .\spec\helpers\ directory + allows users to override the type + includes itself in the example group + applies configured `before(:context)` hooks with `type: :helper` metadata + tags groups in that directory with `type: :helper` + #helper + includes ApplicationHelper + returns the instance of AV::Base provided by AV::TC::Behavior -RSpec::Rails::ControllerExampleGroup - handles methods invoked via `method_missing` that use keywords - includes routing matchers - in a namespace - controller name - sets the name as 'AnonymousController' if the controller is abstract - sets the name according to the defined controller namespace if it is not anonymous - #bypass_rescue - overrides the rescue_with_handler method on the controller to raise submitted error +ActiveModel support + with partial double verification enabled + allows you to stub instances of `ActiveModel` + allows you to stub `ActiveModel` + with partial double verification disabled + allows you to stub instances of `ActiveModel` + allows you to stub `ActiveModel` + +RSpec::Rails::FeatureExampleGroup + includes Rails route helpers + when nested inside a request example group + includes Rails route helpers + #visit + is resistant to load order errors + raises an error informing about missing Capybara behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :controller` - for an example group defined in a file in the .\spec\controllers\ directory - does not tag groups in that directory with `type: :controller` - does not include itself in the example group - for an example group defined in a file in the ./spec/controllers/ directory - does not include itself in the example group - does not tag groups in that directory with `type: :controller` when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :controller` - for an example group defined in a file in the .\spec\controllers\ directory + includes itself in example groups tagged with `type: :feature` + for an example group defined in a file in the .\spec\features\ directory + tags groups in that directory with `type: :feature` includes itself in the example group - tags groups in that directory with `type: :controller` - applies configured `before(:context)` hooks with `type: :controller` metadata + applies configured `before(:context)` hooks with `type: :feature` metadata allows users to override the type - for an example group defined in a file in the ./spec/controllers/ directory - includes itself in the example group - applies configured `before(:context)` hooks with `type: :controller` metadata - tags groups in that directory with `type: :controller` + for an example group defined in a file in the ./spec/features/ directory + tags groups in that directory with `type: :feature` + applies configured `before(:context)` hooks with `type: :feature` metadata allows users to override the type - with inferred anonymous controller - defaults to inferring anonymous controller class - when infer_base_class_for_anonymous_controllers is true - infers the anonymous controller class when no ApplicationController is present - infers the anonymous controller class - when infer_base_class_for_anonymous_controllers is false - sets the anonymous controller class to ActiveController::Base when no ApplicationController is present - sets the anonymous controller class to ApplicationController - #controller - calls NamedRouteCollection#route_defined? when it checks that given route is defined or not - delegates named route helpers to the underlying controller - with explicit subject - uses the specified subject instead of the controller - controller name - sets name as AnonymousController if the controller is abstract - sets the name according to defined controller if it is not anonymous - sets the name as AnonymousController if it's anonymous - sets name as AnonymousController if it inherits outer group's anonymous controller - sets name as AnonymousController if defined as ApplicationController - with implicit subject - doesn't cause let definition priority to be changed - uses the controller as the subject + includes itself in the example group + when `infer_spec_type_from_file_location!` is not configured + includes itself in example groups tagged with `type: :feature` + for an example group defined in a file in the ./spec/features/ directory + does not tag groups in that directory with `type: :feature` + does not include itself in the example group + for an example group defined in a file in the .\spec\features\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :feature` -RSpec::Rails::ChannelExampleGroup +RSpec::Rails::RequestExampleGroup behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :channel` - for an example group defined in a file in the ./spec/channels/ directory + includes itself in example groups tagged with `type: :request` + for an example group defined in a file in the .\spec\requests\ directory + does not tag groups in that directory with `type: :request` does not include itself in the example group - does not tag groups in that directory with `type: :channel` - for an example group defined in a file in the .\spec\channels\ directory - does not tag groups in that directory with `type: :channel` + for an example group defined in a file in the ./spec/integration/ directory + does not include itself in the example group + does not tag groups in that directory with `type: :request` + for an example group defined in a file in the ./spec/requests/ directory + does not include itself in the example group + does not tag groups in that directory with `type: :request` + for an example group defined in a file in the .\spec\integration\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :request` + for an example group defined in a file in the ./spec/api/ directory + does not tag groups in that directory with `type: :request` + does not include itself in the example group + for an example group defined in a file in the .\spec\api\ directory + does not tag groups in that directory with `type: :request` does not include itself in the example group when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :channel` - for an example group defined in a file in the .\spec\channels\ directory + includes itself in example groups tagged with `type: :request` + for an example group defined in a file in the ./spec/requests/ directory + applies configured `before(:context)` hooks with `type: :request` metadata includes itself in the example group - applies configured `before(:context)` hooks with `type: :channel` metadata allows users to override the type - tags groups in that directory with `type: :channel` - for an example group defined in a file in the ./spec/channels/ directory + tags groups in that directory with `type: :request` + for an example group defined in a file in the .\spec\integration\ directory + applies configured `before(:context)` hooks with `type: :request` metadata allows users to override the type - applies configured `before(:context)` hooks with `type: :channel` metadata - tags groups in that directory with `type: :channel` includes itself in the example group + tags groups in that directory with `type: :request` + for an example group defined in a file in the ./spec/api/ directory + tags groups in that directory with `type: :request` + allows users to override the type + applies configured `before(:context)` hooks with `type: :request` metadata + includes itself in the example group + for an example group defined in a file in the .\spec\api\ directory + applies configured `before(:context)` hooks with `type: :request` metadata + tags groups in that directory with `type: :request` + allows users to override the type + includes itself in the example group + for an example group defined in a file in the ./spec/integration/ directory + allows users to override the type + includes itself in the example group + applies configured `before(:context)` hooks with `type: :request` metadata + tags groups in that directory with `type: :request` + for an example group defined in a file in the .\spec\requests\ directory + includes itself in the example group + allows users to override the type + applies configured `before(:context)` hooks with `type: :request` metadata + tags groups in that directory with `type: :request` -RSpec::Rails::RailsExampleGroup - supports tagged_logger - will not leak ActiveSupport::CurrentAttributes between examples - does not leak context between example groups +RSpec::Rails::FixtureSupport + handles namespaced fixtures + with use_transactional_tests set to false + does not wrap the test in a transaction + with use_transactional_tests set to true + works with #uses_transaction helper + with use_transactional_fixtures set to false + still supports fixture_path/fixture_paths RSpec::Rails::HelperExampleGroup::ClassMethods determine_default_helper_class @@ -1768,808 +2258,378 @@ RSpec::Rails::ModelExampleGroup behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :model` - for an example group defined in a file in the ./spec/models/ directory - does not include itself in the example group - does not tag groups in that directory with `type: :model` - for an example group defined in a file in the .\spec\models\ directory - does not tag groups in that directory with `type: :model` - does not include itself in the example group when `infer_spec_type_from_file_location!` is configured includes itself in example groups tagged with `type: :model` - for an example group defined in a file in the ./spec/models/ directory - allows users to override the type - applies configured `before(:context)` hooks with `type: :model` metadata - includes itself in the example group - tags groups in that directory with `type: :model` for an example group defined in a file in the .\spec\models\ directory - tags groups in that directory with `type: :model` - allows users to override the type includes itself in the example group applies configured `before(:context)` hooks with `type: :model` metadata - -route_to - delegates to assert_recognizes - uses failure message from assert_recognizes - provides a description - with should_not - when assert_recognizes fails with an assertion failure - passes - when assert_recognizes passes - fails with custom message - when assert_recognizes fails with a routing error - passes - when an exception is raised - raises that exception - with should - when assert_recognizes fails with a routing error - fails with message from assert_recognizes - when assert_recognizes fails with an assertion failure - fails with message from assert_recognizes - when assert_recognizes passes - passes - when an exception is raised - raises that exception - with shortcut syntax - routes with extra options - routes with one query parameter - routes with nested query parameters - routes with multiple query parameters - routes without extra options - -RSpec::Rails - has no malformed whitespace - -redirect_to - with should - when assert_redirected_to passes - passes - when assert_redirected_to fails - uses failure message from assert_redirected_to - when fails due to some other exception - raises that exception - with should_not - when assert_redirected_to fails - passes - when fails due to some other exception - raises that exception - when assert_redirected_to passes - fails with custom failure message - -RSpec::Rails::ViewSpecMethods - .remove_extra_params_accessors_from - when accessors are not defined - does nothing - when accessors are defined - removes them - .add_extra_params_accessors_to - when accessors are already defined - does not redefine them - when accessors are not yet defined - adds them as instance methods - the added #extra_params reader - raises an error when a user tries to mutate it - -ActiveRecord support - with partial double verification disabled - allows you to stub abstract classes - allows you to stub `ActiveRecord::Base` - with partial double verification enabled - allows you to stub abstract classes - allows you to stub `ActiveRecord::Base` - -be_new_record - a persisted record - fails with custom failure message - fails - a new record - fails with custom failure message - passes - -send_email - checks email sending by all params together - fails for multiple matches - checks email sending by no params - fails with a clear message - with to_not - fails with a clear message for negated version - fails with a clear message when no emails were sent - with a custom negated version defined - works with a negated version - fails with a clear message - with a compound negated version - works when first matching fails - works when both matchings pass - works when second matching fails - with compound matching - works when second matching fails - works when first matching fails - works when both matchings pass - -RSpec::Rails::SetupAndTeardownAdapter - .setup - registers before hooks in the order setup is received - registers prepend_before hooks for the Rails' setup methods - registers teardown hooks in the order setup is received - -RSpec::Rails::SystemExampleGroup - #after - sets the :extra_failure_lines metadata to an array of STDOUT lines (PENDING: Temporarily skipped with xit) - #metadata - still raises correctly if you use it for something else - fakes out the rails expected method - behaves like an rspec-rails example group mixin - adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :system` - for an example group defined in a file in the ./spec/system/ directory - applies configured `before(:context)` hooks with `type: :system` metadata - includes itself in the example group allows users to override the type - tags groups in that directory with `type: :system` - for an example group defined in a file in the .\spec\system\ directory + tags groups in that directory with `type: :model` + for an example group defined in a file in the ./spec/models/ directory allows users to override the type includes itself in the example group - tags groups in that directory with `type: :system` - applies configured `before(:context)` hooks with `type: :system` metadata + applies configured `before(:context)` hooks with `type: :model` metadata + tags groups in that directory with `type: :model` when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :system` - for an example group defined in a file in the ./spec/system/ directory + includes itself in example groups tagged with `type: :model` + for an example group defined in a file in the ./spec/models/ directory + does not tag groups in that directory with `type: :model` does not include itself in the example group - does not tag groups in that directory with `type: :system` - for an example group defined in a file in the .\spec\system\ directory + for an example group defined in a file in the .\spec\models\ directory does not include itself in the example group - does not tag groups in that directory with `type: :system` - #take_screenshot - handles Rails calling metadata (PENDING: Temporarily skipped with xit) - hook order - calls Capybara.reset_sessions (TestUnit after_teardown) after any after hooks - #driver - sets :rack_test driver using by before_action - uses :selenium_chrome_headless driver by default - calls :driven_by method only once - #method_name - handles long method names which include unicode characters - converts special characters to underscores + does not tag groups in that directory with `type: :model` -HaveEnqueuedMail matchers - have_enqueued_mail - passes when negated with only mailer arguments - passes with multiple emails - passes with :thrice count - only calls with block if other conditions are met - matches based on mailer class and method name - passes when deliver_later is called with a wait_until argument - generates a failure message with at most hint - passes for mailer methods with default arguments - throws descriptive error when no test adapter set - generates a failure message with at - passes when deliver_later is called with a queue argument - generates a failure message with unmatching enqueued mail jobs - passes multiple arguments to with block - generates a failure message when given only mailer argument - generates a failure message with arguments - fails with with block with incorrect data - counts only emails enqueued in the block - generates a failure message when given 0 argument - passes when only given mailer argument - passes with at_most when enqueued emails are under the limit - passes with :once count - passes when negated - generates a failure message - fails when too many emails are enqueued - passes when negated with 0 arguments - fails when negated and mail is enqueued - passes for mailer methods that accept arguments when the provided argument matcher is not used - passes when negated with 0 arguments and a non-mailer job is enqueued - ensure that the right mailer is enqueued - passes with at_least when enqueued emails are over the limit - generates a failure message with on_queue - accepts composable matchers as an at date - generates a failure message with at least hint - passes when using the enqueue_mail alias - passes when using the enqueue_email alias - passes when a mailer method is called with deliver_later - passes when given 0 arguments - passes with provided argument matchers - passes with :twice count - passes when using the have_enqueued_email alias - when parameterized - passes when mailer is parameterized (PENDING: This version of Rails does not support parameterized mailers) - passes with provided argument matchers (PENDING: This version of Rails does not support parameterized mailers) - fails if the arguments do not match the mailer method's signature (PENDING: This version of Rails does not support parameterized mailers) - passes when mixing parameterized and non-parameterized emails (PENDING: This version of Rails does not support parameterized mailers) - mailer job is unified - passes with provided argument matchers - passes when given a global id serialized argument - passes when using a mailer with `delivery_job` set to a sub class of `ActionMailer::DeliveryJob` - passes when mixing parameterized and non-parameterized emails - matches arguments when mailer has only args - passes when mailer is parameterized - fails if the arguments do not match the mailer method's signature - verifying the arguments passed match the mailer's signature - fails if there is a mismatch - when partial double verification is temporarily suspended - skips signature checks - with partial double verification disabled - skips signature checks +RSpec::Rails::MinitestAssertionAdapter + exposes assert_respond_to to host examples + exposes assert_in_epsilon to host examples + exposes assert_kind_of to host examples + exposes refute_in_epsilon to host examples + does not expose Minitest's message method + exposes refute_includes to host examples + exposes refute_empty to host examples + exposes assert_pattern to host examples + exposes refute_same to host examples + exposes refute_instance_of to host examples + exposes refute_path_exists to host examples + exposes refute to host examples + exposes assert_throws to host examples + exposes assert_in_delta to host examples + exposes assert_instance_of to host examples + exposes flunk to host examples + exposes refute_in_delta to host examples + exposes assert_operator to host examples + exposes assert_nil to host examples + exposes assert_includes to host examples + exposes assert_raises to host examples + exposes refute_respond_to to host examples + exposes assert to host examples + exposes assert_output to host examples + exposes refute_pattern to host examples + does not leak TestUnit specific methods into the AssertionDelegator + exposes refute_match to host examples + exposes assert_silent to host examples + exposes refute_kind_of to host examples + exposes assert_path_exists to host examples + exposes refute_nil to host examples + exposes refute_operator to host examples + does not expose internal methods of Minitest + exposes assert_equal to host examples + exposes assert_empty to host examples + exposes refute_predicate to host examples + exposes assert_send to host examples + exposes assert_same to host examples + exposes assert_predicate to host examples + exposes refute_equal to host examples + exposes assert_match to host examples -have_rendered +render_template + with should + when assert_template passes + passes + when fails due to some other exception + raises that exception + when assert_template fails + uses failure message from assert_template + given a string + delegates to assert_template given a symbol converts to_s and delegates to assert_template + given a hash + delegates to assert_template with should_not - when assert_template passes - fails with custom failure message when fails with a redirect gives informative error message with a badly formatted error message falls back to something informative - when assert_template fails - passes - when fails due to some other exception - raises that exception - with should when assert_template passes - passes + fails with custom failure message when assert_template fails - uses failure message from assert_template + passes when fails due to some other exception raises that exception - given a hash - delegates to assert_template - given a string - delegates to assert_template - -RSpec::Rails::FixtureFileUploadSupport - with fixture paths set in config - resolves supports `Pathname` objects - resolves fixture file - with fixture path set in spec - resolves fixture file - with fixture path not set - resolves fixture using relative path - -RSpec::Rails::HelperExampleGroup - provides a controller_path based on the helper module's name - #helper - returns the instance of AV::Base provided by AV::TC::Behavior - includes ApplicationHelper - behaves like an rspec-rails example group mixin - adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :helper` - for an example group defined in a file in the .\spec\helpers\ directory - does not include itself in the example group - does not tag groups in that directory with `type: :helper` - for an example group defined in a file in the ./spec/helpers/ directory - does not tag groups in that directory with `type: :helper` - does not include itself in the example group - when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :helper` - for an example group defined in a file in the .\spec\helpers\ directory - allows users to override the type - tags groups in that directory with `type: :helper` - includes itself in the example group - applies configured `before(:context)` hooks with `type: :helper` metadata - for an example group defined in a file in the ./spec/helpers/ directory - tags groups in that directory with `type: :helper` - applies configured `before(:context)` hooks with `type: :helper` metadata - includes itself in the example group - allows users to override the type RSpec::Rails::MinitestLifecycleAdapter - allows let variables named 'send' invokes minitest lifecycle hooks at the appropriate times + allows let variables named 'send' -RSpec::Rails::ViewRendering - default - ActionController::Metal - renders views - ActionController::Base - does not render views in a nested group - does not render views - #render_views - propagates to examples in nested groups properly - in a nested group - leaves the parent group as/is - passes override to children - overrides the value inherited from the parent group - with true - tells examples to render views - with no args - tells examples to render views - with false - tells examples not to render views - with true - tells examples to render views - with false - overrides the global config if render_views is enabled there - tells examples not to render views - with no args - tells examples to render views - when render_views? is false - supports manipulating view paths with resolvers - supports manipulating view paths with arrays - supports manipulating view paths - with empty template resolver - works with custom resolvers - works with strings - -RSpec::Rails::FixtureSupport - handles namespaced fixtures - with use_transactional_tests set to false - does not wrap the test in a transaction - with use_transactional_tests set to true - works with #uses_transaction helper - with use_transactional_fixtures set to false - still supports fixture_path/fixture_paths - -ActionMailbox matchers - receive_inbound_email - passes when it receives inbound email - fails when negated when it receives inbound email - fails when it doesn't receive inbound email - passes when negated when it doesn't receive inbound email - -be_a_new matcher - new record - right class - passes - wrong class - fails - #with - right class and new record - one attribute same - passes - all attributes same - passes - with composable matchers - two attributes are composable matchers - both matchers present in actual - passes - only one matcher present in actual - fails - one attribute is a composable matcher - passes - fails - matcher is wrong type - fails - no attributes same - fails - one attribute value not the same - fails - wrong class and existing record - all attributes same - fails - one attribute value not the same - fails - no attributes same - fails - existing record - right class - fails - wrong class - fails - -RSpec::Rails::RoutingExampleGroup - named routes - delegates them to the route_set - behaves like an rspec-rails example group mixin - adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :routing` - for an example group defined in a file in the ./spec/routing/ directory - does not tag groups in that directory with `type: :routing` - does not include itself in the example group - for an example group defined in a file in the .\spec\routing\ directory - does not tag groups in that directory with `type: :routing` - does not include itself in the example group - when `infer_spec_type_from_file_location!` is configured - includes itself in example groups tagged with `type: :routing` - for an example group defined in a file in the .\spec\routing\ directory - tags groups in that directory with `type: :routing` - allows users to override the type - applies configured `before(:context)` hooks with `type: :routing` metadata - includes itself in the example group - for an example group defined in a file in the ./spec/routing/ directory - allows users to override the type - applies configured `before(:context)` hooks with `type: :routing` metadata - includes itself in the example group - tags groups in that directory with `type: :routing` +RSpec::Rails::SetupAndTeardownAdapter + .setup + registers before hooks in the order setup is received + registers prepend_before hooks for the Rails' setup methods + registers teardown hooks in the order setup is received have_broadcasted_to matchers have_broadcasted_to - generates failure message with at least hint - reports correct number in fail error message + has an appropriate description when aliased has an appropriate description not mentioning the channel when qualified with `#from_channel` - generates failure message when data not match - passes with :once count - generates failure message with at most hint - fails with with block with incorrect data - counts only messages sent in block - passes when using alias passes with at_most count when sent messages are under limit - fails when too many messages broadcast + passes with multiple streams + has an appropriate description including the expected contents when qualified with `#with` + has an appropriate description when stream name is passed as an array + throws descriptive error when no test adapter set + fails when negated and message is sent passes with at_least count when sent messages are over limit - raises ArgumentError when no Proc passed to expect - passes when negated + reports correct number in fail error message passes with provided data - passes with default messages count (exactly one) + fails with with block with incorrect data + passes when using alias + passes with provided data matchers with anything fails when message is not sent - throws descriptive error when no test adapter set - passes when using symbol target - has an appropriate description + counts only messages sent in block has an appropriate description including the matcher's description when qualified with `#with` and a composable matcher - has an appropriate description including the expected contents when qualified with `#with` - passes with provided data matchers with anything - fails when negated and message is sent - has an appropriate description when stream name is passed as an array - passes with provided data matchers passes with :twice count + fails when too many messages broadcast + passes with provided data matchers + passes when negated + raises ArgumentError when no Proc passed to expect + passes with :once count + passes when using symbol target passes with :thrice count - has an appropriate description when aliased - passes with multiple streams + generates failure message with at least hint + generates failure message when data not match + generates failure message with at most hint + has an appropriate description + passes with default messages count (exactly one) when object is passed as first argument when channel is present passes when channel can't be inferred raises exception -be_routable - provides a description - with should - passes if routes recognize the path - fails if routes do not recognize the path - with should_not - fails if routes recognize the path - passes if routes do not recognize the path +RSpec::Rails::FixtureFileUploadSupport + with fixture paths set in config + resolves supports `Pathname` objects + resolves fixture file + with fixture path set in spec + resolves fixture file + with fixture path not set + resolves fixture using relative path -be_valid matcher - includes a brief error message for the simplest implementation of validity - includes the validation context if provided - uses a custom failure message if provided - includes the error messages for simple implementations of error messages - includes a brief error message when error message is wrong arity - includes the error messages in the failure message - includes a failure message for the negative case - does not include the validation context if not provided +should have_xxx + works with ActiveRecord::Associations::CollectionProxy + +be_new_record + a persisted record + fails + fails with custom failure message + a new record + fails with custom failure message + passes have_stream matchers - have_stream_for + have_stream_from raises when no subscription started - fails with message raises ArgumentError when no subscription passed to expect passes + fails with message with negated form + passes fails with message + with composable matcher passes - have_stream_from + fails with message + have_stream_for passes - raises ArgumentError when no subscription passed to expect raises when no subscription started + raises ArgumentError when no subscription passed to expect fails with message - with composable matcher - fails with message - passes with negated form passes fails with message have_streams - does not allow usage raises when no subscription started + does not allow usage with negated form + raises ArgumentError when no subscription passed to expect passes with negated form fails with message - raises ArgumentError when no subscription passed to expect raises when no subscription started -have_http_status - http status :missing - behaves like does not use deprecated methods for Rails 5.2+ - does not use deprecated method for Rails >= 5.2 - http status :server_error - behaves like supports different response instances - returns false given another type - has a negated failure message reporting it was given another type - has a failure message reporting it was given another type - given an ActionDispatch::TestResponse - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - http status :not_found - behaves like supports different response instances - returns false given another type - has a failure message reporting it was given another type - has a negated failure message reporting it was given another type - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - with a nil status - raises an ArgumentError - http status :error - behaves like does not use deprecated methods for Rails 5.2+ - does not use deprecated method for Rails >= 5.2 - with a symbolic status - has a failure message reporting the expected and actual statuses - describes responding by the symbolic and associated numeric status code - raises an ArgumentError - has a negated failure message reporting the expected status code - behaves like supports different response instances - has a negated failure message reporting it was given another type - returns false given another type - has a failure message reporting it was given another type - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - matching a response - returns false for a response with a different code - returns true for a response with the equivalent code - with general status code group :successful - behaves like supports different response instances - has a negated failure message reporting it was given another type - returns false given another type - has a failure message reporting it was given another type - given an ActionDispatch::Response - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - behaves like status code matcher - has a negated failure message reporting the expected and actual status codes - has a failure message reporting the expected and actual status codes - describes behaves like status code matcher - matching a response - returns true for a response with code - returns false for a response with a different code - http status :successful - behaves like supports different response instances - has a negated failure message reporting it was given another type - returns false given another type - has a failure message reporting it was given another type - given an ActionDispatch::Response - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - with general status code group :redirect - behaves like status code matcher - has a negated failure message reporting the expected and actual status codes - describes behaves like status code matcher - has a failure message reporting the expected and actual status codes - matching a response - returns true for a response with code - returns false for a response with a different code - behaves like supports different response instances - has a negated failure message reporting it was given another type - has a failure message reporting it was given another type - returns false given another type - given something that acts as a Capybara::Session - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - with general status code group :error - behaves like supports different response instances - has a failure message reporting it was given another type - returns false given another type - has a negated failure message reporting it was given another type - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - behaves like status code matcher - has a failure message reporting the expected and actual status codes - has a negated failure message reporting the expected and actual status codes - describes behaves like status code matcher - matching a response - returns true for a response with code - returns false for a response with a different code - with general status code group :not_found - behaves like supports different response instances - returns false given another type - has a failure message reporting it was given another type - has a negated failure message reporting it was given another type - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - behaves like status code matcher - has a failure message reporting the expected and actual status codes - describes behaves like status code matcher - has a negated failure message reporting the expected and actual status codes - matching a response - returns true for a response with code - returns false for a response with a different code - with a numeric status code - has a failure message reporting the expected and actual status codes - has a negated failure message reporting the expected status code - describes responding with the numeric status code - matching a response - returns true for a response with the same code - returns false for a response with a different code - behaves like supports different response instances - returns false given another type - has a failure message reporting it was given another type - has a negated failure message reporting it was given another type - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - with general status code group :success - behaves like status code matcher - describes behaves like status code matcher - has a failure message reporting the expected and actual status codes - has a negated failure message reporting the expected and actual status codes - matching a response - returns false for a response with a different code - returns true for a response with code - behaves like supports different response instances - returns false given another type - has a negated failure message reporting it was given another type - has a failure message reporting it was given another type - given a Rack::MockResponse - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - http status :success - behaves like does not use deprecated methods for Rails 5.2+ - does not use deprecated method for Rails >= 5.2 - with general status code group :server_error - behaves like supports different response instances - returns false given another type - has a negated failure message reporting it was given another type - has a failure message reporting it was given another type - given a Rack::MockResponse - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code - given an ActionDispatch::Response - returns true for a response with the same code - behaves like status code matcher - has a failure message reporting the expected and actual status codes - has a negated failure message reporting the expected and actual status codes - describes behaves like status code matcher - matching a response - returns false for a response with a different code - returns true for a response with code - with deprecated rack status codes - supports the original names - with general status code group :missing - behaves like status code matcher - describes behaves like status code matcher - has a negated failure message reporting the expected and actual status codes - has a failure message reporting the expected and actual status codes - matching a response - returns false for a response with a different code - returns true for a response with code - behaves like supports different response instances - has a failure message reporting it was given another type - has a negated failure message reporting it was given another type - returns false given another type - given an ActionDispatch::Response - returns true for a response with the same code - given an ActionDispatch::TestResponse - returns true for a response with the same code - given a Rack::MockResponse - returns true for a response with the same code - given something that acts as a Capybara::Session - returns true for a response with the same code +RSpec::Rails::ViewRendering + when render_views? is false + supports manipulating view paths + supports manipulating view paths with resolvers + supports manipulating view paths with arrays + with empty template resolver + works with strings + works with custom resolvers + default + ActionController::Base + does not render views + does not render views in a nested group + ActionController::Metal + renders views + #render_views + propagates to examples in nested groups properly + with false + overrides the global config if render_views is enabled there + tells examples not to render views + with true + tells examples to render views + in a nested group + leaves the parent group as/is + overrides the value inherited from the parent group + passes override to children + with true + tells examples to render views + with false + tells examples not to render views + with no args + tells examples to render views + with no args + tells examples to render views RSpec::Rails::ViewExampleGroup - #template - is deprecated - delegates to #view + routes helpers collides with asset helpers + uses routes helpers + #_controller_path + with a nested _default_file_to_render + it returns the directory path + with a common _default_file_to_render + it returns the directory + #params + delegates to the controller + #render + given a hash + sends the hash as the first arg to render + given no input + sends render(:template => (described file)) to the view + converts the filename components into render options + converts the filename with variant into render options + converts the filename without format into render options + given a string + sends string as the first arg to render + #view + delegates to _view + is accessible to configuration-level hooks behaves like an rspec-rails example group mixin adds does not add `:type` metadata on inclusion - when `infer_spec_type_from_file_location!` is not configured - includes itself in example groups tagged with `type: :view` - for an example group defined in a file in the .\spec\views\ directory - does not include itself in the example group - does not tag groups in that directory with `type: :view` - for an example group defined in a file in the ./spec/views/ directory - does not include itself in the example group - does not tag groups in that directory with `type: :view` when `infer_spec_type_from_file_location!` is configured includes itself in example groups tagged with `type: :view` for an example group defined in a file in the ./spec/views/ directory applies configured `before(:context)` hooks with `type: :view` metadata + tags groups in that directory with `type: :view` includes itself in the example group allows users to override the type - tags groups in that directory with `type: :view` for an example group defined in a file in the .\spec\views\ directory applies configured `before(:context)` hooks with `type: :view` metadata + tags groups in that directory with `type: :view` includes itself in the example group allows users to override the type - tags groups in that directory with `type: :view` - #_controller_path - with a nested _default_file_to_render - it returns the directory path - with a common _default_file_to_render - it returns the directory - routes helpers collides with asset helpers - uses routes helpers + when `infer_spec_type_from_file_location!` is not configured + includes itself in example groups tagged with `type: :view` + for an example group defined in a file in the ./spec/views/ directory + does not tag groups in that directory with `type: :view` + does not include itself in the example group + for an example group defined in a file in the .\spec\views\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :view` #stub_template caches FixtureResolver instances between example groups prepends an ActionView::FixtureResolver to the view path caches FixtureResolver instances between examples - #view - is accessible to configuration-level hooks - delegates to _view + #template + delegates to #view + is deprecated automatic inclusion of helpers + includes the helper with the same name operates normally when no helper with the same name exists operates normally when the view has no path and there is a Helper class defined includes the namespaced helper with the same name - includes the helper with the same name - no application helper exists - operates normally application helper exists includes the application helper - #params - delegates to the controller - #render - given a hash - sends the hash as the first arg to render - given a string - sends string as the first arg to render - given no input - sends render(:template => (described file)) to the view - converts the filename without format into render options - converts the filename components into render options - converts the filename with variant into render options + no application helper exists + operates normally + +RSpec::Rails::ControllerExampleGroup + handles methods invoked via `method_missing` that use keywords + includes routing matchers + with implicit subject + uses the controller as the subject + doesn't cause let definition priority to be changed + in a namespace + controller name + sets the name as 'AnonymousController' if the controller is abstract + sets the name according to the defined controller namespace if it is not anonymous + behaves like an rspec-rails example group mixin + adds does not add `:type` metadata on inclusion + when `infer_spec_type_from_file_location!` is not configured + includes itself in example groups tagged with `type: :controller` + for an example group defined in a file in the .\spec\controllers\ directory + does not include itself in the example group + does not tag groups in that directory with `type: :controller` + for an example group defined in a file in the ./spec/controllers/ directory + does not include itself in the example group + does not tag groups in that directory with `type: :controller` + when `infer_spec_type_from_file_location!` is configured + includes itself in example groups tagged with `type: :controller` + for an example group defined in a file in the ./spec/controllers/ directory + allows users to override the type + tags groups in that directory with `type: :controller` + includes itself in the example group + applies configured `before(:context)` hooks with `type: :controller` metadata + for an example group defined in a file in the .\spec\controllers\ directory + includes itself in the example group + tags groups in that directory with `type: :controller` + allows users to override the type + applies configured `before(:context)` hooks with `type: :controller` metadata + with explicit subject + uses the specified subject instead of the controller + controller name + sets name as AnonymousController if defined as ApplicationController + sets the name according to defined controller if it is not anonymous + sets the name as AnonymousController if it's anonymous + sets name as AnonymousController if the controller is abstract + sets name as AnonymousController if it inherits outer group's anonymous controller + #bypass_rescue + overrides the rescue_with_handler method on the controller to raise submitted error + with inferred anonymous controller + defaults to inferring anonymous controller class + when infer_base_class_for_anonymous_controllers is false + sets the anonymous controller class to ApplicationController + sets the anonymous controller class to ActiveController::Base when no ApplicationController is present + when infer_base_class_for_anonymous_controllers is true + infers the anonymous controller class + infers the anonymous controller class when no ApplicationController is present + #controller + delegates named route helpers to the underlying controller + calls NamedRouteCollection#route_defined? when it checks that given route is defined or not Pending: (Failures listed here are expected and do not affect your suite's status) - 1) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email_2@example.com) + 1) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email@example.com) + # Temporarily skipped with xit + # ./spec/rspec/rails/configuration_spec.rb:372 + + 2) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email_2@example.com) # Temporarily skipped with xit # ./spec/rspec/rails/configuration_spec.rb:378 - 2) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email@example.com) + 3) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes with provided argument matchers + # This version of Rails does not support parameterized mailers + # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:429 + + 4) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes when mixing parameterized and non-parameterized emails + # This version of Rails does not support parameterized mailers + # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:422 + + 5) HaveEnqueuedMail matchers have_enqueued_mail when parameterized fails if the arguments do not match the mailer method's signature + # This version of Rails does not support parameterized mailers + # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:439 + + 6) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes when mailer is parameterized + # This version of Rails does not support parameterized mailers + # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:416 + + 7) RSpec::Rails::SystemExampleGroup#after sets the :extra_failure_lines metadata to an array of STDOUT lines # Temporarily skipped with xit - # ./spec/rspec/rails/configuration_spec.rb:372 + # ./spec/rspec/rails/example/system_example_group_spec.rb:84 + + 8) RSpec::Rails::SystemExampleGroup#take_screenshot handles Rails calling metadata + # Temporarily skipped with xit + # ./spec/rspec/rails/example/system_example_group_spec.rb:106 - 3) ActiveJob matchers have_enqueued_job accepts matchers as arguments to at_priority + 9) ActiveJob matchers have_enqueued_job accepts matchers as arguments to at_priority # No reason given Failure/Error: @priority = priority.to_i @@ -2581,34 +2641,10 @@ # ./spec/spec_helper.rb:86:in `block (3 levels) in ' # ./spec/spec_helper.rb:80:in `block (2 levels) in ' - 4) RSpec::Rails::SystemExampleGroup#after sets the :extra_failure_lines metadata to an array of STDOUT lines - # Temporarily skipped with xit - # ./spec/rspec/rails/example/system_example_group_spec.rb:84 - - 5) RSpec::Rails::SystemExampleGroup#take_screenshot handles Rails calling metadata - # Temporarily skipped with xit - # ./spec/rspec/rails/example/system_example_group_spec.rb:106 - - 6) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes when mailer is parameterized - # This version of Rails does not support parameterized mailers - # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:416 - - 7) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes with provided argument matchers - # This version of Rails does not support parameterized mailers - # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:429 - - 8) HaveEnqueuedMail matchers have_enqueued_mail when parameterized fails if the arguments do not match the mailer method's signature - # This version of Rails does not support parameterized mailers - # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:439 - - 9) HaveEnqueuedMail matchers have_enqueued_mail when parameterized passes when mixing parameterized and non-parameterized emails - # This version of Rails does not support parameterized mailers - # ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb:422 - -Finished in 1.99 seconds (files took 1.91 seconds to load) +Finished in 3.07 seconds (files took 2.75 seconds to load) 854 examples, 0 failures, 9 pending -Randomized with seed 156 +Randomized with seed 52652 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -2642,12 +2678,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/254840/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/254840/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/2544314 and its subdirectories -I: Current time: Tue Sep 2 11:04:42 -12 2025 -I: pbuilder-time-stamp: 1756854282 +I: removing directory /srv/workspace/pbuilder/254840 and its subdirectories +I: Current time: Tue Oct 6 19:29:58 +14 2026 +I: pbuilder-time-stamp: 1791264598