forked from dchelimsky/rspec-rails
-
Notifications
You must be signed in to change notification settings - Fork 1
/
rspec_generator.rb
72 lines (56 loc) · 2.3 KB
/
rspec_generator.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
require 'rbconfig'
# This generator bootstraps a Rails project for use with RSpec
class RspecGenerator < Rails::Generator::Base
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
Config::CONFIG['ruby_install_name'])
def initialize(runtime_args, runtime_options = {})
if test ?f, 'spec/spec_helper.rb'
puts <<-HELPFUL_INSTRUCTIONS
It looks like you are upgrading rspec-rails in this application. Please let
this script overwrite everything it wants to with the following exceptions,
*if* you have customized any of these files:
* spec/spec.opts
* spec/rcov.opts
* spec/spec_helper.rb
If you have customized spec/spec_helper.rb, please set aside a copy of that
file so that it can be updated and you can manually restore your changes.
HELPFUL_INSTRUCTIONS
end
Dir.mkdir('lib/tasks') unless File.directory?('lib/tasks')
if Rails::VERSION::STRING >= '2.1'
test_env = 'config/environments/test.rb'
contents = File.read(test_env)
unless contents =~ /config\.gem\s+(\"|\')rspec/m
puts "Configuring rspec and rspec-rails gems in #{test_env} ..."
puts
require File.expand_path('../../../lib/spec/rails/version.rb', __FILE__)
rspec_config = <<-EOF
config.gem 'rspec-rails', :version => '>= #{Spec::Rails::VERSION::STRING}', :lib => false unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
EOF
File.open(test_env, "wb") do |f|
f.puts contents
f.puts
f.puts rspec_config
end
end
end
super
end
def manifest
record do |m|
script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
m.directory 'lib/tasks'
m.file 'rspec.rake', 'lib/tasks/rspec.rake'
m.file 'script/autospec', 'script/autospec', script_options
m.file 'script/spec', 'script/spec', script_options
m.directory 'spec'
m.file 'rcov.opts', 'spec/rcov.opts'
m.file 'spec.opts', 'spec/spec.opts'
m.template 'spec_helper.rb', 'spec/spec_helper.rb'
end
end
protected
def banner
"Usage: #{$0} rspec"
end
end