Navigation Menu

Skip to content

Commit

Permalink
Merge pull request #11419 from simi/generator_generator_test
Browse files Browse the repository at this point in the history
Added generated unit test for generator generator.
  • Loading branch information
guilleiguaran committed Jul 16, 2013
2 parents 8df284a + 5ecd125 commit c612638
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 1 deletion.
5 changes: 5 additions & 0 deletions railties/CHANGELOG.md
@@ -1,3 +1,8 @@
* Added generated unit test for generator generator using new
`test:generators` rake task.

*Josef Šimánek*

* Removed `update:application_controller` rake task.

*Josef Šimánek*
Expand Down
1 change: 1 addition & 0 deletions railties/lib/rails/generators/rails/generator/USAGE
Expand Up @@ -10,3 +10,4 @@ Example:
lib/generators/awesome/awesome_generator.rb
lib/generators/awesome/USAGE
lib/generators/awesome/templates/
test/lib/generators/awesome/awesome_generator_test.rb
Expand Up @@ -10,6 +10,8 @@ def create_generator_files
directory '.', generator_dir
end

hook_for :test_framework

protected

def generator_dir
Expand Down
@@ -0,0 +1,26 @@
require 'rails/generators/test_unit'

module TestUnit # :nodoc:
module Generators # :nodoc:
class GeneratorGenerator < Base # :nodoc:
check_class_collision suffix: "GeneratorTest"

class_option :namespace, type: :boolean, default: true,
desc: "Namespace generator under lib/generators/name"

def create_generator_files
template 'generator_test.rb', File.join('test/lib/generators', class_path, "#{file_name}_generator_test.rb")
end

protected

def generator_path
if options[:namespace]
File.join("generators", regular_class_path, file_name, "#{file_name}_generator")
else
File.join("generators", regular_class_path, "#{file_name}_generator")
end
end
end
end
end
@@ -0,0 +1,16 @@
require 'test_helper'
require '<%= generator_path %>'

<% module_namespacing do -%>
class <%= class_name %>GeneratorTest < Rails::Generators::TestCase
tests <%= class_name %>Generator
destination Rails.root.join('tmp/generators')
setup :prepare_destination

# test "generator runs without errors" do
# assert_nothing_raised do
# run_generator ["arguments"]
# end
# end
end
<% end -%>
1 change: 1 addition & 0 deletions railties/lib/rails/test_help.rb
Expand Up @@ -6,6 +6,7 @@
require 'active_support/test_case'
require 'action_controller/test_case'
require 'action_dispatch/testing/integration'
require 'rails/generators/test_case'

# Config Rails backtrace in tests.
require 'rails/backtrace_cleaner'
Expand Down
6 changes: 5 additions & 1 deletion railties/lib/rails/test_unit/testing.rake
Expand Up @@ -14,7 +14,7 @@ namespace :test do
# Placeholder task for other Railtie and plugins to enhance. See Active Record for an example.
end

task :run => ['test:units', 'test:functionals', 'test:integration']
task :run => ['test:units', 'test:functionals', 'test:generators', 'test:integration']

# Inspired by: http://ngauthier.com/2012/02/quick-tests-with-bash.html
desc "Run tests quickly by merging all types and not resetting db"
Expand All @@ -35,6 +35,10 @@ namespace :test do
end
end

Rails::TestTask.new(generators: "test:prepare") do |t|
t.pattern = "test/lib/generators/**/*_test.rb"
end

Rails::TestTask.new(units: "test:prepare") do |t|
t.pattern = 'test/{models,helpers,unit}/**/*_test.rb'
end
Expand Down
16 changes: 16 additions & 0 deletions railties/test/generators/generator_generator_test.rb
Expand Up @@ -16,6 +16,10 @@ def test_generator_skeleton_is_created

assert_file "lib/generators/awesome/awesome_generator.rb",
/class AwesomeGenerator < Rails::Generators::NamedBase/
assert_file "test/lib/generators/awesome_generator_test.rb",
/class AwesomeGeneratorTest < Rails::Generators::TestCase/
assert_file "test/lib/generators/awesome_generator_test.rb",
/require 'generators\/awesome\/awesome_generator'/
end

def test_namespaced_generator_skeleton
Expand All @@ -29,6 +33,10 @@ def test_namespaced_generator_skeleton

assert_file "lib/generators/rails/awesome/awesome_generator.rb",
/class Rails::AwesomeGenerator < Rails::Generators::NamedBase/
assert_file "test/lib/generators/rails/awesome_generator_test.rb",
/class Rails::AwesomeGeneratorTest < Rails::Generators::TestCase/
assert_file "test/lib/generators/rails/awesome_generator_test.rb",
/require 'generators\/rails\/awesome\/awesome_generator'/
end

def test_generator_skeleton_is_created_without_file_name_namespace
Expand All @@ -42,6 +50,10 @@ def test_generator_skeleton_is_created_without_file_name_namespace

assert_file "lib/generators/awesome_generator.rb",
/class AwesomeGenerator < Rails::Generators::NamedBase/
assert_file "test/lib/generators/awesome_generator_test.rb",
/class AwesomeGeneratorTest < Rails::Generators::TestCase/
assert_file "test/lib/generators/awesome_generator_test.rb",
/require 'generators\/awesome_generator'/
end

def test_namespaced_generator_skeleton_without_file_name_namespace
Expand All @@ -55,5 +67,9 @@ def test_namespaced_generator_skeleton_without_file_name_namespace

assert_file "lib/generators/rails/awesome_generator.rb",
/class Rails::AwesomeGenerator < Rails::Generators::NamedBase/
assert_file "test/lib/generators/rails/awesome_generator_test.rb",
/class Rails::AwesomeGeneratorTest < Rails::Generators::TestCase/
assert_file "test/lib/generators/rails/awesome_generator_test.rb",
/require 'generators\/rails\/awesome_generator'/
end
end

0 comments on commit c612638

Please sign in to comment.