i18n_shoulda_generator 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/LICENSE +20 -0
  2. data/Manifest +32 -0
  3. data/README.markdown +76 -0
  4. data/Rakefile +26 -0
  5. data/TODO +8 -0
  6. data/VERSION.yml +4 -0
  7. data/rails_generators/shoulda_model/USAGE +27 -0
  8. data/rails_generators/shoulda_model/shoulda_model_generator.rb +49 -0
  9. data/rails_generators/shoulda_model/templates/factory.rb +5 -0
  10. data/rails_generators/shoulda_model/templates/fixtures.yml +19 -0
  11. data/rails_generators/shoulda_model/templates/migration.rb +16 -0
  12. data/rails_generators/shoulda_model/templates/model.rb +2 -0
  13. data/rails_generators/shoulda_model/templates/unit_test.rb +7 -0
  14. data/rails_generators/shoulda_scaffold/USAGE +34 -0
  15. data/rails_generators/shoulda_scaffold/shoulda_scaffold_generator.rb +160 -0
  16. data/rails_generators/shoulda_scaffold/templates/blueprint/ie.css +35 -0
  17. data/rails_generators/shoulda_scaffold/templates/blueprint/print.css +30 -0
  18. data/rails_generators/shoulda_scaffold/templates/blueprint/screen.css +256 -0
  19. data/rails_generators/shoulda_scaffold/templates/controller.rb +72 -0
  20. data/rails_generators/shoulda_scaffold/templates/erb/_form.html.erb +8 -0
  21. data/rails_generators/shoulda_scaffold/templates/erb/edit.html.erb +12 -0
  22. data/rails_generators/shoulda_scaffold/templates/erb/index.html.erb +22 -0
  23. data/rails_generators/shoulda_scaffold/templates/erb/layout.html.erb +22 -0
  24. data/rails_generators/shoulda_scaffold/templates/erb/new.html.erb +8 -0
  25. data/rails_generators/shoulda_scaffold/templates/erb/show.html.erb +12 -0
  26. data/rails_generators/shoulda_scaffold/templates/functional_test/basic.rb +66 -0
  27. data/rails_generators/shoulda_scaffold/templates/haml/_form.html.haml +7 -0
  28. data/rails_generators/shoulda_scaffold/templates/haml/edit.html.haml +11 -0
  29. data/rails_generators/shoulda_scaffold/templates/haml/index.html.haml +20 -0
  30. data/rails_generators/shoulda_scaffold/templates/haml/layout.html.haml +15 -0
  31. data/rails_generators/shoulda_scaffold/templates/haml/new.html.haml +9 -0
  32. data/rails_generators/shoulda_scaffold/templates/haml/show.html.haml +10 -0
  33. data/rails_generators/shoulda_scaffold/templates/helper.rb +2 -0
  34. data/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  35. data/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  36. data/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  37. data/test/fixtures/eager/zoo/reptile_house.rb +2 -0
  38. data/test/fixtures/eager/zoo.rb +3 -0
  39. data/test/fixtures/environment_with_constant.rb +1 -0
  40. data/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  41. data/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  42. data/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  43. data/test/fixtures/plugins/default/gemlike/init.rb +1 -0
  44. data/test/fixtures/plugins/default/gemlike/lib/gemlike.rb +2 -0
  45. data/test/fixtures/plugins/default/gemlike/rails/init.rb +7 -0
  46. data/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  47. data/test/fixtures/plugins/default/stubby/about.yml +2 -0
  48. data/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  49. data/test/fixtures/plugins/default/stubby/init.rb +7 -0
  50. data/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  51. data/test/rails_generators/shoulda_model_generator_test.rb +39 -0
  52. data/test/shoulda_macros/generator_macros.rb +36 -0
  53. data/test/stolen_from_railties.rb +288 -0
  54. data/test/test_helper.rb +41 -0
  55. metadata +117 -0
@@ -0,0 +1,39 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
+
3
+
4
+ class ShouldaModelGeneratorTest < GeneratorTestCase
5
+ context "running the default generator" do
6
+ setup do
7
+ run_generator('shoulda_model', %w(Product name:string supplier_id:integer created_at:timestamp))
8
+ end
9
+
10
+ should_generate_model :product
11
+ should_generate_factory :product
12
+ should_generate_unit_test :product
13
+ should_generate_migration :create_products
14
+
15
+ should "generate migration" do
16
+ assert_generated_migration :create_products do |t|
17
+ assert_generated_column t, :name, :string
18
+ assert_generated_column t, :supplier_id, :integer
19
+ assert_generated_column t, :created_at, :timestamp
20
+ end
21
+ end
22
+ end
23
+
24
+ context "running the generator, when skipping factory and migration" do
25
+ setup do
26
+ run_generator('shoulda_model', %w(Product name:string supplier_id:integer created_at:timestamp --skip-factory))
27
+ end
28
+
29
+ should_generate_model :product
30
+ should_not_generate_factory :product
31
+ should_generate_unit_test :product
32
+ should_generate_migration :create_products
33
+
34
+ should "not generate migration" do
35
+ assert_skipped_migration :create_products
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,36 @@
1
+ class Test::Unit::TestCase
2
+ class << self
3
+ def should_generate_model(model)
4
+ should "generate #{model} model" do
5
+ assert_generated_model_for(model) do |body|
6
+ yield body if block_given?
7
+ end
8
+ end
9
+ end
10
+
11
+ def should_generate_factory(model)
12
+ should "generate #{model} factory" do
13
+ assert_generated_factory_for(model)
14
+ end
15
+ end
16
+
17
+ def should_generate_unit_test(model)
18
+ should "generate #{model} unit test" do
19
+ assert_generated_unit_test_for(model)
20
+ end
21
+ end
22
+
23
+ def should_generate_migration(migration)
24
+ should "generate a #{migration} migration" do
25
+ assert_generated_migration migration
26
+ end
27
+ end
28
+
29
+ def should_not_generate_factory(model)
30
+ should "not generate #{model} factory" do
31
+ deny_generated_factory_for(:product)
32
+ end
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,288 @@
1
+ require 'test/unit'
2
+ require 'fileutils'
3
+
4
+ # Mock out what we need from AR::Base
5
+ module ActiveRecord
6
+ class Base
7
+ class << self
8
+ attr_accessor :pluralize_table_names, :timestamped_migrations
9
+ end
10
+ self.pluralize_table_names = true
11
+ self.timestamped_migrations = true
12
+ end
13
+
14
+ module ConnectionAdapters
15
+ class Column
16
+ attr_reader :name, :default, :type, :limit, :null, :sql_type, :precision, :scale
17
+
18
+ def initialize(name, default, sql_type = nil)
19
+ @name = name
20
+ @default = default
21
+ @type = @sql_type = sql_type
22
+ end
23
+
24
+ def human_name
25
+ @name.humanize
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ # Mock up necessities from ActionView
32
+ module ActionView
33
+ module Helpers
34
+ module ActionRecordHelper; end
35
+ class InstanceTag; end
36
+ end
37
+ end
38
+
39
+ # Set RAILS_ROOT appropriately fixture generation
40
+ tmp_dir = "#{File.dirname(__FILE__)}/fixtures/tmp"
41
+
42
+ if defined? RAILS_ROOT
43
+ RAILS_ROOT.replace tmp_dir
44
+ else
45
+ RAILS_ROOT = tmp_dir
46
+ end
47
+ FileUtils.mkdir_p RAILS_ROOT
48
+
49
+ # $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib"
50
+ require 'initializer'
51
+
52
+ # Mocks out the configuration
53
+ module Rails
54
+ def self.configuration
55
+ Rails::Configuration.new
56
+ end
57
+ end
58
+
59
+ require 'rails_generator'
60
+
61
+ class GeneratorTestCase < Test::Unit::TestCase
62
+ include FileUtils
63
+
64
+ def setup
65
+ ActiveRecord::Base.pluralize_table_names = true
66
+
67
+ mkdir_p "#{RAILS_ROOT}/app/views/layouts"
68
+ mkdir_p "#{RAILS_ROOT}/config"
69
+ mkdir_p "#{RAILS_ROOT}/db"
70
+ mkdir_p "#{RAILS_ROOT}/test/fixtures"
71
+ mkdir_p "#{RAILS_ROOT}/public/stylesheets"
72
+
73
+ File.open("#{RAILS_ROOT}/config/routes.rb", 'w') do |f|
74
+ f << "ActionController::Routing::Routes.draw do |map|\n\nend"
75
+ end
76
+ end
77
+
78
+ def teardown
79
+ rm_rf "#{RAILS_ROOT}/app"
80
+ rm_rf "#{RAILS_ROOT}/test"
81
+ rm_rf "#{RAILS_ROOT}/config"
82
+ rm_rf "#{RAILS_ROOT}/db"
83
+ rm_rf "#{RAILS_ROOT}/public"
84
+ end
85
+
86
+ def test_truth
87
+ # don't complain, test/unit
88
+ end
89
+
90
+ # Instantiates the Generator.
91
+ def build_generator(name, params)
92
+ Rails::Generator::Base.instance(name, params)
93
+ end
94
+
95
+ # Runs the +create+ command (like the command line does).
96
+ def run_generator(name, params)
97
+ silence_generator do
98
+ build_generator(name, params).command(:create).invoke!
99
+ end
100
+ end
101
+
102
+ # Silences the logger temporarily and returns the output as a String.
103
+ def silence_generator
104
+ logger_original = Rails::Generator::Base.logger
105
+ myout = StringIO.new
106
+ Rails::Generator::Base.logger = Rails::Generator::SimpleLogger.new(myout)
107
+ yield if block_given?
108
+ Rails::Generator::Base.logger = logger_original
109
+ myout.string
110
+ end
111
+
112
+ # Asserts that the given controller was generated.
113
+ # It takes a name or symbol without the <tt>_controller</tt> part and an optional super class.
114
+ # The contents of the class source file is passed to a block.
115
+ def assert_generated_controller_for(name, parent = "ApplicationController")
116
+ assert_generated_class "app/controllers/#{name.to_s.underscore}_controller", parent do |body|
117
+ yield body if block_given?
118
+ end
119
+ end
120
+
121
+ # Asserts that the given model was generated.
122
+ # It takes a name or symbol and an optional super class.
123
+ # The contents of the class source file is passed to a block.
124
+ def assert_generated_model_for(name, parent = "ActiveRecord::Base")
125
+ assert_generated_class "app/models/#{name.to_s.underscore}", parent do |body|
126
+ yield body if block_given?
127
+ end
128
+ end
129
+
130
+ # Asserts that the given helper was generated.
131
+ # It takes a name or symbol without the <tt>_helper</tt> part.
132
+ # The contents of the module source file is passed to a block.
133
+ def assert_generated_helper_for(name)
134
+ assert_generated_module "app/helpers/#{name.to_s.underscore}_helper" do |body|
135
+ yield body if block_given?
136
+ end
137
+ end
138
+
139
+ # Asserts that the given functional test was generated.
140
+ # It takes a name or symbol without the <tt>_controller_test</tt> part and an optional super class.
141
+ # The contents of the class source file is passed to a block.
142
+ def assert_generated_functional_test_for(name, parent = "ActionController::TestCase")
143
+ assert_generated_class "test/functional/#{name.to_s.underscore}_controller_test",parent do |body|
144
+ yield body if block_given?
145
+ end
146
+ end
147
+
148
+ # Asserts that the given unit test was generated.
149
+ # It takes a name or symbol without the <tt>_test</tt> part and an optional super class.
150
+ # The contents of the class source file is passed to a block.
151
+ def assert_generated_unit_test_for(name, parent = "ActiveSupport::TestCase")
152
+ assert_generated_class "test/unit/#{name.to_s.underscore}_test", parent do |body|
153
+ yield body if block_given?
154
+ end
155
+ end
156
+
157
+ # Asserts that the given file was generated.
158
+ # The contents of the file is passed to a block.
159
+ def assert_generated_file(path)
160
+ assert_file_exists(path)
161
+ File.open("#{RAILS_ROOT}/#{path}") do |f|
162
+ yield f.read if block_given?
163
+ end
164
+ end
165
+
166
+ # asserts that the given file exists
167
+ def assert_file_exists(path)
168
+ assert File.exist?("#{RAILS_ROOT}/#{path}"),
169
+ "The file '#{RAILS_ROOT}/#{path}' should exist"
170
+ end
171
+
172
+ # Asserts that the given class source file was generated.
173
+ # It takes a path without the <tt>.rb</tt> part and an optional super class.
174
+ # The contents of the class source file is passed to a block.
175
+ def assert_generated_class(path, parent = nil)
176
+ # FIXME: Sucky way to detect namespaced classes
177
+ if path.split('/').size > 3
178
+ path =~ /\/?(\d+_)?(\w+)\/(\w+)$/
179
+ class_name = "#{$2.camelize}::#{$3.camelize}"
180
+ else
181
+ path =~ /\/?(\d+_)?(\w+)$/
182
+ class_name = $2.camelize
183
+ end
184
+
185
+ assert_generated_file("#{path}.rb") do |body|
186
+ assert_match /class #{class_name}#{parent.nil? ? '':" < #{parent}"}/, body, "the file '#{path}.rb' should be a class"
187
+ yield body if block_given?
188
+ end
189
+ end
190
+
191
+ # Asserts that the given module source file was generated.
192
+ # It takes a path without the <tt>.rb</tt> part.
193
+ # The contents of the class source file is passed to a block.
194
+ def assert_generated_module(path)
195
+ # FIXME: Sucky way to detect namespaced modules
196
+ if path.split('/').size > 3
197
+ path =~ /\/?(\w+)\/(\w+)$/
198
+ module_name = "#{$1.camelize}::#{$2.camelize}"
199
+ else
200
+ path =~ /\/?(\w+)$/
201
+ module_name = $1.camelize
202
+ end
203
+
204
+ assert_generated_file("#{path}.rb") do |body|
205
+ assert_match /module #{module_name}/, body, "the file '#{path}.rb' should be a module"
206
+ yield body if block_given?
207
+ end
208
+ end
209
+
210
+ # Asserts that the given CSS stylesheet file was generated.
211
+ # It takes a path without the <tt>.css</tt> part.
212
+ # The contents of the stylesheet source file is passed to a block.
213
+ def assert_generated_stylesheet(path)
214
+ assert_generated_file("public/stylesheets/#{path}.css") do |body|
215
+ yield body if block_given?
216
+ end
217
+ end
218
+
219
+ # Asserts that the given YAML file was generated.
220
+ # It takes a path without the <tt>.yml</tt> part.
221
+ # The parsed YAML tree is passed to a block.
222
+ def assert_generated_yaml(path)
223
+ assert_generated_file("#{path}.yml") do |body|
224
+ yaml = YAML.load(body)
225
+ assert yaml, 'YAML data missing'
226
+ yield yaml if block_given?
227
+ end
228
+ end
229
+
230
+ # Asserts that the given fixtures YAML file was generated.
231
+ # It takes a fixture name without the <tt>.yml</tt> part.
232
+ # The parsed YAML tree is passed to a block.
233
+ def assert_generated_fixtures_for(name)
234
+ assert_generated_yaml "test/fixtures/#{name.to_s.underscore}" do |yaml|
235
+ yield yaml if block_given?
236
+ end
237
+ end
238
+
239
+ # Asserts that the given views were generated.
240
+ # It takes a controller name and a list of views (including extensions).
241
+ # The body of each view is passed to a block.
242
+ def assert_generated_views_for(name, *actions)
243
+ actions.each do |action|
244
+ assert_generated_file("app/views/#{name.to_s.underscore}/#{action}") do |body|
245
+ yield body if block_given?
246
+ end
247
+ end
248
+ end
249
+
250
+ def assert_generated_migration(name, parent = "ActiveRecord::Migration")
251
+ file = Dir.glob("#{RAILS_ROOT}/db/migrate/*_#{name.to_s.underscore}.rb").first
252
+ file = file.match(/db\/migrate\/[0-9]+_\w+/).to_s
253
+ assert_generated_class file, parent do |body|
254
+ assert_match /timestamps/, body, "should have timestamps defined"
255
+ yield body if block_given?
256
+ end
257
+ end
258
+
259
+ # Asserts that the given migration file was not generated.
260
+ # It takes the name of the migration as a parameter.
261
+ def assert_skipped_migration(name)
262
+ migration_file = "#{RAILS_ROOT}/db/migrate/001_#{name.to_s.underscore}.rb"
263
+ assert !File.exist?(migration_file), "should not create migration #{migration_file}"
264
+ end
265
+
266
+ # Asserts that the given resource was added to the routes.
267
+ def assert_added_route_for(name)
268
+ assert_generated_file("config/routes.rb") do |body|
269
+ assert_match /map.resources :#{name.to_s.underscore}/, body,
270
+ "should add route for :#{name.to_s.underscore}"
271
+ end
272
+ end
273
+
274
+ # Asserts that the given methods are defined in the body.
275
+ # This does assume standard rails code conventions with regards to the source code.
276
+ # The body of each individual method is passed to a block.
277
+ def assert_has_method(body, *methods)
278
+ methods.each do |name|
279
+ assert body =~ /^ def #{name}(\(.+\))?\n((\n| .*\n)*) end/, "should have method #{name}"
280
+ yield(name, $2) if block_given?
281
+ end
282
+ end
283
+
284
+ # Asserts that the given column is defined in the migration.
285
+ def assert_generated_column(body, name, type)
286
+ assert_match /t\.#{type.to_s} :#{name.to_s}/, body, "should have column #{name.to_s} defined"
287
+ end
288
+ end
@@ -0,0 +1,41 @@
1
+ require 'rubygems'
2
+ require 'ruby-debug'
3
+ require 'active_support'
4
+ require 'active_record'
5
+ require 'action_controller'
6
+ require 'action_view'
7
+
8
+ require 'shoulda'
9
+
10
+ require 'mocha'
11
+
12
+ require File.join(File.dirname(__FILE__), 'shoulda_macros', 'generator_macros')
13
+
14
+
15
+
16
+ require File.join(File.dirname(__FILE__), 'stolen_from_railties')
17
+
18
+ unless defined?(RAILS_DEFAULT_LOGGER)
19
+ @test_log = File.join(RAILS_ROOT, 'test.log')
20
+ RAILS_DEFAULT_LOGGER = Logger.new(@test_log)
21
+ end
22
+
23
+ Rails::Generator::Base.prepend_sources Rails::Generator::PathSource.new(:shoulda_generator, File.join(File.dirname(__FILE__), "..", "rails_generators"))
24
+
25
+ class GeneratorTestCase
26
+ # Asserts that the given factory was created.
27
+ def assert_generated_factory_for(name)
28
+ assert_generated_file "test/factories/#{name.to_s.underscore}_factory.rb"
29
+ end
30
+
31
+ # Asserts that the given factory was NOT created.
32
+ def deny_generated_factory_for(name)
33
+ deny_file_exists "test/factories/#{name.to_s.underscore}_factory.rb"
34
+ end
35
+
36
+ # asserts that the given file DOES NOT exists
37
+ def deny_file_exists(path)
38
+ assert ! File.exist?("#{RAILS_ROOT}/#{path}"),
39
+ "The file '#{RAILS_ROOT}/#{path}' should not exist"
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i18n_shoulda_generator
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Josh Nichols
13
+ - Martijn Storck
14
+ - Luis Prill Sempere
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-03-05 00:00:00 +01:00
20
+ default_executable:
21
+ dependencies: []
22
+
23
+ description: Generators which create tests using shoulda and HAML, fully i18nized.
24
+ email: ovantu@gmail.com
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - LICENSE
33
+ - Manifest
34
+ - Rakefile
35
+ - README.markdown
36
+ - TODO
37
+ - VERSION.yml
38
+ - rails_generators/shoulda_model/shoulda_model_generator.rb
39
+ - rails_generators/shoulda_model/templates/factory.rb
40
+ - rails_generators/shoulda_model/templates/fixtures.yml
41
+ - rails_generators/shoulda_model/templates/migration.rb
42
+ - rails_generators/shoulda_model/templates/model.rb
43
+ - rails_generators/shoulda_model/templates/unit_test.rb
44
+ - rails_generators/shoulda_model/USAGE
45
+ - rails_generators/shoulda_scaffold/shoulda_scaffold_generator.rb
46
+ - rails_generators/shoulda_scaffold/templates/blueprint/ie.css
47
+ - rails_generators/shoulda_scaffold/templates/blueprint/print.css
48
+ - rails_generators/shoulda_scaffold/templates/blueprint/screen.css
49
+ - rails_generators/shoulda_scaffold/templates/controller.rb
50
+ - rails_generators/shoulda_scaffold/templates/erb/_form.html.erb
51
+ - rails_generators/shoulda_scaffold/templates/erb/edit.html.erb
52
+ - rails_generators/shoulda_scaffold/templates/erb/index.html.erb
53
+ - rails_generators/shoulda_scaffold/templates/erb/layout.html.erb
54
+ - rails_generators/shoulda_scaffold/templates/erb/new.html.erb
55
+ - rails_generators/shoulda_scaffold/templates/erb/show.html.erb
56
+ - rails_generators/shoulda_scaffold/templates/functional_test/basic.rb
57
+ - rails_generators/shoulda_scaffold/templates/haml/_form.html.haml
58
+ - rails_generators/shoulda_scaffold/templates/haml/edit.html.haml
59
+ - rails_generators/shoulda_scaffold/templates/haml/index.html.haml
60
+ - rails_generators/shoulda_scaffold/templates/haml/layout.html.haml
61
+ - rails_generators/shoulda_scaffold/templates/haml/new.html.haml
62
+ - rails_generators/shoulda_scaffold/templates/haml/show.html.haml
63
+ - rails_generators/shoulda_scaffold/templates/helper.rb
64
+ - rails_generators/shoulda_scaffold/USAGE
65
+ - test/fixtures/about_yml_plugins/bad_about_yml/about.yml
66
+ - test/fixtures/about_yml_plugins/bad_about_yml/init.rb
67
+ - test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb
68
+ - test/fixtures/eager/zoo/reptile_house.rb
69
+ - test/fixtures/eager/zoo.rb
70
+ - test/fixtures/environment_with_constant.rb
71
+ - test/fixtures/lib/generators/missing_class/missing_class_generator.rb
72
+ - test/fixtures/lib/generators/working/working_generator.rb
73
+ - test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb
74
+ - test/fixtures/plugins/default/gemlike/init.rb
75
+ - test/fixtures/plugins/default/gemlike/lib/gemlike.rb
76
+ - test/fixtures/plugins/default/gemlike/rails/init.rb
77
+ - test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb
78
+ - test/fixtures/plugins/default/stubby/about.yml
79
+ - test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb
80
+ - test/fixtures/plugins/default/stubby/init.rb
81
+ - test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb
82
+ - test/rails_generators/shoulda_model_generator_test.rb
83
+ - test/shoulda_macros/generator_macros.rb
84
+ - test/stolen_from_railties.rb
85
+ - test/test_helper.rb
86
+ has_rdoc: true
87
+ homepage: http://github.com/LuNiPriSe/shoulda_generator
88
+ licenses: []
89
+
90
+ post_install_message:
91
+ rdoc_options: []
92
+
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ requirements: []
110
+
111
+ rubyforge_project:
112
+ rubygems_version: 1.3.6
113
+ signing_key:
114
+ specification_version: 2
115
+ summary: Generators which create tests using shoulda and HAML, fully i18nized.
116
+ test_files: []
117
+