memory_test_fix 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +55 -0
  3. data/Gemfile +3 -0
  4. data/Rakefile +19 -0
  5. data/fixtures/rails32_app/Gemfile +5 -0
  6. data/fixtures/rails32_app/Rakefile +6 -0
  7. data/fixtures/rails32_app/app/models/foo.rb +2 -0
  8. data/fixtures/rails32_app/config/application.rb +14 -0
  9. data/fixtures/rails32_app/config/boot.rb +6 -0
  10. data/fixtures/rails32_app/config/environment.rb +5 -0
  11. data/fixtures/rails32_app/config/environments/test.rb +3 -0
  12. data/fixtures/rails32_app/db/migrate/20140830065127_create_foos.rb +13 -0
  13. data/fixtures/rails32_app/db/schema.rb +22 -0
  14. data/fixtures/rails32_app/script/rails +9 -0
  15. data/fixtures/rails32_app/test/fixtures/foos.yml +7 -0
  16. data/fixtures/rails32_app/test/test_helper.rb +13 -0
  17. data/fixtures/rails32_app/test/unit/foo_test.rb +13 -0
  18. data/fixtures/rails40_app/Gemfile +5 -0
  19. data/fixtures/rails40_app/Rakefile +6 -0
  20. data/fixtures/rails40_app/app/models/foo.rb +2 -0
  21. data/fixtures/rails40_app/config/application.rb +14 -0
  22. data/fixtures/rails40_app/config/boot.rb +4 -0
  23. data/fixtures/rails40_app/config/environment.rb +5 -0
  24. data/fixtures/rails40_app/config/environments/test.rb +3 -0
  25. data/fixtures/rails40_app/db/migrate/20140830065127_create_foos.rb +13 -0
  26. data/fixtures/rails40_app/db/schema.rb +22 -0
  27. data/fixtures/rails40_app/test/fixtures/foos.yml +7 -0
  28. data/fixtures/rails40_app/test/test_helper.rb +13 -0
  29. data/fixtures/rails40_app/test/unit/foo_test.rb +13 -0
  30. data/fixtures/rails41_app/Gemfile +5 -0
  31. data/fixtures/rails41_app/Rakefile +6 -0
  32. data/fixtures/rails41_app/app/models/foo.rb +2 -0
  33. data/fixtures/rails41_app/config/application.rb +12 -0
  34. data/fixtures/rails41_app/config/boot.rb +4 -0
  35. data/fixtures/rails41_app/config/environment.rb +5 -0
  36. data/fixtures/rails41_app/config/environments/development.rb +3 -0
  37. data/fixtures/rails41_app/config/environments/production.rb +3 -0
  38. data/fixtures/rails41_app/config/environments/test.rb +4 -0
  39. data/fixtures/rails41_app/config/initializers/filter_parameter_logging.rb +1 -0
  40. data/fixtures/rails41_app/db/migrate/20140830065127_create_foos.rb +13 -0
  41. data/fixtures/rails41_app/db/schema.rb +22 -0
  42. data/fixtures/rails41_app/test/fixtures/foos.yml +7 -0
  43. data/fixtures/rails41_app/test/test_helper.rb +13 -0
  44. data/fixtures/rails41_app/test/unit/foo_test.rb +13 -0
  45. data/lib/memory_test_fix/schema_file_loader.rb +9 -0
  46. data/memory_test_fix.gemspec +30 -34
  47. data/spec/spec_helper.rb +85 -0
  48. data/spec/unit/memory_test_fix/schema_loader_spec.rb +62 -0
  49. data/test/integration/integration_test.rb +79 -0
  50. data/test/test_helper.rb +1 -0
  51. metadata +56 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8be77be544a73632c9f612eb7d7742e6df17c24
4
- data.tar.gz: 7a00be706b1a9616ff236e24afb16a10ccfdc940
3
+ metadata.gz: b1a0498adafb593f01fc7779ae027d3b4309c383
4
+ data.tar.gz: db098470d01fd6bd391e93fcc8aa1803fa8f8c9e
5
5
  SHA512:
6
- metadata.gz: 0400082e065eedbc1ca31f2d7cd40b8304fdb4564eb1a1587749f6656835e3ce067cf8258ea12157fba1d1c77185e62f469552be7ee89dfc0bd24d68077e3077
7
- data.tar.gz: 3024609b21a8db5ee1786b498a25abf1324f58104d7a7c1d0b5b120e8359691264415cf60a8f3451692e084735fa430716dec2a67d6e10411433632ea1f27346
6
+ metadata.gz: a713a7fba6890b281d9bf79619b963c6b4dbf7bda0983dbde290e299b6a515dc425457b038011b514084faa69fdc802c5a0f1c650ae5c15657896d037cae7baf
7
+ data.tar.gz: 8f30a51999e7549171346cff5b9108961c299e35e5d0fcd750d83b19ae6954717e59a747e9e3a275274bad3081845e657dc5bca624a6b1e3e0ce89bb445d2db4
data/Changelog.md ADDED
@@ -0,0 +1,55 @@
1
+ # Changelog
2
+
3
+ ## 1.2.1 / 2014-09-07
4
+
5
+ * Ensure all files are available in the gem
6
+
7
+ ## 1.2.0 / 2014-09-07
8
+
9
+ * Drop support for Rails 3.0 and 3.1
10
+
11
+ ## 1.1.0 / 2014-08-30
12
+
13
+ * Officially add support for Rails 4.1
14
+ * Add 'migrate' option (thanks, Stephan Zalewski)
15
+ * Use railties to run init_schema at the appropriate moment
16
+ (thanks, Stephan Zalewski)
17
+ * Fix Rails 4.0 support by initializing the schema whenever an
18
+ ActiveRecord connection is established
19
+
20
+ ## 1.0.0 / 2014-04-07
21
+
22
+ * Officially add support for Rails 4.0
23
+ * Drop support for Rails 2.3
24
+
25
+ ## 0.2.2 / 2013-02-02
26
+
27
+ * Fix broken Rails 3.0 compatibility
28
+ * Restore Rails 2.3 compatibility
29
+
30
+ ## 0.2.1 / 2013-02-02
31
+
32
+ * Add support for Rails 3.2 (thanks, Stephan Zalewski)
33
+
34
+ ## 0.2.0 / 2011-01-06
35
+
36
+ * Rails 3 compatibility (thanks, Greg Weber)
37
+ * Only support Rails 3
38
+ * Use Rails 3 plugin loading mechanism to avoid loading the schema
39
+ before initialization is complete
40
+ * Use 'verbosity' setting from the current environment, not from
41
+ 'test'
42
+
43
+ ## 0.1.3 / 2010-06-26
44
+
45
+ * Support other environments besides 'test' (thanks, Erik Hanson &
46
+ Matt Scilipoti)
47
+
48
+ ## 0.1.1 / 2009-02-08
49
+
50
+ * Fix broken gemspec that did not include any files, nor all
51
+ authors.
52
+
53
+ ## 0.1 / 2009-02-08
54
+
55
+ * Initial release as a GemPlugin
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc 'Default: run tests.'
6
+ task default: :test
7
+
8
+ namespace :test do
9
+ Rake::TestTask.new(:integration) do |t|
10
+ t.libs += %w(lib test)
11
+ t.pattern = 'test/integration/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+ end
15
+
16
+ RSpec::Core::RakeTask.new(:spec)
17
+
18
+ desc 'Test the memory_test_fix plugin.'
19
+ task test: [:spec, 'test:integration']
@@ -0,0 +1,5 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '~> 3.2.3'
4
+ gem 'sqlite3'
5
+ gem 'memory_test_fix', path: '../..'
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails32App::Application.load_tasks
@@ -0,0 +1,2 @@
1
+ class Foo < ActiveRecord::Base
2
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails'
4
+ require 'active_record/railtie'
5
+ require 'rails/test_unit/railtie'
6
+
7
+ Bundler.require(:default, Rails.env) if defined?(Bundler)
8
+
9
+ module Rails32App
10
+ class Application < Rails::Application
11
+ config.encoding = "utf-8"
12
+ config.filter_parameters += [:password, :ssn]
13
+ end
14
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ # Set up gems listed in the Gemfile.
3
+ if File.exist?(File.expand_path('../../Gemfile', __FILE__))
4
+ require 'bundler'
5
+ Bundler.setup
6
+ end
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Rails32App::Application.initialize!
@@ -0,0 +1,3 @@
1
+ Rails32App::Application.configure do
2
+ config.active_support.deprecation = :stderr
3
+ end
@@ -0,0 +1,13 @@
1
+ class CreateFoos < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :foos do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :foos
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 20140830065127) do
15
+
16
+ create_table "foos", :force => true do |t|
17
+ t.string "name"
18
+ t.datetime "created_at", :null => false
19
+ t.datetime "updated_at", :null => false
20
+ end
21
+
22
+ end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENV_PATH = File.expand_path('../../config/environment', __FILE__)
5
+ BOOT_PATH = File.expand_path('../../config/boot', __FILE__)
6
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
7
+
8
+ require BOOT_PATH
9
+ require 'rails/commands'
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ one:
4
+ name: Foo one
5
+
6
+ two:
7
+ name: Foo two
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class FooTest < ActiveSupport::TestCase
4
+ test "Foos have names" do
5
+ assert_equal 'Foo one', foos(:one).name
6
+ end
7
+
8
+ test "Foos can be stored" do
9
+ foo = Foo.new(name: 'A third')
10
+ foo.save!
11
+ assert_equal 'A third', Foo.find(foo.id).name
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.0.0'
4
+ gem 'sqlite3'
5
+ gem 'memory_test_fix', path: '../..'
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails40App::Application.load_tasks
@@ -0,0 +1,2 @@
1
+ class Foo < ActiveRecord::Base
2
+ end
@@ -0,0 +1,14 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails'
4
+ require 'active_record/railtie'
5
+ require 'rails/test_unit/railtie'
6
+
7
+ Bundler.require(:default, Rails.env) if defined?(Bundler)
8
+
9
+ module Rails40App
10
+ class Application < Rails::Application
11
+ config.encoding = "utf-8"
12
+ config.filter_parameters += [:password, :ssn]
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+
4
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Rails40App::Application.initialize!
@@ -0,0 +1,3 @@
1
+ Rails40App::Application.configure do
2
+ config.active_support.deprecation = :stderr
3
+ end
@@ -0,0 +1,13 @@
1
+ class CreateFoos < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :foos do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :foos
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20140830065127) do
15
+
16
+ create_table "foos", force: true do |t|
17
+ t.string "name"
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ end
21
+
22
+ end
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ one:
4
+ name: Foo one
5
+
6
+ two:
7
+ name: Foo two
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class FooTest < ActiveSupport::TestCase
4
+ test "Foos have names" do
5
+ assert_equal 'Foo one', foos(:one).name
6
+ end
7
+
8
+ test "Foos can be stored" do
9
+ foo = Foo.new(name: 'A third')
10
+ foo.save!
11
+ assert_equal 'A third', Foo.find(foo.id).name
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.1.0'
4
+ gem 'sqlite3'
5
+ gem 'memory_test_fix', path: '../..'
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,2 @@
1
+ class Foo < ActiveRecord::Base
2
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails'
4
+ require 'active_record/railtie'
5
+ require 'rails/test_unit/railtie'
6
+
7
+ Bundler.require(*Rails.groups)
8
+
9
+ module Rails41App
10
+ class Application < Rails::Application
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -0,0 +1,3 @@
1
+ Rails.application.configure do
2
+ config.eager_load = false
3
+ end
@@ -0,0 +1,3 @@
1
+ Rails.application.configure do
2
+ config.eager_load = true
3
+ end
@@ -0,0 +1,4 @@
1
+ Rails.application.configure do
2
+ config.eager_load = false
3
+ config.active_support.deprecation = :stderr
4
+ end
@@ -0,0 +1 @@
1
+ Rails.application.config.filter_parameters += [:password]
@@ -0,0 +1,13 @@
1
+ class CreateFoos < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :foos do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :foos
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20140830065127) do
15
+
16
+ create_table "foos", force: true do |t|
17
+ t.string "name"
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ end
21
+
22
+ end
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ one:
4
+ name: Foo one
5
+
6
+ two:
7
+ name: Foo two
@@ -0,0 +1,13 @@
1
+ ENV['RAILS_ENV'] = 'test'
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class FooTest < ActiveSupport::TestCase
4
+ test "Foos have names" do
5
+ assert_equal 'Foo one', foos(:one).name
6
+ end
7
+
8
+ test "Foos can be stored" do
9
+ foo = Foo.new(name: 'A third')
10
+ foo.save!
11
+ assert_equal 'A third', Foo.find(foo.id).name
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module MemoryTestFix
2
+ # Load Rails schema file into in-memory database.
3
+ module SchemaFileLoader
4
+ def self.load_schema
5
+ # TODO: Use tooling provided by rails once support for Rails 3 is dropped.
6
+ load "#{Rails.root}/db/schema.rb"
7
+ end
8
+ end
9
+ end
@@ -1,41 +1,37 @@
1
- Gem::Specification.new do |s|
2
- s.name = "memory_test_fix"
3
- s.version = "1.2.0"
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "memory_test_fix"
3
+ spec.version = "1.2.1"
4
4
 
5
- if s.respond_to? :required_rubygems_version=
6
- s.required_rubygems_version = Gem::Requirement.new(">= 0")
7
- end
5
+ spec.authors = ["Matijs van Zuijlen",
6
+ "Chris Roos",
7
+ "Geoffrey Grosenbach",
8
+ "Kakutani Shintaro",
9
+ "Erik Hanson and Matt Scilipoti",
10
+ "Greg Weber",
11
+ "Stephan Zalewski"]
12
+ spec.email = "matijs@matijs.net"
13
+ spec.homepage = "http://wiki.github.com/mvz/memory_test_fix"
8
14
 
9
- s.authors = ["Matijs van Zuijlen",
10
- "Chris Roos",
11
- "Geoffrey Grosenbach",
12
- "Kakutani Shintaro",
13
- "Erik Hanson and Matt Scilipoti",
14
- "Greg Weber",
15
- "Stephan Zalewski"]
16
- s.email = "matijs@matijs.net"
15
+ spec.license = "MIT"
17
16
 
18
- s.license = 'MIT'
17
+ spec.summary = "Use SQLite3 in-memory database for Rails tests."
18
+ spec.description = <<-END
19
+ Makes use of SQLite3 in-memory database possible for your
20
+ Rails tests by preloading the schema.
21
+ END
19
22
 
20
- s.summary = "Use SQLite3 in-memory database for Rails tests."
21
- s.description =
22
- "Makes use of SQLite3 in-memory database possible for your" \
23
- " Rails tests by preloading the schema."
23
+ spec.files = Dir["{lib,test,spec,fixtures}/**/*",
24
+ "*.md",
25
+ "*.gemspec",
26
+ "Rakefile",
27
+ "Gemfile"] & `git ls-files -z`.split("\0")
24
28
 
25
- s.homepage = "http://wiki.github.com/mvz/memory_test_fix"
26
- s.require_paths = ["lib"]
27
- s.files = ["lib/memory_test_fix.rb",
28
- "lib/memory_test_fix/railtie.rb",
29
- "lib/memory_test_fix/schema_loader.rb",
30
- "README.md",
31
- "memory_test_fix.gemspec"]
32
- s.has_rdoc = true
33
- s.extra_rdoc_files = ['README.md']
34
- s.rubygems_version = '1.2.0'
29
+ spec.rdoc_options = ["--main", "README.md"]
30
+ spec.extra_rdoc_files = ["README.md"]
35
31
 
36
- s.add_runtime_dependency('railties', '>= 3.0.0')
37
- s.add_runtime_dependency('activerecord', '>= 3.0.0')
38
- s.add_development_dependency('rake', '~> 10.2')
39
- s.add_development_dependency('minitest', '~> 5.2')
40
- s.add_development_dependency('rspec', '~> 3.1.0')
32
+ spec.add_runtime_dependency("railties", ">= 3.0.0")
33
+ spec.add_runtime_dependency("activerecord", ">= 3.0.0")
34
+ spec.add_development_dependency("rake", "~> 10.2")
35
+ spec.add_development_dependency("minitest", "~> 5.2")
36
+ spec.add_development_dependency("rspec", "~> 3.1.0")
41
37
  end
@@ -0,0 +1,85 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, consider making
10
+ # a separate helper file that requires the additional dependencies and performs
11
+ # the additional setup, and require it from the spec files that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ RSpec.configure do |config|
18
+ # rspec-expectations config goes here. You can use an alternate
19
+ # assertion/expectation library such as wrong or the stdlib/minitest
20
+ # assertions if you prefer.
21
+ config.expect_with :rspec do |expectations|
22
+ # This option will default to `true` in RSpec 4. It makes the `description`
23
+ # and `failure_message` of custom matchers include text for helper methods
24
+ # defined using `chain`, e.g.:
25
+ # be_bigger_than(2).and_smaller_than(4).description
26
+ # # => "be bigger than 2 and smaller than 4"
27
+ # ...rather than:
28
+ # # => "be bigger than 2"
29
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
30
+ end
31
+
32
+ # rspec-mocks config goes here. You can use an alternate test double
33
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
34
+ config.mock_with :rspec do |mocks|
35
+ # Prevents you from mocking or stubbing a method that does not exist on
36
+ # a real object. This is generally recommended, and will default to
37
+ # `true` in RSpec 4.
38
+ mocks.verify_partial_doubles = true
39
+ end
40
+
41
+ # These two settings work together to allow you to limit a spec run
42
+ # to individual examples or groups you care about by tagging them with
43
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
44
+ # get run.
45
+ config.filter_run :focus
46
+ config.run_all_when_everything_filtered = true
47
+
48
+ # Limits the available syntax to the non-monkey patched syntax that is recommended.
49
+ # For more details, see:
50
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
51
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
52
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
53
+ config.disable_monkey_patching!
54
+
55
+ # This setting enables warnings. It's recommended, but in some cases may
56
+ # be too noisy due to issues in dependencies.
57
+ config.warnings = true
58
+
59
+ # Many RSpec users commonly either run the entire suite or an individual
60
+ # file, and it's useful to allow more verbose output when running an
61
+ # individual spec file.
62
+ if config.files_to_run.one?
63
+ # Use the documentation formatter for detailed output,
64
+ # unless a formatter has already been configured
65
+ # (e.g. via a command-line flag).
66
+ config.default_formatter = 'doc'
67
+ end
68
+
69
+ # Print the 10 slowest examples and example groups at the
70
+ # end of the spec run, to help surface which specs are running
71
+ # particularly slow.
72
+ config.profile_examples = 10
73
+
74
+ # Run specs in random order to surface order dependencies. If you find an
75
+ # order dependency and want to debug it, you can fix the order by providing
76
+ # the seed, which is printed after each run.
77
+ # --seed 1234
78
+ config.order = :random
79
+
80
+ # Seed global randomization in this process using the `--seed` CLI option.
81
+ # Setting this allows you to use `--seed` to deterministically reproduce
82
+ # test failures related to randomization by passing the same `--seed` value
83
+ # as the one that triggered the failure.
84
+ Kernel.srand config.seed
85
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ require 'memory_test_fix/schema_loader'
4
+
5
+ RSpec.describe MemoryTestFix::SchemaLoader do
6
+ describe '#init_schema' do
7
+ let(:migrator) { double(:migrator) }
8
+ let(:loader) { double(:loader) }
9
+ let(:options) { { configuration: config, migrator: migrator, loader: loader } }
10
+ let(:schema_loader) { MemoryTestFix::SchemaLoader.new options }
11
+
12
+ before do
13
+ allow(loader).to receive(:load_schema)
14
+ allow(migrator).to receive(:up)
15
+ end
16
+
17
+ context 'when no in-memory database is configured' do
18
+ let(:config) { { database: 'some/file.sqlite3', adapter: 'sqlite3' } }
19
+
20
+ it "outputs nothing" do
21
+ expect { schema_loader.init_schema }.to_not output.to_stdout
22
+ end
23
+
24
+ it "does not load anything" do
25
+ schema_loader.init_schema
26
+ expect(loader).to_not have_received :load_schema
27
+ end
28
+ end
29
+
30
+ context 'when an in-memory database is configured' do
31
+ let(:base_config) { { database: ':memory:', adapter: 'sqlite3' } }
32
+ let(:config) { base_config }
33
+
34
+ it "informs the user it is creating an in-memory database" do
35
+ expect { schema_loader.init_schema }.
36
+ to output("Creating sqlite :memory: database\n").to_stdout
37
+ end
38
+
39
+ it "tells the loader to load the schema" do
40
+ silence_stream(STDOUT) { schema_loader.init_schema }
41
+ expect(loader).to have_received :load_schema
42
+ end
43
+
44
+ context "when configured to use migrations" do
45
+ let(:config) { base_config.merge(migrate: true) }
46
+
47
+ it "tells the migrator to run the migrations" do
48
+ silence_stream(STDOUT) { schema_loader.init_schema }
49
+ expect(migrator).to have_received :up
50
+ end
51
+ end
52
+
53
+ context "when running in silence" do
54
+ let(:config) { base_config.merge(verbosity: 'silent') }
55
+
56
+ it "outputs nothing" do
57
+ expect { schema_loader.init_schema }.to_not output.to_stdout
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+ require 'yaml'
3
+
4
+ def in_clean_bundler_environment(*args)
5
+ system(*%w(/usr/bin/env RUBYOPT= BUNDLE_BIN_PATH= BUNDLE_GEMFILE=) + args)
6
+ end
7
+
8
+ def update_bundle(label)
9
+ return if in_clean_bundler_environment(*%w(bundle update --quiet --local))
10
+ puts "Starting remote update of the bundle for #{label}"
11
+ return if in_clean_bundler_environment(*%w(bundle update))
12
+ raise "Unable to initialize test environment for #{label}"
13
+ end
14
+
15
+ def run_tests
16
+ result = false
17
+ out, err = capture_subprocess_io do
18
+ result = in_clean_bundler_environment(*%w(bundle exec rake))
19
+ end
20
+ # If the command failed, make it print any error messages
21
+ err.must_equal "" unless result
22
+ out
23
+ end
24
+
25
+ BASE_CONFIG = {
26
+ "development" => {
27
+ "adapter" => 'sqlite3',
28
+ "pool" => 5,
29
+ "timeout" => 5000,
30
+ "database" => 'db/development.sqlite3'
31
+ },
32
+ "test" => {
33
+ "adapter" => 'sqlite3',
34
+ "database" => ':memory:'
35
+ }
36
+ }
37
+
38
+ def create_db_config_without_migrations
39
+ File.open 'config/database.yml', 'w' do |f|
40
+ f.puts YAML.dump(BASE_CONFIG)
41
+ end
42
+ end
43
+
44
+ def create_db_config_with_migrations
45
+ File.open 'config/database.yml', 'w' do |f|
46
+ f.puts YAML.dump BASE_CONFIG.merge(test: { migrate: true })
47
+ end
48
+ end
49
+
50
+ VERSIONS = [
51
+ ["Rails 3.2", 'rails32_app'],
52
+ ["Rails 4.0", 'rails40_app'],
53
+ ["Rails 4.1", 'rails41_app'],
54
+ ]
55
+
56
+ VERSIONS.each do |label, appdir|
57
+ Dir.chdir "fixtures/#{appdir}" do
58
+ update_bundle label
59
+ end
60
+
61
+ describe "A #{label} app using memory_test_fix" do
62
+ it "can run its tests without a real db" do
63
+ Dir.chdir "fixtures/#{appdir}" do
64
+ create_db_config_without_migrations
65
+ out = run_tests
66
+ out.must_match(/Creating sqlite :memory: database/)
67
+ out.must_match(/initialize_schema_migrations_table/)
68
+ end
69
+ end
70
+
71
+ it "can run its tests in-memory with migrations" do
72
+ Dir.chdir "fixtures/#{appdir}" do
73
+ create_db_config_with_migrations
74
+ out = run_tests
75
+ out.must_match(/Creating sqlite :memory: database/)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1 @@
1
+ require 'minitest/autorun'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memory_test_fix
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
@@ -86,25 +86,76 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 3.1.0
89
- description: Makes use of SQLite3 in-memory database possible for your Rails tests
90
- by preloading the schema.
89
+ description: |2
90
+ Makes use of SQLite3 in-memory database possible for your
91
+ Rails tests by preloading the schema.
91
92
  email: matijs@matijs.net
92
93
  executables: []
93
94
  extensions: []
94
95
  extra_rdoc_files:
95
96
  - README.md
96
97
  files:
98
+ - Changelog.md
99
+ - Gemfile
97
100
  - README.md
101
+ - Rakefile
102
+ - fixtures/rails32_app/Gemfile
103
+ - fixtures/rails32_app/Rakefile
104
+ - fixtures/rails32_app/app/models/foo.rb
105
+ - fixtures/rails32_app/config/application.rb
106
+ - fixtures/rails32_app/config/boot.rb
107
+ - fixtures/rails32_app/config/environment.rb
108
+ - fixtures/rails32_app/config/environments/test.rb
109
+ - fixtures/rails32_app/db/migrate/20140830065127_create_foos.rb
110
+ - fixtures/rails32_app/db/schema.rb
111
+ - fixtures/rails32_app/script/rails
112
+ - fixtures/rails32_app/test/fixtures/foos.yml
113
+ - fixtures/rails32_app/test/test_helper.rb
114
+ - fixtures/rails32_app/test/unit/foo_test.rb
115
+ - fixtures/rails40_app/Gemfile
116
+ - fixtures/rails40_app/Rakefile
117
+ - fixtures/rails40_app/app/models/foo.rb
118
+ - fixtures/rails40_app/config/application.rb
119
+ - fixtures/rails40_app/config/boot.rb
120
+ - fixtures/rails40_app/config/environment.rb
121
+ - fixtures/rails40_app/config/environments/test.rb
122
+ - fixtures/rails40_app/db/migrate/20140830065127_create_foos.rb
123
+ - fixtures/rails40_app/db/schema.rb
124
+ - fixtures/rails40_app/test/fixtures/foos.yml
125
+ - fixtures/rails40_app/test/test_helper.rb
126
+ - fixtures/rails40_app/test/unit/foo_test.rb
127
+ - fixtures/rails41_app/Gemfile
128
+ - fixtures/rails41_app/Rakefile
129
+ - fixtures/rails41_app/app/models/foo.rb
130
+ - fixtures/rails41_app/config/application.rb
131
+ - fixtures/rails41_app/config/boot.rb
132
+ - fixtures/rails41_app/config/environment.rb
133
+ - fixtures/rails41_app/config/environments/development.rb
134
+ - fixtures/rails41_app/config/environments/production.rb
135
+ - fixtures/rails41_app/config/environments/test.rb
136
+ - fixtures/rails41_app/config/initializers/filter_parameter_logging.rb
137
+ - fixtures/rails41_app/db/migrate/20140830065127_create_foos.rb
138
+ - fixtures/rails41_app/db/schema.rb
139
+ - fixtures/rails41_app/test/fixtures/foos.yml
140
+ - fixtures/rails41_app/test/test_helper.rb
141
+ - fixtures/rails41_app/test/unit/foo_test.rb
98
142
  - lib/memory_test_fix.rb
99
143
  - lib/memory_test_fix/railtie.rb
144
+ - lib/memory_test_fix/schema_file_loader.rb
100
145
  - lib/memory_test_fix/schema_loader.rb
101
146
  - memory_test_fix.gemspec
147
+ - spec/spec_helper.rb
148
+ - spec/unit/memory_test_fix/schema_loader_spec.rb
149
+ - test/integration/integration_test.rb
150
+ - test/test_helper.rb
102
151
  homepage: http://wiki.github.com/mvz/memory_test_fix
103
152
  licenses:
104
153
  - MIT
105
154
  metadata: {}
106
155
  post_install_message:
107
- rdoc_options: []
156
+ rdoc_options:
157
+ - "--main"
158
+ - README.md
108
159
  require_paths:
109
160
  - lib
110
161
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -124,4 +175,4 @@ signing_key:
124
175
  specification_version: 4
125
176
  summary: Use SQLite3 in-memory database for Rails tests.
126
177
  test_files: []
127
- has_rdoc: true
178
+ has_rdoc: