assert_template

Demonstrate regression introduced by https://github.com/rails/rails/commit/d14f64699715d24a7ceb33e6ef8fa14127716c24

bundle exec /Users/rubys/git/rails/railties/bin/rails new demo --skip-bundle
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  app/mailers/.keep
      create  app/models/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  bin/setup
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/secrets.yml
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/assets.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/cookies_serializer.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/robots.txt
      create  test/fixtures
      create  test/fixtures/.keep
      create  test/controllers
      create  test/controllers/.keep
      create  test/mailers
      create  test/mailers/.keep
      create  test/models
      create  test/models/.keep
      create  test/helpers
      create  test/helpers/.keep
      create  test/integration
      create  test/integration/.keep
      create  test/test_helper.rb
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep
bundle install --local
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.7.0.dev from source at /Users/rubys/git/i18n
Using json 1.8.1
Using minitest 5.4.0
Using thread_safe 0.3.4
Using tzinfo 1.2.1
Using activesupport 4.2.0.alpha from source at /Users/rubys/git/rails
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.2.0.alpha from source at /Users/rubys/git/rails
Using rack 1.6.0.alpha from source at /Users/rubys/git/rack
Using rack-test 0.6.2
Using actionpack 4.2.0.alpha from source at /Users/rubys/git/rails
Using mime-types 2.3
Using mail 2.6.1
Using actionmailer 4.2.0.alpha from source at /Users/rubys/git/rails
Using activemodel 4.2.0.alpha from source at /Users/rubys/git/rails
Using arel 6.0.0.20140505020427 from source at /Users/rubys/git/arel
Using activerecord 4.2.0.alpha from source at /Users/rubys/git/rails
Using bundler 1.6.4
Using coffee-script-source 1.7.1
Using execjs 2.2.1
Using coffee-script 2.3.0
Using thor 0.19.1
Using railties 4.2.0.alpha from source at /Users/rubys/git/rails
Using coffee-rails 4.0.1 from source at /Users/rubys/git/coffee-rails
Using hike 1.2.3
Using multi_json 1.10.1
Using jbuilder 2.1.3
Using jquery-rails 3.1.1
Using tilt 1.4.1
Using sprockets 2.12.1
Using sprockets-rails 2.1.2 from source at /Users/rubys/git/sprockets-rails
Using rails 4.2.0.alpha from source at /Users/rubys/git/rails
Using rdoc 4.1.1
Using sass 3.3.10
Using sass-rails 5.0.0.dev from source at /Users/rubys/git/sass-rails
Using sdoc 0.4.0
Using spring 1.1.3
Using sqlite3 1.3.9
Using turbolinks 2.2.2
Using uglifier 2.5.3
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

Scaffold the product model

rails generate scaffold Product title:string
      invoke  active_record
      create    db/migrate/20140723140343_create_products.rb
      create    app/models/product.rb
      invoke    test_unit
      create      test/models/product_test.rb
      create      test/fixtures/products.yml
      invoke  resource_route
       route    resources :products
      invoke  scaffold_controller
      create    app/controllers/products_controller.rb
      invoke    erb
      create      app/views/products
      create      app/views/products/index.html.erb
      create      app/views/products/edit.html.erb
      create      app/views/products/show.html.erb
      create      app/views/products/new.html.erb
      create      app/views/products/_form.html.erb
      invoke    test_unit
      create      test/controllers/products_controller_test.rb
      invoke    helper
      create      app/helpers/products_helper.rb
      invoke      test_unit
      create        test/helpers/products_helper_test.rb
      invoke    jbuilder
      create      app/views/products/index.json.jbuilder
      create      app/views/products/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/products.js.coffee
      invoke    scss
      create      app/assets/stylesheets/products.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

Run the migration

rake db:migrate
mv 20140723140343_create_products.rb 20140723000001_create_products.rb
== 20140723000001 CreateProducts: migrating ===================================
-- create_table(:products)
   -> 0.0009s
== 20140723000001 CreateProducts: migrated (0.0009s) ==========================
 

Create the integration test

rails generate integration_test product_index
      invoke  test_unit
      create    test/integration/product_index_test.rb

Add a test that fetches the product index

edit test/integration/product_index_test.rb
require 'test_helper'
 
class ProductIndexTest < ActionDispatch::IntegrationTest
  def test_fetch_product_index
    dave = regular_user
    dave.get "/products"
    dave.is_viewing "index"
  end
 
  def regular_user
    open_session do |user|
      def user.is_viewing(page)
        assert_template page
      end
    end  
  end
end

Run the test

rake test
Run options: --seed 62663
 
# Running:
 
.......F
 
Finished in 0.608426s, 13.1487 runs/s, 21.3666 assertions/s.
 
  1) Failure:
ProductIndexTest#test_fetch_product_index [/Library/WebServer/Documents/rtest/work-210/demo/test/integration/product_index_test.rb:13]:
expecting <"index"> but rendering with <[]>
 
8 runs, 13 assertions, 1 failures, 0 errors, 0 skips
should have zero failures.
<0> expected to be
>=
<1>.

Traceback:
  template.rb:47:in `block (2 levels) in <class:AssertTemplateTest>'
  /Users/rubys/git/gorp/lib/gorp/test.rb:158:in `call'
  /Users/rubys/git/gorp/lib/gorp/test.rb:158:in `block (2 levels) in <class:TestCase>'
  template.rb:46:in `block in <class:AssertTemplateTest>'

Environment

Wed, 23 Jul 2014 14:03:47 GMT
git log -1
commit 74a157ac5f0955ce3472ddeca578a9f2d69b0a98
Merge: 1db0069 d14f646
Author: Yves Senn <yves.senn@gmail.com>
Date:   Tue Jul 22 22:19:17 2014 +0200

    Merge pull request #16234 from tgxworld/fix_template_assertion_for_integration_test
    
    Fix AC::TemplateAssertions instance variables not resetting.
rake about
About your application's environment
Ruby version              2.1.0-p0 (x86_64-darwin13.0)
RubyGems version          2.2.2
Rack version              1.5
Rails version             4.2.0.alpha
JavaScript Runtime        JavaScriptCore
Active Record version     4.2.0.alpha
Action Pack version       4.2.0.alpha
Action View version       4.2.0.alpha
Action Mailer version     4.2.0.alpha
Active Support version    4.2.0.alpha
Active Model version      4.2.0.alpha
Middleware                Rack::Sendfile,
                          ActionDispatch::Static,
                          Rack::Lock,
                          #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x000001030f6938>,
                          Rack::Runtime,
                          Rack::MethodOverride,
                          ActionDispatch::RequestId,
                          Rails::Rack::Logger,
                          ActionDispatch::ShowExceptions,
                          ActionDispatch::DebugExceptions,
                          ActionDispatch::RemoteIp,
                          ActionDispatch::Reloader,
                          ActionDispatch::Callbacks,
                          ActiveRecord::Migration::CheckPending,
                          ActiveRecord::ConnectionAdapters::ConnectionManagement,
                          ActiveRecord::QueryCache,
                          ActionDispatch::Cookies,
                          ActionDispatch::Session::CookieStore,
                          ActionDispatch::Flash,
                          ActionDispatch::ParamsParser,
                          Rack::Head,
                          Rack::ConditionalGet,
                          Rack::ETag
Application root          /Library/WebServer/Documents/rtest/work-210/demo
Environment               development
Database adapter          sqlite3
Database schema version   20140723000001
bundle show
Gems included by the bundle:
  * actionmailer (4.2.0.alpha)
  * actionpack (4.2.0.alpha)
  * actionview (4.2.0.alpha)
  * activemodel (4.2.0.alpha)
  * activerecord (4.2.0.alpha)
  * activesupport (4.2.0.alpha)
  * arel (6.0.0.20140505020427)
  * builder (3.2.2)
  * bundler (1.6.4)
  * coffee-rails (4.0.1)
  * coffee-script (2.3.0)
  * coffee-script-source (1.7.1)
  * erubis (2.7.0)
  * execjs (2.2.1)
  * hike (1.2.3)
  * i18n (0.7.0.dev)
  * jbuilder (2.1.3)
  * jquery-rails (3.1.1)
  * json (1.8.1)
  * mail (2.6.1)
  * mime-types (2.3)
  * minitest (5.4.0)
  * multi_json (1.10.1)
  * rack (1.6.0.alpha)
  * rack-test (0.6.2)
  * rails (4.2.0.alpha)
  * railties (4.2.0.alpha)
  * rake (10.3.2)
  * rdoc (4.1.1)
  * sass (3.3.10)
  * sass-rails (5.0.0.dev)
  * sdoc (0.4.0)
  * spring (1.1.3)
  * sprockets (2.12.1)
  * sprockets-rails (2.1.2)
  * sqlite3 (1.3.9)
  * thor (0.19.1)
  * thread_safe (0.3.4)
  * tilt (1.4.1)
  * turbolinks (2.2.2)
  * tzinfo (1.2.1)
  * uglifier (2.5.3)
gem -v
2.2.2
/Users/rubys/.rvm/rubies/ruby-2.1.0/bin/ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0]
rvm -v
1.25.28 (stable)
echo $PATH
/Users/rubys/.rvm/gems/ruby-2.1.0/bin
/Users/rubys/.rvm/gems/ruby-2.1.0@global/bin
/Users/rubys/.rvm/rubies/ruby-2.1.0/bin
/Users/rubys/.rvm/bin
/Users/rubys/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/local/mysql/bin
sw_vers
ProductName:	Mac OS X
ProductVersion:	10.9.4
BuildVersion:	13E28
uname -srm
Darwin 13.3.0 x86_64