trusty-layouts-extension 1.0.0
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.
- data/MIT-LICENSE +98 -0
- data/README.md +115 -0
- data/Rakefile +144 -0
- data/VERSION +1 -0
- data/app/models/haml_filter.rb +5 -0
- data/app/models/rails_page.rb +39 -0
- data/app/views/layouts/trusty.html.haml +1 -0
- data/config/initializers/trusty_config.rb +1 -0
- data/config/routes.rb +0 -0
- data/layouts_extension.rb +21 -0
- data/lib/haml_layouts/models/layout.rb +33 -0
- data/lib/haml_layouts/models/page.rb +33 -0
- data/lib/layouts/engine.rb +5 -0
- data/lib/nested_layouts/tags/core.rb +150 -0
- data/lib/share_layouts/controllers/action_controller.rb +26 -0
- data/lib/share_layouts/helpers/action_view.rb +48 -0
- data/lib/tasks/layouts_extension_tasks.rake +55 -0
- data/lib/trusty-layouts-extension.rb +1 -0
- data/spec/controllers/share_controller_spec.rb +119 -0
- data/spec/datasets/layouts_layouts.rb +36 -0
- data/spec/datasets/layouts_pages.rb +43 -0
- data/spec/lib/haml_layouts/haml_layouts_extension_spec.rb +22 -0
- data/spec/lib/haml_layouts/models/layout_spec.rb +36 -0
- data/spec/lib/haml_layouts/models/page_spec.rb +40 -0
- data/spec/lib/nested_layouts/nested_layouts_extension_spec.rb +16 -0
- data/spec/lib/nested_layouts/tags/core_spec.rb +147 -0
- data/spec/lib/share_layouts/controllers/action_controller_spec.rb +44 -0
- data/spec/lib/share_layouts/helpers/action_view_spec.rb +171 -0
- data/spec/lib/share_layouts/share_layouts_extension_spec.rb +22 -0
- data/spec/models/haml_filter_spec.rb +0 -0
- data/spec/models/rails_page_spec.rb +63 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +22 -0
- data/trusty-layouts-extension.gemspec +31 -0
- data/vendor/plugins/rails_upgrade/MIT-LICENSE +20 -0
- data/vendor/plugins/rails_upgrade/README.rdoc +26 -0
- data/vendor/plugins/rails_upgrade/Rakefile +22 -0
- data/vendor/plugins/rails_upgrade/init.rb +2 -0
- data/vendor/plugins/rails_upgrade/install.rb +38 -0
- data/vendor/plugins/rails_upgrade/lib/application_checker.rb +506 -0
- data/vendor/plugins/rails_upgrade/lib/gemfile_generator.rb +95 -0
- data/vendor/plugins/rails_upgrade/lib/new_configuration_generator.rb +59 -0
- data/vendor/plugins/rails_upgrade/lib/rails_upgrade.rb +0 -0
- data/vendor/plugins/rails_upgrade/lib/routes_upgrader.rb +344 -0
- data/vendor/plugins/rails_upgrade/lib/tasks/rails_upgrade_tasks.rake +79 -0
- data/vendor/plugins/rails_upgrade/test/application_checker_test.rb +344 -0
- data/vendor/plugins/rails_upgrade/test/gemfile_generator_test.rb +72 -0
- data/vendor/plugins/rails_upgrade/test/new_configuration_generator_test.rb +63 -0
- data/vendor/plugins/rails_upgrade/test/routes_upgrader_test.rb +218 -0
- data/vendor/plugins/rails_upgrade/test/test_helper.rb +5 -0
- data/vendor/plugins/rails_upgrade/uninstall.rb +1 -0
- metadata +134 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + "/../../lib")
|
2
|
+
require 'routes_upgrader'
|
3
|
+
require 'gemfile_generator'
|
4
|
+
require 'application_checker'
|
5
|
+
require 'new_configuration_generator'
|
6
|
+
require "active_support"
|
7
|
+
|
8
|
+
require 'fileutils'
|
9
|
+
|
10
|
+
namespace :rails do
|
11
|
+
namespace :upgrade do
|
12
|
+
desc "Runs a battery of checks on your Rails 2.x app and generates a report on required upgrades for Rails 3"
|
13
|
+
task :check do
|
14
|
+
checker = Rails::Upgrading::ApplicationChecker.new
|
15
|
+
checker.run
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Generates a Gemfile for your Rails 3 app out of your config.gem directives"
|
19
|
+
task :gems do
|
20
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
21
|
+
new_gemfile = generator.generate_new_gemfile
|
22
|
+
|
23
|
+
puts new_gemfile
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Create a new, upgraded route file from your current routes.rb"
|
27
|
+
task :routes do
|
28
|
+
upgrader = Rails::Upgrading::RoutesUpgrader.new
|
29
|
+
new_routes = upgrader.generate_new_routes
|
30
|
+
|
31
|
+
puts new_routes
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Extracts your configuration code so you can create a new config/application.rb"
|
35
|
+
task :configuration do
|
36
|
+
upgrader = Rails::Upgrading::NewConfigurationGenerator.new
|
37
|
+
new_config = upgrader.generate_new_application_rb
|
38
|
+
|
39
|
+
puts new_config
|
40
|
+
end
|
41
|
+
|
42
|
+
CLEAR = "\e[0m" unless defined? CLEAR
|
43
|
+
CYAN = "\e[36m" unless defined? CYAN
|
44
|
+
WHITE = "\e[37m" unless defined? WHITE
|
45
|
+
|
46
|
+
desc "Backs up your likely modified files so you can run the Rails 3 generator on your app with little risk"
|
47
|
+
task :backup do
|
48
|
+
files = [".gitignore",
|
49
|
+
"app/controllers/application_controller.rb",
|
50
|
+
"app/helpers/application_helper.rb",
|
51
|
+
"config/routes.rb",
|
52
|
+
"config/environment.rb",
|
53
|
+
"config/environments/development.rb",
|
54
|
+
"config/environments/production.rb",
|
55
|
+
"config/environments/staging.rb",
|
56
|
+
"config/database.yml",
|
57
|
+
"config.ru",
|
58
|
+
"doc/README_FOR_APP",
|
59
|
+
"test/test_helper.rb"]
|
60
|
+
|
61
|
+
puts
|
62
|
+
files.each do |f|
|
63
|
+
if File.exist?(f)
|
64
|
+
puts "#{CYAN}* #{CLEAR}backing up #{WHITE}#{f}#{CLEAR} to #{WHITE}#{f}.rails2#{CLEAR}"
|
65
|
+
FileUtils.cp(f, "#{f}.rails2")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
puts
|
70
|
+
puts "This is a list of the files analyzed and backed up (if they existed);\nyou will probably not want the generator to replace them since\nyou probably modified them (but now they're safe if you accidentally do!)."
|
71
|
+
puts
|
72
|
+
|
73
|
+
files.each do |f|
|
74
|
+
puts "#{CYAN}- #{CLEAR}#{f}"
|
75
|
+
end
|
76
|
+
puts
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,344 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'application_checker'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
tmp_dir = File.expand_path("#{File.dirname(__FILE__)}/fixtures/tmp")
|
6
|
+
|
7
|
+
if defined? BASE_ROOT
|
8
|
+
BASE_ROOT.replace tmp_dir
|
9
|
+
else
|
10
|
+
BASE_ROOT = tmp_dir
|
11
|
+
end
|
12
|
+
FileUtils.mkdir_p BASE_ROOT
|
13
|
+
|
14
|
+
# Stub out methods on upgrader class
|
15
|
+
module Rails
|
16
|
+
module Upgrading
|
17
|
+
class ApplicationChecker
|
18
|
+
attr_reader :alerts, :culprits
|
19
|
+
|
20
|
+
def base_path
|
21
|
+
BASE_ROOT + "/"
|
22
|
+
end
|
23
|
+
|
24
|
+
def in_rails_app?
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize
|
29
|
+
@alerts = {}
|
30
|
+
@culprits = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
def alert(title, text, more_info_url, culprits)
|
34
|
+
@alerts[title] = [text, more_info_url]
|
35
|
+
@culprits[title] = culprits
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class ApplicationCheckerTest < ActiveSupport::TestCase
|
42
|
+
def setup
|
43
|
+
@checker = Rails::Upgrading::ApplicationChecker.new
|
44
|
+
@old_dir = Dir.pwd
|
45
|
+
|
46
|
+
Dir.chdir(BASE_ROOT)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_check_ar_methods_in_controller
|
50
|
+
make_file("app/controllers", "post_controller.rb", "Post.find(:all)")
|
51
|
+
@checker.check_ar_methods
|
52
|
+
|
53
|
+
assert @checker.alerts.has_key?("Soon-to-be-deprecated ActiveRecord calls")
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_check_ar_methods_in_models
|
57
|
+
make_file("app/models", "post.rb", "Post.find(:all)")
|
58
|
+
@checker.check_ar_methods
|
59
|
+
|
60
|
+
key = "Soon-to-be-deprecated ActiveRecord calls"
|
61
|
+
assert @checker.alerts.has_key?(key)
|
62
|
+
assert_equal "app/models/post.rb", @checker.culprits[key].first
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_check_svn_subdirs_are_not_included
|
66
|
+
make_file("app/models/.svn/text-base", "foo.rb.tmp", "Post.find(:all)")
|
67
|
+
@checker.check_ar_methods
|
68
|
+
assert @checker.alerts.empty?
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_check_validation_on_methods
|
72
|
+
make_file("app/models", "post.rb", "validate_on_create :comments_valid?")
|
73
|
+
@checker.check_validation_on_methods
|
74
|
+
|
75
|
+
assert @checker.alerts.has_key?("Updated syntax for validate_on_* methods")
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_check_before_validation_on_methods
|
79
|
+
make_file("app/models", "post.rb", "before_validation_on_create :comments_valid?")
|
80
|
+
@checker.check_before_validation_on_methods
|
81
|
+
|
82
|
+
assert @checker.alerts.has_key?("Updated syntax for before_validation_on_* methods")
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_named_scope_left_over
|
86
|
+
make_file("app/models", "post.rb", "named_scope :failure")
|
87
|
+
@checker.check_ar_methods
|
88
|
+
|
89
|
+
assert @checker.alerts.has_key?("named_scope is now just scope")
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_check_routes
|
93
|
+
make_file("config/", "routes.rb", " map.connect 'fail'")
|
94
|
+
@checker.check_routes
|
95
|
+
|
96
|
+
assert @checker.alerts.has_key?("Old router API")
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_check_for_old_test_help
|
100
|
+
make_file("test/", "test_helper.rb", " require 'test_help'")
|
101
|
+
@checker.check_test_help
|
102
|
+
|
103
|
+
assert @checker.alerts.has_key?("Deprecated test_help path")
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_check_for_old_test_help_with_double_quotes
|
107
|
+
make_file("test/", "test_helper.rb", " require \"test_help\"")
|
108
|
+
@checker.check_test_help
|
109
|
+
|
110
|
+
assert @checker.alerts.has_key?("Deprecated test_help path")
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_check_for_old_test_help_doesnt_see_test_helper
|
114
|
+
make_file("test/", "test_helper.rb", " require 'test_helper'")
|
115
|
+
@checker.check_test_help
|
116
|
+
|
117
|
+
assert !@checker.alerts.has_key?("Deprecated test_help path")
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_check_lack_of_app_dot_rb
|
121
|
+
@checker.check_environment
|
122
|
+
|
123
|
+
assert @checker.alerts.has_key?("New file needed: config/application.rb")
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_check_environment_syntax
|
127
|
+
make_file("config/", "environment.rb", "config.frameworks = []")
|
128
|
+
@checker.check_environment
|
129
|
+
|
130
|
+
assert @checker.alerts.has_key?("Old environment.rb")
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_check_gems
|
134
|
+
make_file("config/", "environment.rb", "config.gem 'rails'")
|
135
|
+
@checker.check_gems
|
136
|
+
|
137
|
+
assert @checker.alerts.has_key?("Old gem bundling (config.gems)")
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_check_gems_finds_nothing
|
141
|
+
@checker.check_gems
|
142
|
+
|
143
|
+
assert_equal false, @checker.alerts.has_key?("Old gem bundling (config.gems)")
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_check_mailer_finds_nothing
|
147
|
+
@checker.check_mailers
|
148
|
+
|
149
|
+
assert_equal false, @checker.alerts.has_key?("Old ActionMailer class API")
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_check_mailer_syntax
|
153
|
+
make_file("app/models/", "notifications.rb", "def signup\nrecipients @users\n end")
|
154
|
+
@checker.check_mailers
|
155
|
+
|
156
|
+
assert @checker.alerts.has_key?("Old ActionMailer class API")
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_check_mailer_syntax_from
|
160
|
+
make_file("app/models/", "notifications.rb", "def signup\nfrom @user\n end")
|
161
|
+
@checker.check_mailers
|
162
|
+
|
163
|
+
assert @checker.alerts.has_key?("Old ActionMailer class API")
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_check_mailer_syntax_subject
|
167
|
+
make_file("app/models/", "notifications.rb", "def signup\nsubject @subject\n end")
|
168
|
+
@checker.check_mailers
|
169
|
+
|
170
|
+
assert @checker.alerts.has_key?("Old ActionMailer class API")
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_check_mailer_syntax_attachment
|
174
|
+
make_file("app/models/", "notifications.rb", "def signup\nattachment 'application/pdf' do |a|\n end")
|
175
|
+
@checker.check_mailers
|
176
|
+
|
177
|
+
assert @checker.alerts.has_key?("Old ActionMailer class API")
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_new_check_mailer_syntax_from
|
181
|
+
make_file("app/models/", "notifications.rb", "def signup\n:from => @users\n end")
|
182
|
+
@checker.check_mailers
|
183
|
+
|
184
|
+
assert ! @checker.alerts.has_key?("Old ActionMailer class API")
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_new_check_mailer_syntax_subject
|
188
|
+
make_file("app/models/", "notifications.rb", "def signup\n:subject => @users\n end")
|
189
|
+
@checker.check_mailers
|
190
|
+
|
191
|
+
assert ! @checker.alerts.has_key?("Old ActionMailer class API")
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_new_check_mailer_syntax_attachments
|
195
|
+
make_file("app/models/", "notifications.rb", "def signup\nattachments['an-image.jp'] = File.read('an-image.jpg')\n end")
|
196
|
+
@checker.check_mailers
|
197
|
+
|
198
|
+
assert ! @checker.alerts.has_key?("Old ActionMailer class API")
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_check_mailer_api
|
202
|
+
make_file("app/controllers/", "thing_controller.rb", "def signup\n Notifications.deliver_signup\n end")
|
203
|
+
@checker.check_mailers
|
204
|
+
|
205
|
+
assert @checker.alerts.has_key?("Deprecated ActionMailer API")
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_check_generators
|
209
|
+
make_file("vendor/plugins/thing/generators/thing/", "thing_generator.rb", "def manifest\n m.whatever\n end")
|
210
|
+
@checker.check_generators
|
211
|
+
|
212
|
+
assert @checker.alerts.has_key?("Old Rails generator API")
|
213
|
+
end
|
214
|
+
|
215
|
+
def test_check_plugins
|
216
|
+
make_file("vendor/plugins/rspec-rails/", "whatever.rb", "def rspec; end")
|
217
|
+
@checker.check_plugins
|
218
|
+
|
219
|
+
assert @checker.alerts.has_key?("Known broken plugins")
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_ignoring_comments
|
223
|
+
make_file("config/", "routes.rb", "# map.connect 'fail'")
|
224
|
+
@checker.check_routes
|
225
|
+
|
226
|
+
assert !@checker.alerts.has_key?("Old router API")
|
227
|
+
end
|
228
|
+
|
229
|
+
def test_check_deprecated_constants_in_app_code
|
230
|
+
make_file("app/controllers/", "thing_controller.rb", "class ThingController; THING = Rails.env; end;")
|
231
|
+
@checker.check_deprecated_constants
|
232
|
+
|
233
|
+
assert @checker.alerts.has_key?("Deprecated constant(s)")
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_check_deprecated_constants_in_lib
|
237
|
+
make_file("lib/", "extra_thing.rb", "class ExtraThing; THING = Rails.env; end;")
|
238
|
+
@checker.check_deprecated_constants
|
239
|
+
|
240
|
+
assert @checker.alerts.has_key?("Deprecated constant(s)")
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_check_deprecated_cookie_finds_nothing
|
244
|
+
@checker.check_old_cookie_secret
|
245
|
+
assert_equal false, @checker.alerts.has_key?("Deprecated cookie secret setting")
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_check_deprecated_cookie_settings
|
249
|
+
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.cookie_verifier_secret = 'OMG'")
|
250
|
+
@checker.check_old_cookie_secret
|
251
|
+
|
252
|
+
assert @checker.alerts.has_key?("Deprecated cookie secret setting")
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_check_deprecated_session_finds_nothing
|
256
|
+
@checker.check_old_session_secret
|
257
|
+
assert_equal false, @checker.alerts.has_key?("Deprecated session secret setting")
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_check_deprecated_session_secret
|
261
|
+
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.session = {\n:whatever => 'woot'\n}")
|
262
|
+
@checker.check_old_session_secret
|
263
|
+
|
264
|
+
assert @checker.alerts.has_key?("Deprecated session secret setting")
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_check_old_session_setting_finds_nothing
|
268
|
+
@checker.check_old_session_setting
|
269
|
+
assert_equal false, @checker.alerts.has_key?("Old session store setting")
|
270
|
+
end
|
271
|
+
|
272
|
+
def test_check_deprecated_session_settings
|
273
|
+
make_file("config/initializers/", "more_settings.rb", "ActionController::Base.session_store = :cookie\nthings.awesome(:whatever)")
|
274
|
+
@checker.check_old_session_setting
|
275
|
+
|
276
|
+
assert @checker.alerts.has_key?("Old session store setting")
|
277
|
+
end
|
278
|
+
|
279
|
+
def test_check_helpers
|
280
|
+
make_file("app/views/users/", "test.html.erb", "<b>blah blah blah</b><% form_for(:thing) do |f| %> <label>doo dah</label> <%= f.whatever %> <% end %>")
|
281
|
+
@checker.check_old_helpers
|
282
|
+
|
283
|
+
assert @checker.alerts.has_key?("Deprecated ERb helper calls")
|
284
|
+
|
285
|
+
end
|
286
|
+
|
287
|
+
def test_check_old_helpers_lets_regular_blocks_pass
|
288
|
+
make_file("app/views/users/", "another_test.html.erb", "<b>blah blah blah</b><% @some_items.each do |item| %> <label>doo dah</label> <%= item %> <% end %>")
|
289
|
+
@checker.check_old_helpers
|
290
|
+
|
291
|
+
assert_equal @checker.alerts.has_key?("Deprecated ERb helper calls"), false
|
292
|
+
end
|
293
|
+
|
294
|
+
def test_check_old_helpers_lets_regular_blocks_pass
|
295
|
+
make_file("app/views/users/", "another_test.html.erb", "<b>blah blah blah</b><% @some_items.each do |item| %> <label>doo dah</label> <%= item %> <% end %>")
|
296
|
+
@checker.check_old_helpers
|
297
|
+
|
298
|
+
assert_equal false, @checker.alerts.has_key?("Deprecated ERb helper calls")
|
299
|
+
end
|
300
|
+
|
301
|
+
def test_check_old_ajax_helpers
|
302
|
+
make_file("app/views/sections", "section.js", "<%= link_to_remote 'section-', :update => 'sections', :url => {:action => :destroy, :controller => 'sections', :id => @section.id } %>")
|
303
|
+
@checker.check_old_ajax_helpers
|
304
|
+
|
305
|
+
assert @checker.alerts.has_key?("Deprecated AJAX helper calls")
|
306
|
+
end
|
307
|
+
|
308
|
+
def test_check_old_ajax_helpers
|
309
|
+
make_file("app/controllers", "application_controller.rb", "filter_parameter_logging :password")
|
310
|
+
@checker.check_old_filter_parameter
|
311
|
+
|
312
|
+
assert @checker.alerts.has_key?("Deprecated filter_parameter_logging calls")
|
313
|
+
end
|
314
|
+
|
315
|
+
def test_check_old_ajax_helpers_empty
|
316
|
+
@checker.check_old_ajax_helpers
|
317
|
+
|
318
|
+
assert ! @checker.alerts.has_key?("Deprecated AJAX helper calls")
|
319
|
+
end
|
320
|
+
|
321
|
+
def test_check_old_action_mailer_sent_on_setting
|
322
|
+
make_file("app/models", "mailer.rb", "sent_on Time.now")
|
323
|
+
@checker.check_old_action_mailer_sent_on_setting
|
324
|
+
|
325
|
+
assert @checker.alerts.has_key?("Deprecated ActionMailer attribute :sent_on")
|
326
|
+
end
|
327
|
+
|
328
|
+
def teardown
|
329
|
+
clear_files
|
330
|
+
|
331
|
+
Dir.chdir(@old_dir)
|
332
|
+
end
|
333
|
+
|
334
|
+
def make_file(where, name=nil, contents=nil)
|
335
|
+
FileUtils.mkdir_p "#{BASE_ROOT}/#{where}"
|
336
|
+
File.open("#{BASE_ROOT}/#{where}/#{name}", "w+") do |f|
|
337
|
+
f.write(contents)
|
338
|
+
end if name
|
339
|
+
end
|
340
|
+
|
341
|
+
def clear_files
|
342
|
+
FileUtils.rm_rf(Dir.glob("#{BASE_ROOT}/*"))
|
343
|
+
end
|
344
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'gemfile_generator'
|
3
|
+
|
4
|
+
# Stub out methods on upgrader class
|
5
|
+
module Rails
|
6
|
+
module Upgrading
|
7
|
+
class GemfileGenerator
|
8
|
+
attr_writer :environment_code
|
9
|
+
|
10
|
+
def has_environment?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def environment_code
|
15
|
+
@environment_code
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class GemfileGeneratorTest < ActiveSupport::TestCase
|
22
|
+
PREAMBLE = <<STR
|
23
|
+
# Edit this Gemfile to bundle your application's dependencies.
|
24
|
+
# This preamble is the current preamble for Rails 3 apps; edit as needed.
|
25
|
+
source 'http://rubygems.org'
|
26
|
+
|
27
|
+
gem 'rails', '3.0.6'
|
28
|
+
|
29
|
+
STR
|
30
|
+
|
31
|
+
def test_generates_with_no_gems
|
32
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
33
|
+
generator.environment_code = ""
|
34
|
+
|
35
|
+
assert_equal PREAMBLE, generator.generate_gemfile
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_generates_with_gem
|
39
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
40
|
+
generator.environment_code = "config.gem 'camping'"
|
41
|
+
|
42
|
+
assert_equal PREAMBLE + "gem 'camping'", generator.generate_gemfile
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_generates_with_version
|
46
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
47
|
+
generator.environment_code = "config.gem 'camping', :version => '2.1.1'"
|
48
|
+
|
49
|
+
assert_equal PREAMBLE + "gem 'camping', '2.1.1'", generator.generate_gemfile
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_can_add_sources
|
53
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
54
|
+
generator.environment_code = "config.gem 'camping', :source => 'http://code.whytheluckystiff.net'"
|
55
|
+
|
56
|
+
assert_equal PREAMBLE + "source 'http://code.whytheluckystiff.net'\ngem 'camping'", generator.generate_gemfile
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_changes_lib_to_new_key
|
60
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
61
|
+
generator.environment_code = "config.gem 'camping', :lib => 'kamping'"
|
62
|
+
|
63
|
+
assert_equal PREAMBLE + "gem 'camping', :require => 'kamping'", generator.generate_gemfile
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_generates_with_all_options
|
67
|
+
generator = Rails::Upgrading::GemfileGenerator.new
|
68
|
+
generator.environment_code = "config.gem 'camping', :lib => 'kamping', :source => 'http://code.whytheluckystiff.net', :version => '2.1.1'"
|
69
|
+
|
70
|
+
assert_equal PREAMBLE + "source 'http://code.whytheluckystiff.net'\ngem 'camping', '2.1.1', :require => 'kamping'", generator.generate_gemfile
|
71
|
+
end
|
72
|
+
end
|