diff options
Diffstat (limited to 'guides/bug_report_templates')
-rw-r--r-- | guides/bug_report_templates/action_controller_gem.rb | 26 | ||||
-rw-r--r-- | guides/bug_report_templates/action_controller_master.rb | 30 | ||||
-rw-r--r-- | guides/bug_report_templates/active_job_gem.rb | 32 | ||||
-rw-r--r-- | guides/bug_report_templates/active_job_master.rb | 31 | ||||
-rw-r--r-- | guides/bug_report_templates/active_record_gem.rb | 18 | ||||
-rw-r--r-- | guides/bug_report_templates/active_record_master.rb | 27 | ||||
-rw-r--r-- | guides/bug_report_templates/active_record_migrations_gem.rb | 65 | ||||
-rw-r--r-- | guides/bug_report_templates/active_record_migrations_master.rb | 64 | ||||
-rw-r--r-- | guides/bug_report_templates/benchmark.rb | 49 | ||||
-rw-r--r-- | guides/bug_report_templates/generic_gem.rb | 12 | ||||
-rw-r--r-- | guides/bug_report_templates/generic_master.rb | 19 |
11 files changed, 299 insertions, 74 deletions
diff --git a/guides/bug_report_templates/action_controller_gem.rb b/guides/bug_report_templates/action_controller_gem.rb index 58ba708a39..960d269d90 100644 --- a/guides/bug_report_templates/action_controller_gem.rb +++ b/guides/bug_report_templates/action_controller_gem.rb @@ -1,30 +1,30 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' + source "https://rubygems.org" # Activate the gem you are reporting the issue against. - gem 'rails', '4.2.0' + gem "rails", "5.0.0" end -require 'rack/test' -require 'action_controller/railtie' +require "rack/test" +require "action_controller/railtie" class TestApp < Rails::Application config.root = File.dirname(__FILE__) - config.session_store :cookie_store, key: 'cookie_store_key' - secrets.secret_token = 'secret_token' - secrets.secret_key_base = 'secret_key_base' + config.session_store :cookie_store, key: "cookie_store_key" + secrets.secret_token = "secret_token" + secrets.secret_key_base = "secret_key_base" config.logger = Logger.new($stdout) Rails.logger = config.logger routes.draw do - get '/' => 'test#index' + get "/" => "test#index" end end @@ -32,11 +32,11 @@ class TestController < ActionController::Base include Rails.application.routes.url_helpers def index - render plain: 'Home' + render plain: "Home" end end -require 'minitest/autorun' +require "minitest/autorun" # Ensure backward compatibility with Minitest 4 Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) @@ -45,7 +45,7 @@ class BugTest < Minitest::Test include Rack::Test::Methods def test_returns_success - get '/' + get "/" assert last_response.ok? end diff --git a/guides/bug_report_templates/action_controller_master.rb b/guides/bug_report_templates/action_controller_master.rb index 3f24aa3b4d..486c7243ad 100644 --- a/guides/bug_report_templates/action_controller_master.rb +++ b/guides/bug_report_templates/action_controller_master.rb @@ -1,33 +1,27 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' - gem 'rails', github: 'rails/rails' - gem 'arel', github: 'rails/arel' - gem 'rack', github: 'rack/rack' - gem 'sprockets', github: 'rails/sprockets' - gem 'sprockets-rails', github: 'rails/sprockets-rails' - gem 'sass-rails', github: 'rails/sass-rails' + source "https://rubygems.org" + gem "rails", github: "rails/rails" end -require 'action_controller/railtie' +require "action_controller/railtie" class TestApp < Rails::Application config.root = File.dirname(__FILE__) - config.session_store :cookie_store, key: 'cookie_store_key' - secrets.secret_token = 'secret_token' - secrets.secret_key_base = 'secret_key_base' + secrets.secret_token = "secret_token" + secrets.secret_key_base = "secret_key_base" config.logger = Logger.new($stdout) Rails.logger = config.logger routes.draw do - get '/' => 'test#index' + get "/" => "test#index" end end @@ -35,18 +29,18 @@ class TestController < ActionController::Base include Rails.application.routes.url_helpers def index - render plain: 'Home' + render plain: "Home" end end -require 'minitest/autorun' -require 'rack/test' +require "minitest/autorun" +require "rack/test" class BugTest < Minitest::Test include Rack::Test::Methods def test_returns_success - get '/' + get "/" assert last_response.ok? end diff --git a/guides/bug_report_templates/active_job_gem.rb b/guides/bug_report_templates/active_job_gem.rb new file mode 100644 index 0000000000..debc46ad54 --- /dev/null +++ b/guides/bug_report_templates/active_job_gem.rb @@ -0,0 +1,32 @@ +begin + require "bundler/inline" +rescue LoadError => e + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" + raise e +end + +gemfile(true) do + source "https://rubygems.org" + # Activate the gem you are reporting the issue against. + gem "activejob", "5.0.0" +end + +require "minitest/autorun" +require "active_job" + +# Ensure backward compatibility with Minitest 4 +Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) + +class BuggyJob < ActiveJob::Base + def perform + puts "performed" + end +end + +class BuggyJobTest < ActiveJob::TestCase + def test_stuff + assert_enqueued_with(job: BuggyJob) do + BuggyJob.perform_later + end + end +end diff --git a/guides/bug_report_templates/active_job_master.rb b/guides/bug_report_templates/active_job_master.rb new file mode 100644 index 0000000000..f61518713f --- /dev/null +++ b/guides/bug_report_templates/active_job_master.rb @@ -0,0 +1,31 @@ +begin + require "bundler/inline" +rescue LoadError => e + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" + raise e +end + +gemfile(true) do + source "https://rubygems.org" + gem "rails", github: "rails/rails" +end + +require "active_job" +require "minitest/autorun" + +# Ensure backward compatibility with Minitest 4 +Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) + +class BuggyJob < ActiveJob::Base + def perform + puts "performed" + end +end + +class BuggyJobTest < ActiveJob::TestCase + def test_stuff + assert_enqueued_with(job: BuggyJob) do + BuggyJob.perform_later + end + end +end diff --git a/guides/bug_report_templates/active_record_gem.rb b/guides/bug_report_templates/active_record_gem.rb index 09d6e7b331..e18302fe65 100644 --- a/guides/bug_report_templates/active_record_gem.rb +++ b/guides/bug_report_templates/active_record_gem.rb @@ -1,26 +1,26 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' + source "https://rubygems.org" # Activate the gem you are reporting the issue against. - gem 'activerecord', '4.2.0' - gem 'sqlite3' + gem "activerecord", "5.0.0" + gem "sqlite3" end -require 'active_record' -require 'minitest/autorun' -require 'logger' +require "active_record" +require "minitest/autorun" +require "logger" # Ensure backward compatibility with Minitest 4 Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) # This connection will do for database-independent bug reports. -ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') +ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Schema.define do diff --git a/guides/bug_report_templates/active_record_master.rb b/guides/bug_report_templates/active_record_master.rb index 5b742a9093..7265a671b0 100644 --- a/guides/bug_report_templates/active_record_master.rb +++ b/guides/bug_report_templates/active_record_master.rb @@ -1,34 +1,29 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' - gem 'rails', github: 'rails/rails' - gem 'arel', github: 'rails/arel' - gem 'rack', github: 'rack/rack' - gem 'sprockets', github: 'rails/sprockets' - gem 'sprockets-rails', github: 'rails/sprockets-rails' - gem 'sass-rails', github: 'rails/sass-rails' - gem 'sqlite3' + source "https://rubygems.org" + gem "rails", github: "rails/rails" + gem "sqlite3" end -require 'active_record' -require 'minitest/autorun' -require 'logger' +require "active_record" +require "minitest/autorun" +require "logger" # This connection will do for database-independent bug reports. -ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') +ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Schema.define do - create_table :posts, force: true do |t| + create_table :posts, force: true do |t| end - create_table :comments, force: true do |t| + create_table :comments, force: true do |t| t.integer :post_id end end diff --git a/guides/bug_report_templates/active_record_migrations_gem.rb b/guides/bug_report_templates/active_record_migrations_gem.rb new file mode 100644 index 0000000000..f568a111f6 --- /dev/null +++ b/guides/bug_report_templates/active_record_migrations_gem.rb @@ -0,0 +1,65 @@ +begin + require "bundler/inline" +rescue LoadError => e + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" + raise e +end + +gemfile(true) do + source "https://rubygems.org" + # Activate the gem you are reporting the issue against. + gem "activerecord", "5.0.0.1" + gem "sqlite3" +end + +require "active_record" +require "minitest/autorun" +require "logger" + +# Ensure backward compatibility with Minitest 4 +Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) + +# This connection will do for database-independent bug reports. +ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") +ActiveRecord::Base.logger = Logger.new(STDOUT) + +ActiveRecord::Schema.define do + create_table :payments, force: true do |t| + t.decimal :amount, precision: 10, scale: 0, default: 0, null: false + end +end + +class Payment < ActiveRecord::Base +end + +class ChangeAmountToAddScale < ActiveRecord::Migration[5.0] + def change + reversible do |dir| + dir.up do + change_column :payments, :amount, :decimal, precision: 10, scale: 2, default: 0, null: false + end + + dir.down do + change_column :payments, :amount, :decimal, precision: 10, scale: 0, default: 0, null: false + end + end + end +end + +class BugTest < Minitest::Test + def test_migration_up + migrator = ActiveRecord::Migrator.new(:up, [ChangeAmountToAddScale]) + migrator.run + Payment.reset_column_information + + assert_equal "decimal(10,2)", Payment.columns.last.sql_type + end + + def test_migration_down + migrator = ActiveRecord::Migrator.new(:down, [ChangeAmountToAddScale]) + migrator.run + Payment.reset_column_information + + assert_equal "decimal(10,0)", Payment.columns.last.sql_type + end +end
\ No newline at end of file diff --git a/guides/bug_report_templates/active_record_migrations_master.rb b/guides/bug_report_templates/active_record_migrations_master.rb new file mode 100644 index 0000000000..ef7b42e0a6 --- /dev/null +++ b/guides/bug_report_templates/active_record_migrations_master.rb @@ -0,0 +1,64 @@ +begin + require "bundler/inline" +rescue LoadError => e + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" + raise e +end + +gemfile(true) do + source "https://rubygems.org" + gem "rails", github: "rails/rails" + gem "sqlite3" +end + +require "active_record" +require "minitest/autorun" +require "logger" + +# Ensure backward compatibility with Minitest 4 +Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) + +# This connection will do for database-independent bug reports. +ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") +ActiveRecord::Base.logger = Logger.new(STDOUT) + +ActiveRecord::Schema.define do + create_table :payments, force: true do |t| + t.decimal :amount, precision: 10, scale: 0, default: 0, null: false + end +end + +class Payment < ActiveRecord::Base +end + +class ChangeAmountToAddScale < ActiveRecord::Migration[5.0] + def change + reversible do |dir| + dir.up do + change_column :payments, :amount, :decimal, precision: 10, scale: 2, default: 0, null: false + end + + dir.down do + change_column :payments, :amount, :decimal, precision: 10, scale: 0, default: 0, null: false + end + end + end +end + +class BugTest < Minitest::Test + def test_migration_up + migrator = ActiveRecord::Migrator.new(:up, [ChangeAmountToAddScale]) + migrator.run + Payment.reset_column_information + + assert_equal "decimal(10,2)", Payment.columns.last.sql_type + end + + def test_migration_down + migrator = ActiveRecord::Migrator.new(:down, [ChangeAmountToAddScale]) + migrator.run + Payment.reset_column_information + + assert_equal "decimal(10,0)", Payment.columns.last.sql_type + end +end
\ No newline at end of file diff --git a/guides/bug_report_templates/benchmark.rb b/guides/bug_report_templates/benchmark.rb new file mode 100644 index 0000000000..ae51d7027f --- /dev/null +++ b/guides/bug_report_templates/benchmark.rb @@ -0,0 +1,49 @@ +begin + require "bundler/inline" +rescue LoadError => e + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" + raise e +end + +gemfile(true) do + source "https://rubygems.org" + gem "rails", github: "rails/rails" + gem "benchmark-ips" +end + +require "active_support" +require "active_support/core_ext/object/blank" + +# Your patch goes here. +class String + def fast_blank? + true + end +end + +# Enumerate some representative scenarios here. +# +# It is very easy to make an optimization that improves performance for a +# specific scenario you care about but regresses on other common cases. +# Therefore, you should test your change against a list of representative +# scenarios. Ideally, they should be based on real-world scenarios extracted +# from production applications. +SCENARIOS = { + "Empty" => "", + "Single Space" => " ", + "Two Spaces" => " ", + "Mixed Whitspaces" => " \t\r\n", + "Very Long String" => " " * 100 +} + +SCENARIOS.each_pair do |name, value| + puts + puts " #{name} ".center(80, "=") + puts + + Benchmark.ips do |x| + x.report('blank?') { value.blank? } + x.report('fast_blank?') { value.fast_blank? } + x.compare! + end +end diff --git a/guides/bug_report_templates/generic_gem.rb b/guides/bug_report_templates/generic_gem.rb index a4fe51156d..a94848e25b 100644 --- a/guides/bug_report_templates/generic_gem.rb +++ b/guides/bug_report_templates/generic_gem.rb @@ -1,18 +1,18 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' + source "https://rubygems.org" # Activate the gem you are reporting the issue against. - gem 'activesupport', '4.2.0' + gem "activesupport", "5.0.0" end -require 'active_support/core_ext/object/blank' -require 'minitest/autorun' +require "active_support/core_ext/object/blank" +require "minitest/autorun" # Ensure backward compatibility with Minitest 4 Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) diff --git a/guides/bug_report_templates/generic_master.rb b/guides/bug_report_templates/generic_master.rb index fcc90fa503..d3a7ae4ac4 100644 --- a/guides/bug_report_templates/generic_master.rb +++ b/guides/bug_report_templates/generic_master.rb @@ -1,23 +1,18 @@ begin - require 'bundler/inline' + require "bundler/inline" rescue LoadError => e - $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' + $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do - source 'https://rubygems.org' - gem 'rails', github: 'rails/rails' - gem 'arel', github: 'rails/arel' - gem 'rack', github: 'rack/rack' - gem 'sprockets', github: 'rails/sprockets' - gem 'sprockets-rails', github: 'rails/sprockets-rails' - gem 'sass-rails', github: 'rails/sass-rails' + source "https://rubygems.org" + gem "rails", github: "rails/rails" end -require 'active_support' -require 'active_support/core_ext/object/blank' -require 'minitest/autorun' +require "active_support" +require "active_support/core_ext/object/blank" +require "minitest/autorun" class BugTest < Minitest::Test def test_stuff |