minitest-rails 0.1 → 0.2

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 (45) hide show
  1. data/.travis.yml +19 -0
  2. data/CHANGELOG.rdoc +33 -1
  3. data/Manifest.txt +29 -7
  4. data/README.rdoc +27 -4
  5. data/Rakefile +6 -4
  6. data/gemfiles/3.0.gemfile +9 -0
  7. data/gemfiles/3.0.gemfile.lock +92 -0
  8. data/gemfiles/3.1.gemfile +9 -0
  9. data/gemfiles/3.1.gemfile.lock +103 -0
  10. data/gemfiles/3.2.gemfile +9 -0
  11. data/gemfiles/3.2.gemfile.lock +101 -0
  12. data/gemfiles/minitest_tu_shim.rb +4 -0
  13. data/lib/autotest/discover.rb +5 -0
  14. data/lib/autotest/fixtures.rb +7 -0
  15. data/lib/autotest/migrate.rb +5 -0
  16. data/lib/autotest/minitest_rails.rb +62 -0
  17. data/lib/generators/mini_test.rb +15 -0
  18. data/lib/minitest/rails/action_controller.rb +43 -1
  19. data/lib/minitest/rails/action_dispatch.rb +6 -6
  20. data/lib/minitest/rails/action_mailer.rb +3 -1
  21. data/lib/minitest/rails/action_view.rb +7 -5
  22. data/lib/minitest/rails/active_support.rb +8 -8
  23. data/lib/minitest/rails/declarative.rb +27 -0
  24. data/lib/minitest/rails/mochaing.rb +11 -0
  25. data/lib/minitest/rails/tasks/minitest.rake +48 -13
  26. data/lib/minitest/rails/tasks/sub_test_task.rb +14 -0
  27. data/lib/minitest/rails.rb +2 -2
  28. data/lib/minitest-rails.rb +1 -1
  29. data/minitest-rails.gemspec +12 -9
  30. data/test/{test_controller_generator.rb → generators/test_controller_generator.rb} +34 -27
  31. data/test/{test_helper_generator.rb → generators/test_helper_generator.rb} +32 -27
  32. data/test/{test_install_generator.rb → generators/test_install_generator.rb} +20 -9
  33. data/test/{test_mailer_generator.rb → generators/test_mailer_generator.rb} +23 -14
  34. data/test/{test_model_generator.rb → generators/test_model_generator.rb} +28 -24
  35. data/test/generators/test_scaffold_generator.rb +48 -0
  36. data/test/rails/action_controller/test_controller_lookup.rb +49 -0
  37. data/test/rails/action_controller/test_controllers.rb +223 -0
  38. data/test/rails/action_controller/test_spec_type.rb +41 -0
  39. data/test/rails/test_action_dispatch_spec_type.rb +48 -0
  40. data/test/rails/test_action_mailer_spec_type.rb +42 -0
  41. data/test/rails/test_action_view_spec_type.rb +42 -0
  42. data/test/rails/test_active_support_spec_type.rb +27 -0
  43. metadata +65 -20
  44. data/test/test_scaffold_generator.rb +0 -39
  45. /data/test/{test_minitest.rb → test_sanity.rb} +0 -0
@@ -1,5 +1,7 @@
1
1
  require 'minitest/rails/active_support'
2
2
  require 'action_dispatch/testing/integration'
3
+ require 'action_controller/test_case'
4
+ require 'action_dispatch/routing/url_for'
3
5
 
4
6
  module MiniTest
5
7
  module Rails
@@ -24,13 +26,11 @@ module MiniTest
24
26
  def app
25
27
  super || ::ActionDispatch::IntegrationTest.app
26
28
  end
29
+
30
+ # Register by name
31
+ register_spec_type(/Acceptance ?Test\z/i, self)
32
+ register_spec_type(/Integration ?Test\z/i, self)
27
33
  end
28
34
  end
29
35
  end
30
36
  end
31
-
32
- # Register by name
33
- MiniTest::Spec.register_spec_type(/AcceptanceTest$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
34
- MiniTest::Spec.register_spec_type(/Acceptance Test$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
35
- MiniTest::Spec.register_spec_type(/IntegrationTest$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
36
- MiniTest::Spec.register_spec_type(/Integration Test$/, MiniTest::Rails::ActionDispatch::IntegrationTest)
@@ -7,9 +7,11 @@ module MiniTest
7
7
  class TestCase < MiniTest::Rails::ActiveSupport::TestCase
8
8
  # Use AM::TestCase for the base class when describing a mailer
9
9
  register_spec_type(self) do |desc|
10
- desc < ::ActionMailer::Base
10
+ desc < ::ActionMailer::Base if desc.is_a?(Class)
11
11
  end
12
12
 
13
+ register_spec_type(/Mailer( ?Test)?\z/i, self)
14
+
13
15
  include ::ActionMailer::TestCase::Behavior
14
16
  end
15
17
  end
@@ -6,13 +6,15 @@ module MiniTest
6
6
  module ActionView
7
7
  class TestCase < MiniTest::Rails::ActiveSupport::TestCase
8
8
  TestController = ::ActionView::TestCase::TestController
9
+
10
+ # Register by name, because Helpers are just modules
11
+ register_spec_type(/Helper( ?Test)?\z/i, self)
12
+
13
+ # View specs
14
+ register_spec_type(/View( ?Test)?\z/i, self)
15
+
9
16
  include ::ActionView::TestCase::Behavior
10
17
  end
11
18
  end
12
19
  end
13
20
  end
14
-
15
- # Register by name, because Helpers are just modules
16
- MiniTest::Spec.register_spec_type(/Helper$/, MiniTest::Rails::ActionView::TestCase)
17
- MiniTest::Spec.register_spec_type(/HelperTest$/, MiniTest::Rails::ActionView::TestCase)
18
- MiniTest::Spec.register_spec_type(/Helper Test$/, MiniTest::Rails::ActionView::TestCase)
@@ -1,11 +1,15 @@
1
1
  require 'minitest/spec'
2
+
3
+ # I hate this! Be sure you have installed minitest_tu_shim
4
+ require "test/unit" if RUBY_VERSION < "1.9"
5
+
2
6
  require 'active_support/testing/setup_and_teardown'
3
7
  require 'active_support/testing/assertions'
4
8
  require 'active_support/testing/deprecation'
5
- require 'active_support/testing/declarative'
9
+ require 'minitest/rails/declarative'
6
10
  require 'active_support/testing/pending'
7
11
  require 'active_support/testing/isolation'
8
- require 'active_support/testing/mochaing'
12
+ require 'minitest/rails/mochaing'
9
13
  require 'active_support/core_ext/kernel/reporting'
10
14
 
11
15
  module MiniTest
@@ -23,7 +27,7 @@ module MiniTest
23
27
  if defined?(ActiveRecord::Base)
24
28
  # Use AS::TestCase for the base class when describing a model
25
29
  register_spec_type(self) do |desc|
26
- desc < ActiveRecord::Base
30
+ desc < ActiveRecord::Base if desc.is_a?(Class)
27
31
  end
28
32
  end
29
33
 
@@ -42,15 +46,11 @@ module MiniTest
42
46
  yield if $tags[tag]
43
47
  end
44
48
 
45
- def describe(*args, &block)
46
- Kernel.describe(args, block)
47
- end
48
-
49
49
  include ::ActiveSupport::Testing::SetupAndTeardown
50
50
  include ::ActiveSupport::Testing::Assertions
51
51
  include ::ActiveSupport::Testing::Deprecation
52
52
  include ::ActiveSupport::Testing::Pending
53
- extend ::ActiveSupport::Testing::Declarative
53
+ extend Testing::Declarative
54
54
 
55
55
  # test/unit backwards compatibility methods
56
56
  alias :assert_raise :assert_raises
@@ -0,0 +1,27 @@
1
+ module MiniTest
2
+ module Rails
3
+ module ActiveSupport
4
+ module Testing
5
+ module Declarative
6
+
7
+ # test "verify something" do
8
+ # ...
9
+ # end
10
+ def test(name, &block)
11
+ test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
12
+ defined = instance_method(test_name) rescue false
13
+ raise "#{test_name} is already defined in #{self}" if defined
14
+ if block_given?
15
+ define_method(test_name, &block)
16
+ else
17
+ define_method(test_name) do
18
+ flunk "No implementation provided for #{name}"
19
+ end
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ begin
2
+ require 'active_support/testing/mochaing'
3
+ rescue LoadError
4
+ begin
5
+ silence_warnings { require 'mocha' }
6
+ rescue LoadError
7
+ # Fake Mocha::ExpectationError so we can rescue it in #run. Bleh.
8
+ Object.const_set :Mocha, Module.new
9
+ Mocha.const_set :ExpectationError, Class.new(StandardError)
10
+ end
11
+ end
@@ -1,32 +1,61 @@
1
1
  require 'rake/testtask'
2
- require 'rails/test_unit/sub_test_task'
2
+ require 'minitest/rails/tasks/sub_test_task'
3
3
 
4
- TASKS = %w(models controllers helpers mailers acceptance) #views
5
- MINITEST_TASKS = TASKS.map { |sub| "minitest:#{sub}" }
4
+ # The default tests to run, update this list to change behavior
5
+ MINITEST_TASKS = %w(models helpers controllers mailers acceptance) #views
6
+
7
+ def all_directories_under_test
8
+ Dir['test/*/'].map {|dir| /test\/(.+?)\//.match(dir)[1] }
9
+ end
10
+
11
+ def all_minitest_directories
12
+ (MINITEST_TASKS + all_directories_under_test).uniq
13
+ end
6
14
 
7
15
  desc "Runs minitest"
8
16
  task :test do
17
+ # Add to existing task if exists, or create new task otherwise
9
18
  Rake::Task['minitest'].invoke
10
19
  end
11
20
 
21
+ namespace 'test' do
22
+ task :prepare do
23
+ # Define here in case test_unit isn't loaded
24
+ end
25
+ end
26
+
12
27
  desc "Runs #{MINITEST_TASKS.join(", ")} together"
13
28
  task :minitest do
14
- Rake::Task['minitest:run'].invoke
29
+ Rake::Task['minitest:default'].invoke
15
30
  end
16
31
 
17
32
  namespace 'minitest' do
18
33
 
19
- task :prepare do
20
- # Placeholder task for other Railtie and plugins to enhance. See Active Record for an example.
34
+ # Only run the default tasks defined in MINITEST_TASKS
35
+ task :default do
36
+ errors = MINITEST_TASKS.collect do |task|
37
+ begin
38
+ Rake::Task["minitest:#{task}"].invoke
39
+ nil
40
+ rescue => e
41
+ { :task => "minitest:#{task}", :exception => e }
42
+ end
43
+ end.compact
44
+
45
+ if errors.any?
46
+ puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n")
47
+ abort
48
+ end
21
49
  end
22
50
 
23
- task :run do
24
- errors = MINITEST_TASKS.collect do |task|
51
+ # Run all tests in all the test directories
52
+ task :all do
53
+ errors = all_minitest_directories.collect do |task|
25
54
  begin
26
- Rake::Task[task].invoke
55
+ Rake::Task["minitest:#{task}"].invoke
27
56
  nil
28
57
  rescue => e
29
- { :task => task, :exception => e }
58
+ { :task => "minitest:#{task}", :exception => e }
30
59
  end
31
60
  end.compact
32
61
 
@@ -36,11 +65,17 @@ namespace 'minitest' do
36
65
  end
37
66
  end
38
67
 
39
- TASKS.each do |sub|
40
- Rails::SubTestTask.new(sub => 'minitest:prepare') do |t|
68
+ all_minitest_directories.each do |task|
69
+ MiniTest::Rails::Tasks::SubTestTask.new(task => 'test:prepare') do |t|
41
70
  t.libs.push 'test'
42
- t.pattern = "test/#{sub}/**/*_test.rb"
71
+ t.pattern = "test/#{task}/**/*_test.rb"
43
72
  end
44
73
  end
45
74
 
46
75
  end
76
+
77
+ # Override the default task
78
+ task :default => [] # Just in case it hasn't already been set
79
+ Rake::Task[:default].clear
80
+ desc "Runs minitest"
81
+ task :default => "minitest"
@@ -0,0 +1,14 @@
1
+ require 'rake/testtask'
2
+
3
+ module MiniTest
4
+ module Rails
5
+ module Tasks
6
+ # Silence the default description to cut down on `rake -T` noise.
7
+ class SubTestTask < Rake::TestTask
8
+ def desc(string)
9
+ # Ignore the description.
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -5,7 +5,7 @@ abort("Abort testing: Your Rails environment is running in production mode!") if
5
5
  require "minitest/rails/active_support"
6
6
  require "minitest/rails/action_controller"
7
7
  require "minitest/rails/action_view"
8
- require "minitest/rails/action_mailer"
8
+ require "minitest/rails/action_mailer" if defined? ActionMailer
9
9
  require "minitest/rails/action_dispatch"
10
10
 
11
11
  # Enable turn if it is available
@@ -21,7 +21,7 @@ module MiniTest
21
21
  ::ActiveSupport.const_set :TestCase, MiniTest::Rails::ActiveSupport::TestCase
22
22
  ::ActionController.const_set :TestCase, MiniTest::Rails::ActionController::TestCase
23
23
  ::ActionView.const_set :TestCase, MiniTest::Rails::ActionView::TestCase
24
- ::ActionMailer.const_set :TestCase, MiniTest::Rails::ActionMailer::TestCase
24
+ ::ActionMailer.const_set :TestCase, MiniTest::Rails::ActionMailer::TestCase if defined? ActionMailer
25
25
  ::ActionDispatch.const_set :IntegrationTest, MiniTest::Rails::ActionDispatch::IntegrationTest
26
26
  end
27
27
  end
@@ -3,7 +3,7 @@ require "minitest/unit"
3
3
 
4
4
  module MiniTest
5
5
  module Rails
6
- VERSION = "0.1"
6
+ VERSION = "0.2"
7
7
  class Railtie < ::Rails::Railtie
8
8
  if ::Rails.version.to_f >= 3.1
9
9
  config.app_generators.integration_tool :mini_test
@@ -2,41 +2,44 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "minitest-rails"
5
- s.version = "0.1.20120709115419"
5
+ s.version = "0.2.20120919094008"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Mike Moore"]
9
- s.date = "2012-07-09"
10
- s.description = "Adds MiniTest as the default testing library in Rails 3."
9
+ s.date = "2012-09-19"
10
+ s.description = "Adds MiniTest as the default testing library in Rails 3.x"
11
11
  s.email = ["mike@blowmage.com"]
12
12
  s.extra_rdoc_files = ["CHANGELOG.rdoc", "Manifest.txt", "README.rdoc"]
13
- s.files = [".autotest", ".gemtest", "CHANGELOG.rdoc", "LICENSE", "Manifest.txt", "README.rdoc", "Rakefile", "lib/generators/mini_test.rb", "lib/generators/mini_test/controller/controller_generator.rb", "lib/generators/mini_test/controller/templates/controller_spec.rb", "lib/generators/mini_test/controller/templates/controller_test.rb", "lib/generators/mini_test/helper/helper_generator.rb", "lib/generators/mini_test/helper/templates/helper_spec.rb", "lib/generators/mini_test/helper/templates/helper_test.rb", "lib/generators/mini_test/install/install_generator.rb", "lib/generators/mini_test/install/templates/test/minitest_helper.rb", "lib/generators/mini_test/integration/integration_generator.rb", "lib/generators/mini_test/integration/templates/integration_spec.rb", "lib/generators/mini_test/integration/templates/integration_test.rb", "lib/generators/mini_test/mailer/mailer_generator.rb", "lib/generators/mini_test/mailer/templates/mailer_spec.rb", "lib/generators/mini_test/mailer/templates/mailer_test.rb", "lib/generators/mini_test/model/model_generator.rb", "lib/generators/mini_test/model/templates/fixtures.yml", "lib/generators/mini_test/model/templates/model_spec.rb", "lib/generators/mini_test/model/templates/model_test.rb", "lib/generators/mini_test/scaffold/scaffold_generator.rb", "lib/generators/mini_test/scaffold/templates/controller_spec.rb", "lib/generators/mini_test/scaffold/templates/controller_test.rb", "lib/minitest-rails.rb", "lib/minitest/rails.rb", "lib/minitest/rails/action_controller.rb", "lib/minitest/rails/action_dispatch.rb", "lib/minitest/rails/action_mailer.rb", "lib/minitest/rails/action_view.rb", "lib/minitest/rails/active_support.rb", "lib/minitest/rails/tasks/minitest.rake", "minitest-rails.gemspec", "test/test_controller_generator.rb", "test/test_helper_generator.rb", "test/test_install_generator.rb", "test/test_mailer_generator.rb", "test/test_minitest.rb", "test/test_model_generator.rb", "test/test_scaffold_generator.rb"]
13
+ s.files = [".autotest", ".gemtest", ".travis.yml", "CHANGELOG.rdoc", "LICENSE", "Manifest.txt", "README.rdoc", "Rakefile", "gemfiles/3.0.gemfile", "gemfiles/3.0.gemfile.lock", "gemfiles/3.1.gemfile", "gemfiles/3.1.gemfile.lock", "gemfiles/3.2.gemfile", "gemfiles/3.2.gemfile.lock", "gemfiles/minitest_tu_shim.rb", "lib/autotest/discover.rb", "lib/autotest/fixtures.rb", "lib/autotest/migrate.rb", "lib/autotest/minitest_rails.rb", "lib/generators/mini_test.rb", "lib/generators/mini_test/controller/controller_generator.rb", "lib/generators/mini_test/controller/templates/controller_spec.rb", "lib/generators/mini_test/controller/templates/controller_test.rb", "lib/generators/mini_test/helper/helper_generator.rb", "lib/generators/mini_test/helper/templates/helper_spec.rb", "lib/generators/mini_test/helper/templates/helper_test.rb", "lib/generators/mini_test/install/install_generator.rb", "lib/generators/mini_test/install/templates/test/minitest_helper.rb", "lib/generators/mini_test/integration/integration_generator.rb", "lib/generators/mini_test/integration/templates/integration_spec.rb", "lib/generators/mini_test/integration/templates/integration_test.rb", "lib/generators/mini_test/mailer/mailer_generator.rb", "lib/generators/mini_test/mailer/templates/mailer_spec.rb", "lib/generators/mini_test/mailer/templates/mailer_test.rb", "lib/generators/mini_test/model/model_generator.rb", "lib/generators/mini_test/model/templates/fixtures.yml", "lib/generators/mini_test/model/templates/model_spec.rb", "lib/generators/mini_test/model/templates/model_test.rb", "lib/generators/mini_test/scaffold/scaffold_generator.rb", "lib/generators/mini_test/scaffold/templates/controller_spec.rb", "lib/generators/mini_test/scaffold/templates/controller_test.rb", "lib/minitest-rails.rb", "lib/minitest/rails.rb", "lib/minitest/rails/action_controller.rb", "lib/minitest/rails/action_dispatch.rb", "lib/minitest/rails/action_mailer.rb", "lib/minitest/rails/action_view.rb", "lib/minitest/rails/active_support.rb", "lib/minitest/rails/declarative.rb", "lib/minitest/rails/mochaing.rb", "lib/minitest/rails/tasks/minitest.rake", "lib/minitest/rails/tasks/sub_test_task.rb", "minitest-rails.gemspec", "test/generators/test_controller_generator.rb", "test/generators/test_helper_generator.rb", "test/generators/test_install_generator.rb", "test/generators/test_mailer_generator.rb", "test/generators/test_model_generator.rb", "test/generators/test_scaffold_generator.rb", "test/rails/action_controller/test_controller_lookup.rb", "test/rails/action_controller/test_controllers.rb", "test/rails/action_controller/test_spec_type.rb", "test/rails/test_action_dispatch_spec_type.rb", "test/rails/test_action_mailer_spec_type.rb", "test/rails/test_action_view_spec_type.rb", "test/rails/test_active_support_spec_type.rb", "test/test_sanity.rb"]
14
14
  s.homepage = "http://blowmage.com/minitest-rails"
15
15
  s.rdoc_options = ["--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = "minitest-rails"
18
18
  s.rubygems_version = "1.8.24"
19
- s.summary = "MiniTest integration for Rails 3."
20
- s.test_files = ["test/test_controller_generator.rb", "test/test_helper_generator.rb", "test/test_install_generator.rb", "test/test_mailer_generator.rb", "test/test_minitest.rb", "test/test_model_generator.rb", "test/test_scaffold_generator.rb"]
19
+ s.summary = "MiniTest integration for Rails 3.x"
20
+ s.test_files = ["test/generators/test_controller_generator.rb", "test/generators/test_helper_generator.rb", "test/generators/test_install_generator.rb", "test/generators/test_mailer_generator.rb", "test/generators/test_model_generator.rb", "test/generators/test_scaffold_generator.rb", "test/rails/action_controller/test_controller_lookup.rb", "test/rails/action_controller/test_controllers.rb", "test/rails/action_controller/test_spec_type.rb", "test/rails/test_action_dispatch_spec_type.rb", "test/rails/test_action_mailer_spec_type.rb", "test/rails/test_action_view_spec_type.rb", "test/rails/test_active_support_spec_type.rb", "test/test_sanity.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  s.specification_version = 3
24
24
 
25
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_runtime_dependency(%q<minitest>, ["~> 3.0"])
26
+ s.add_runtime_dependency(%q<minitest>, ["~> 3.4"])
27
27
  s.add_runtime_dependency(%q<rails>, ["~> 3.0"])
28
28
  s.add_development_dependency(%q<rdoc>, ["~> 3.10"])
29
+ s.add_development_dependency(%q<fakefs>, ["~> 0.4"])
29
30
  s.add_development_dependency(%q<hoe>, ["~> 3.0"])
30
31
  else
31
- s.add_dependency(%q<minitest>, ["~> 3.0"])
32
+ s.add_dependency(%q<minitest>, ["~> 3.4"])
32
33
  s.add_dependency(%q<rails>, ["~> 3.0"])
33
34
  s.add_dependency(%q<rdoc>, ["~> 3.10"])
35
+ s.add_dependency(%q<fakefs>, ["~> 0.4"])
34
36
  s.add_dependency(%q<hoe>, ["~> 3.0"])
35
37
  end
36
38
  else
37
- s.add_dependency(%q<minitest>, ["~> 3.0"])
39
+ s.add_dependency(%q<minitest>, ["~> 3.4"])
38
40
  s.add_dependency(%q<rails>, ["~> 3.0"])
39
41
  s.add_dependency(%q<rdoc>, ["~> 3.10"])
42
+ s.add_dependency(%q<fakefs>, ["~> 0.4"])
40
43
  s.add_dependency(%q<hoe>, ["~> 3.0"])
41
44
  end
42
45
  end
@@ -6,59 +6,66 @@ require "rails/generators"
6
6
 
7
7
  require "generators/mini_test/controller/controller_generator"
8
8
 
9
- require "fileutils"
9
+ require "fakefs/safe"
10
+
11
+ class FakeFS::File
12
+ def self.binread file
13
+ File.open(file, "rb") { |f| f.read }
14
+ end
15
+ end
10
16
 
11
17
  class TestControllerGenerator < MiniTest::Unit::TestCase
12
- Rails::Generators.no_color!
18
+ def setup
19
+ Rails::Generators.no_color!
20
+ FakeFS.activate!
21
+ FakeFS::FileSystem.clone "lib/generators"
22
+ end
23
+
24
+ def teardown
25
+ FakeFS::FileSystem.clear
26
+ FakeFS.deactivate!
27
+ end
13
28
 
14
29
  def test_controller_generator
15
- text = capture(:stdout) do
30
+ out, err = capture_io do
16
31
  MiniTest::Generators::ControllerGenerator.start ["user"]
17
32
  end
18
- assert_match(/create test\/controllers\/user_controller_test.rb/m, text)
33
+ assert_match(/create test\/controllers\/user_controller_test.rb/m, out)
19
34
  assert File.exists? "test/controllers/user_controller_test.rb"
20
- contents = open("test/controllers/user_controller_test.rb").read
35
+ contents = File.read "test/controllers/user_controller_test.rb"
21
36
  assert_match(/class UserControllerTest/m, contents)
22
- ensure
23
- # TODO: Don"t write the files
24
- # I agree, it would be better to mock the file getting written
25
- FileUtils.rm_r "test/controllers"
26
37
  end
27
38
 
28
39
  def test_namespaced_controller_generator
29
- text = capture(:stdout) do
40
+ out, err = capture_io do
30
41
  MiniTest::Generators::ControllerGenerator.start ["admin/user"]
31
42
  end
32
- assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, text)
43
+ assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, out)
33
44
  assert File.exists? "test/controllers/admin/user_controller_test.rb"
34
- contents = open("test/controllers/admin/user_controller_test.rb").read
45
+ contents = File.read "test/controllers/admin/user_controller_test.rb"
35
46
  assert_match(/class Admin::UserControllerTest/m, contents)
36
- ensure
37
- FileUtils.rm_r "test/controllers"
38
47
  end
39
48
 
40
49
  def test_controller_generator_spec
41
- text = capture(:stdout) do
50
+ out, err = capture_io do
42
51
  MiniTest::Generators::ControllerGenerator.start ["user", "--spec"]
43
52
  end
44
- assert_match(/create test\/controllers\/user_controller_test.rb/m, text)
53
+ assert_match(/create test\/controllers\/user_controller_test.rb/m, out)
45
54
  assert File.exists? "test/controllers/user_controller_test.rb"
46
- contents = open("test/controllers/user_controller_test.rb").read
55
+ contents = File.read "test/controllers/user_controller_test.rb"
47
56
  assert_match(/describe UserController do/m, contents)
48
- ensure
49
- FileUtils.rm_r "test/controllers"
50
57
  end
51
58
 
52
59
  def test_namespaced_controller_generator_spec
53
- text = capture(:stdout) do
54
- MiniTest::Generators::ControllerGenerator.start ["admin/user", "--spec"]
60
+ FakeFS do
61
+ out, err = capture_io do
62
+ MiniTest::Generators::ControllerGenerator.start ["admin/user", "--spec"]
63
+ end
64
+ assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, out)
65
+ assert File.exists? "test/controllers/admin/user_controller_test.rb"
66
+ contents = File.read "test/controllers/admin/user_controller_test.rb"
67
+ assert_match(/describe Admin::UserController do/m, contents)
55
68
  end
56
- assert_match(/create test\/controllers\/admin\/user_controller_test.rb/m, text)
57
- assert File.exists? "test/controllers/admin/user_controller_test.rb"
58
- contents = open("test/controllers/admin/user_controller_test.rb").read
59
- assert_match(/describe Admin::UserController do/m, contents)
60
- ensure
61
- FileUtils.rm_r "test/controllers"
62
69
  end
63
70
 
64
71
  end
@@ -6,59 +6,64 @@ require "rails/generators"
6
6
 
7
7
  require "generators/mini_test/helper/helper_generator"
8
8
 
9
- require "fileutils"
9
+ require "fakefs/safe"
10
+
11
+ class FakeFS::File
12
+ def self.binread file
13
+ File.open(file, "rb") { |f| f.read }
14
+ end
15
+ end
10
16
 
11
17
  class TestHelperGenerator < MiniTest::Unit::TestCase
12
- Rails::Generators.no_color!
18
+ def setup
19
+ Rails::Generators.no_color!
20
+ FakeFS.activate!
21
+ FakeFS::FileSystem.clone "lib/generators"
22
+ end
23
+
24
+ def teardown
25
+ FakeFS::FileSystem.clear
26
+ FakeFS.deactivate!
27
+ end
13
28
 
14
29
  def test_helper_generator
15
- text = capture(:stdout) do
30
+ out, err = capture_io do
16
31
  MiniTest::Generators::HelperGenerator.start ["user"]
17
32
  end
18
- assert_match(/create test\/helpers\/user_helper_test.rb/m, text)
33
+ assert_match(/create test\/helpers\/user_helper_test.rb/m, out)
19
34
  assert File.exists? "test/helpers/user_helper_test.rb"
20
- contents = open("test/helpers/user_helper_test.rb").read
21
- assert_match(/class UserHelperTest < MiniTest::Unit::TestCase/m, contents)
22
- ensure
23
- # TODO: Don"t write the files
24
- # I agree, it would be better to mock the file getting written
25
- FileUtils.rm_r "test/helpers"
35
+ contents = File.read "test/helpers/user_helper_test.rb"
36
+ assert_match(/class UserHelperTest < MiniTest::Rails::ActionView::TestCase/m, contents)
26
37
  end
27
38
 
28
39
  def test_namespaced_helper_generator
29
- text = capture(:stdout) do
40
+ out, err = capture_io do
30
41
  MiniTest::Generators::HelperGenerator.start ["admin/user"]
31
42
  end
32
- assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, text)
43
+ assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, out)
33
44
  assert File.exists? "test/helpers/admin/user_helper_test.rb"
34
- contents = open("test/helpers/admin/user_helper_test.rb").read
35
- assert_match(/class Admin::UserHelperTest < MiniTest::Unit::TestCase/m, contents)
36
- ensure
37
- FileUtils.rm_r "test/helpers"
45
+ contents = File.read "test/helpers/admin/user_helper_test.rb"
46
+ assert_match(/class Admin::UserHelperTest < MiniTest::Rails::ActionView::TestCase/m, contents)
38
47
  end
39
48
 
40
49
  def test_helper_generator_spec
41
- text = capture(:stdout) do
50
+ out, err = capture_io do
42
51
  MiniTest::Generators::HelperGenerator.start ["user", "--spec"]
43
52
  end
44
- assert_match(/create test\/helpers\/user_helper_test.rb/m, text)
53
+ assert_match(/create test\/helpers\/user_helper_test.rb/m, out)
45
54
  assert File.exists? "test/helpers/user_helper_test.rb"
46
- contents = open("test/helpers/user_helper_test.rb").read
55
+ contents = File.read "test/helpers/user_helper_test.rb"
47
56
  assert_match(/describe UserHelper do/m, contents)
48
- ensure
49
- FileUtils.rm_r "test/helpers"
50
57
  end
51
58
 
52
- def test_helper_generator_spec
53
- text = capture(:stdout) do
59
+ def test_namespaced_helper_generator_spec
60
+ out, err = capture_io do
54
61
  MiniTest::Generators::HelperGenerator.start ["admin/user", "--spec"]
55
62
  end
56
- assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, text)
63
+ assert_match(/create test\/helpers\/admin\/user_helper_test.rb/m, out)
57
64
  assert File.exists? "test/helpers/admin/user_helper_test.rb"
58
- contents = open("test/helpers/admin/user_helper_test.rb").read
65
+ contents = File.read "test/helpers/admin/user_helper_test.rb"
59
66
  assert_match(/describe Admin::UserHelper do/m, contents)
60
- ensure
61
- FileUtils.rm_r "test/helpers"
62
67
  end
63
68
 
64
69
  end
@@ -6,23 +6,34 @@ require "rails/generators"
6
6
 
7
7
  require "generators/mini_test/install/install_generator"
8
8
 
9
- require "fileutils"
9
+ require "fakefs/safe"
10
+
11
+ class FakeFS::File
12
+ def self.binread file
13
+ File.open(file, "rb") { |f| f.read }
14
+ end
15
+ end
10
16
 
11
17
  class TestInstallGenerator < MiniTest::Unit::TestCase
12
- Rails::Generators.no_color!
18
+ def setup
19
+ Rails::Generators.no_color!
20
+ FakeFS.activate!
21
+ FakeFS::FileSystem.clone "lib/generators"
22
+ end
23
+
24
+ def teardown
25
+ FakeFS::FileSystem.clear
26
+ FakeFS.deactivate!
27
+ end
13
28
 
14
29
  def test_install_generator
15
- text = capture(:stdout) do
30
+ out, err = capture_io do
16
31
  MiniTest::Generators::InstallGenerator.start
17
32
  end
18
- assert_match(/create test\/minitest_helper.rb/m, text)
33
+ assert_match(/create test\/minitest_helper.rb/m, out)
19
34
  assert File.exists? "test/minitest_helper.rb"
20
- contents = open("test/minitest_helper.rb").read
35
+ contents = File.read "test/minitest_helper.rb"
21
36
  assert_match(/require "minitest\/autorun"/m, contents)
22
37
  assert_match(/require "minitest\/rails"/m, contents)
23
- ensure
24
- # TODO: Don"t write the files
25
- # I agree, it would be better to mock the file getting written
26
- FileUtils.rm "test/minitest_helper.rb"
27
38
  end
28
39
  end
@@ -6,34 +6,43 @@ require "rails/generators"
6
6
 
7
7
  require "generators/mini_test/mailer/mailer_generator"
8
8
 
9
- require "fileutils"
9
+ require "fakefs/safe"
10
+
11
+ class FakeFS::File
12
+ def self.binread file
13
+ File.open(file, "rb") { |f| f.read }
14
+ end
15
+ end
10
16
 
11
17
  class TestMailerGenerator < MiniTest::Unit::TestCase
12
- Rails::Generators.no_color!
18
+ def setup
19
+ Rails::Generators.no_color!
20
+ FakeFS.activate!
21
+ FakeFS::FileSystem.clone "lib/generators"
22
+ end
23
+
24
+ def teardown
25
+ FakeFS::FileSystem.clear
26
+ FakeFS.deactivate!
27
+ end
13
28
 
14
29
  def test_mailer_generator
15
- text = capture(:stdout) do
30
+ out, err = capture_io do
16
31
  MiniTest::Generators::MailerGenerator.start ["notification"]
17
32
  end
18
- assert_match(/create test\/mailers\/notification_test.rb/m, text)
33
+ assert_match(/create test\/mailers\/notification_test.rb/m, out)
19
34
  assert File.exists? "test/mailers/notification_test.rb"
20
- contents = open("test/mailers/notification_test.rb").read
35
+ contents = File.read "test/mailers/notification_test.rb"
21
36
  assert_match(/class NotificationTest/m, contents)
22
- ensure
23
- # TODO: Don"t write the files
24
- # I agree, it would be better to mock the file getting written
25
- FileUtils.rm_r "test/mailers"
26
37
  end
27
38
 
28
39
  def test_mailer_generator_spec
29
- text = capture(:stdout) do
40
+ out, err = capture_io do
30
41
  MiniTest::Generators::MailerGenerator.start ["notification", "welcome", "--spec"]
31
42
  end
32
- assert_match(/create test\/mailers\/notification_test.rb/m, text)
43
+ assert_match(/create test\/mailers\/notification_test.rb/m, out)
33
44
  assert File.exists? "test/mailers/notification_test.rb"
34
- contents = open("test/mailers/notification_test.rb").read
45
+ contents = File.read "test/mailers/notification_test.rb"
35
46
  assert_match(/describe Notification do/m, contents)
36
- ensure
37
- FileUtils.rm_r "test/mailers"
38
47
  end
39
48
  end