padrino-gen 0.8.1 → 0.8.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.
- data/README.rdoc +5 -5
- data/VERSION +1 -1
- data/bin/padrino-gen +2 -1
- data/lib/padrino-gen/generators/actions.rb +12 -3
- data/lib/padrino-gen/generators/app.rb +1 -4
- data/lib/padrino-gen/{generators.rb → generators/cli.rb} +13 -34
- data/lib/padrino-gen/generators/components/actions.rb +2 -2
- data/lib/padrino-gen/generators/components/mocks/mocha_gen.rb +11 -7
- data/lib/padrino-gen/generators/components/mocks/rr_gen.rb +12 -10
- data/lib/padrino-gen/generators/components/orms/activerecord_gen.rb +3 -3
- data/lib/padrino-gen/generators/components/orms/datamapper_gen.rb +3 -3
- data/lib/padrino-gen/generators/components/orms/sequel_gen.rb +3 -3
- data/lib/padrino-gen/generators/components/tests/bacon_test_gen.rb +27 -12
- data/lib/padrino-gen/generators/components/tests/riot_test_gen.rb +33 -12
- data/lib/padrino-gen/generators/components/tests/rspec_test_gen.rb +33 -16
- data/lib/padrino-gen/generators/components/tests/shoulda_test_gen.rb +25 -10
- data/lib/padrino-gen/generators/components/tests/testspec_test_gen.rb +25 -10
- data/lib/padrino-gen/generators/controller.rb +1 -4
- data/lib/padrino-gen/generators/mailer.rb +1 -4
- data/lib/padrino-gen/generators/migration.rb +7 -6
- data/lib/padrino-gen/generators/model.rb +5 -5
- data/lib/padrino-gen/generators/project.rb +22 -9
- data/lib/padrino-gen/padrino-tasks/seed.rb +7 -0
- data/lib/padrino-gen.rb +63 -3
- data/padrino-gen.gemspec +7 -6
- data/test/helper.rb +0 -1
- data/test/test_cli.rb +1 -3
- data/test/test_controller_generator.rb +2 -12
- data/test/test_migration_generator.rb +5 -0
- data/test/test_model_generator.rb +9 -4
- data/test/test_project_generator.rb +21 -8
- metadata +5 -4
data/README.rdoc
CHANGED
@@ -49,11 +49,11 @@ You can also instruct the generator to skip a certain component to avoid using o
|
|
49
49
|
|
50
50
|
The available components and their default options are listed below:
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
test:: rspec (default), bacon, shoulda, testspec, riot
|
53
|
+
renderer:: haml (default), erb
|
54
|
+
mock:: none (default), rr
|
55
|
+
script:: none (default), prototype, rightjs
|
56
|
+
orm:: none (default), mongomapper, activerecord, sequel, couchrest
|
57
57
|
|
58
58
|
The generator uses the <tt>bundler</tt> gem to resolve any application dependencies when the application is newly created.
|
59
59
|
The necessary bundler command can be executed automatically through the generator with
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.2
|
data/bin/padrino-gen
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
require 'rubygems'
|
3
3
|
$:.unshift File.dirname(__FILE__) + "/../lib"
|
4
4
|
|
5
5
|
# We try to load the vendored padrino-core if exist
|
@@ -8,6 +8,7 @@ if File.exist?(File.dirname(__FILE__) + "/../../padrino-core/lib")
|
|
8
8
|
end
|
9
9
|
|
10
10
|
require 'padrino-gen'
|
11
|
+
require 'padrino-gen/generators/cli'
|
11
12
|
|
12
13
|
# We need our config boot because we need to load registered generators so:
|
13
14
|
Padrino::Generators::Cli.start(ARGV)
|
@@ -28,7 +28,7 @@ module Padrino
|
|
28
28
|
# include_component_module_for(:mock, 'rr')
|
29
29
|
def include_component_module_for(component, choice=nil)
|
30
30
|
choice = fetch_component_choice(component) unless choice
|
31
|
-
return if choice.to_s == 'none'
|
31
|
+
return false if choice.to_s == 'none'
|
32
32
|
self.class.send(:include, generator_module_for(choice, component))
|
33
33
|
end
|
34
34
|
|
@@ -130,7 +130,6 @@ module Padrino
|
|
130
130
|
end
|
131
131
|
|
132
132
|
module ClassMethods
|
133
|
-
|
134
133
|
# Defines a class option to allow a component to be chosen and add to component type list
|
135
134
|
# Also builds the available_choices hash of which component choices are supported
|
136
135
|
# component_option :test, "Testing framework", :aliases => '-t', :choices => [:bacon, :shoulda]
|
@@ -141,6 +140,16 @@ module Padrino
|
|
141
140
|
class_option name, :default => options[:default] || options[:choices].first, :aliases => options[:aliases], :desc => description
|
142
141
|
end
|
143
142
|
|
143
|
+
# Tell to padrino that for this Thor::Group is necessary a task to run
|
144
|
+
def require_arguments!
|
145
|
+
@_require_arguments = true
|
146
|
+
end
|
147
|
+
|
148
|
+
# Return true if we need an arguments for our Thor::Group
|
149
|
+
def require_arguments?
|
150
|
+
@_require_arguments
|
151
|
+
end
|
152
|
+
|
144
153
|
# Returns the compiled list of component types which can be specified
|
145
154
|
def component_types
|
146
155
|
@component_types
|
@@ -153,4 +162,4 @@ module Padrino
|
|
153
162
|
end
|
154
163
|
end
|
155
164
|
end
|
156
|
-
end
|
165
|
+
end
|
@@ -22,10 +22,7 @@ module Padrino
|
|
22
22
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
23
23
|
|
24
24
|
# Show help if no argv given
|
25
|
-
|
26
|
-
given_args = ["-h"] if given_args.empty?
|
27
|
-
super
|
28
|
-
end
|
25
|
+
require_arguments!
|
29
26
|
|
30
27
|
# Copies over the Padrino base admin application
|
31
28
|
def create_app
|
@@ -1,31 +1,12 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
require 'padrino-core/support_lite'
|
3
|
+
|
1
4
|
module Padrino
|
2
5
|
module Generators
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
def load_paths
|
8
|
-
@load_paths ||= Dir[File.dirname(__FILE__) + '/generators/{project,app,mailer,controller,model,migration}.rb']
|
9
|
-
end
|
10
|
-
|
11
|
-
def mappings
|
12
|
-
@mappings ||= SupportLite::OrderedHash.new
|
13
|
-
end
|
14
|
-
|
15
|
-
def add_generator(name, klass)
|
16
|
-
mappings[name] = klass
|
17
|
-
end
|
18
|
-
|
19
|
-
def setup!
|
20
|
-
require 'padrino-gen/generators/actions'
|
21
|
-
Dir[File.dirname(__FILE__) + '/generators/{components}/**/*.rb'].each { |lib| require lib }
|
22
|
-
end
|
23
|
-
|
24
|
-
def lockup!
|
25
|
-
load_paths.each { |lib| require lib }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
6
|
+
##
|
7
|
+
# This class bootstrap +config/boot+ and perform +Padrino::Generators.lockup!+ for handle
|
8
|
+
# 3rd party generators
|
9
|
+
#
|
29
10
|
class Cli < Thor::Group
|
30
11
|
|
31
12
|
# Include related modules
|
@@ -36,8 +17,6 @@ module Padrino
|
|
36
17
|
# We need to TRY to load boot because some of our app dependencies maybe have
|
37
18
|
# custom generators, so is necessary know who are.
|
38
19
|
def load_boot
|
39
|
-
Padrino::Generators.setup!
|
40
|
-
|
41
20
|
begin
|
42
21
|
ENV['PADRINO_LOG_LEVEL'] ||= "test"
|
43
22
|
if options[:root]
|
@@ -47,6 +26,7 @@ module Padrino
|
|
47
26
|
end
|
48
27
|
rescue Exception => e
|
49
28
|
puts "=> Problem loading config/boot.rb"
|
29
|
+
puts ["=> #{e.message}", *e.backtrace].join("\n ")
|
50
30
|
end
|
51
31
|
end
|
52
32
|
|
@@ -57,13 +37,12 @@ module Padrino
|
|
57
37
|
generator_class = Padrino::Generators.mappings[generator_kind]
|
58
38
|
|
59
39
|
if generator_class
|
60
|
-
generator_class.
|
40
|
+
args = ARGV.empty? && generator_class.require_arguments? ? ["-h"] : ARGV
|
41
|
+
generator_class.start(args)
|
61
42
|
else
|
62
43
|
puts "Please specify generator to use (#{Padrino::Generators.mappings.keys.join(", ")})"
|
63
44
|
end
|
64
45
|
end
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
46
|
+
end # Cli
|
47
|
+
end # Generators
|
48
|
+
end # Padrino
|
@@ -33,8 +33,8 @@ module Padrino
|
|
33
33
|
# For orm database components
|
34
34
|
# Generates a standalone migration file based on the given options and columns
|
35
35
|
# options => { :base "...text...", :change_format => "...text...",
|
36
|
-
# :add =>
|
37
|
-
# :remove =>
|
36
|
+
# :add => proc { |field, kind| "add_column :#{table_name}, :#{field}, :#{kind}" },
|
37
|
+
# :remove => proc { |field, kind| "remove_column :#{table_name}, :#{field}" }
|
38
38
|
def output_migration_file(filename, name, columns, options={})
|
39
39
|
if behavior == :revoke
|
40
40
|
remove_migration(name)
|
@@ -6,11 +6,15 @@ module Padrino
|
|
6
6
|
module MochaGen
|
7
7
|
def setup_mock
|
8
8
|
require_dependencies 'mocha', :group => 'test'
|
9
|
-
|
9
|
+
case options[:test].to_s
|
10
|
+
when 'rspec'
|
11
|
+
inject_into_file 'spec/spec_helper.rb', " conf.mock_with :mocha\n", :after => "Spec::Runner.configure do |conf|\n"
|
12
|
+
else
|
13
|
+
insert_mocking_include "Mocha::API"
|
14
|
+
end
|
10
15
|
end
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
16
|
+
end # MochaGen
|
17
|
+
end # Mocks
|
18
|
+
end # Components
|
19
|
+
end # Generators
|
20
|
+
end # Padrino
|
@@ -6,15 +6,17 @@ module Padrino
|
|
6
6
|
module RrGen
|
7
7
|
def setup_mock
|
8
8
|
require_dependencies 'rr', :group => 'test'
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
case options[:test].to_s
|
10
|
+
when 'rspec'
|
11
|
+
inject_into_file 'spec/spec_helper.rb', " conf.mock_with :rr\n", :after => "Spec::Runner.configure do |conf|\n"
|
12
|
+
when 'riot'
|
13
|
+
inject_into_file "test/test_config.rb"," Riot.rr\n", :after => "class Riot::Situation\n"
|
14
|
+
else
|
15
|
+
insert_mocking_include "RR::Adapters::RRMethods", :path => "test/test_config.rb"
|
13
16
|
end
|
14
17
|
end
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
18
|
+
end # RrGen
|
19
|
+
end # Mocks
|
20
|
+
end # Components
|
21
|
+
end # Generators
|
22
|
+
end # Padrino
|
@@ -100,7 +100,7 @@ module Padrino
|
|
100
100
|
def create_model_migration(migration_name, name, columns)
|
101
101
|
output_model_migration(migration_name, name, columns,
|
102
102
|
:base => AR_MIGRATION,
|
103
|
-
:column_format =>
|
103
|
+
:column_format => Proc.new { |field, kind| "t.#{kind.underscore.gsub(/_/, '')} :#{field}" },
|
104
104
|
:up => AR_MODEL_UP_MG, :down => AR_MODEL_DOWN_MG)
|
105
105
|
end
|
106
106
|
|
@@ -113,8 +113,8 @@ module Padrino
|
|
113
113
|
def create_migration_file(migration_name, name, columns)
|
114
114
|
output_migration_file(migration_name, name, columns,
|
115
115
|
:base => AR_MIGRATION, :change_format => AR_CHANGE_MG,
|
116
|
-
:add =>
|
117
|
-
:remove =>
|
116
|
+
:add => Proc.new { |field, kind| "t.#{kind.underscore.gsub(/_/, '')} :#{field}" },
|
117
|
+
:remove => Proc.new { |field, kind| "t.remove :#{field}" })
|
118
118
|
end
|
119
119
|
|
120
120
|
end
|
@@ -73,7 +73,7 @@ module Padrino
|
|
73
73
|
|
74
74
|
def create_model_migration(migration_name, name, columns)
|
75
75
|
output_model_migration(migration_name, name, columns,
|
76
|
-
:column_format =>
|
76
|
+
:column_format => Proc.new { |field, kind| "column :#{field}, #{kind.camelize}" },
|
77
77
|
:base => DM_MIGRATION, :up => DM_MODEL_UP_MG, :down => DM_MODEL_DOWN_MG)
|
78
78
|
end
|
79
79
|
|
@@ -86,8 +86,8 @@ module Padrino
|
|
86
86
|
def create_migration_file(migration_name, name, columns)
|
87
87
|
output_migration_file(migration_name, name, columns,
|
88
88
|
:base => DM_MIGRATION, :change_format => DM_CHANGE_MG,
|
89
|
-
:add =>
|
90
|
-
:remove =>
|
89
|
+
:add => Proc.new { |field, kind| "add_column :#{field}, #{kind.camelize}" },
|
90
|
+
:remove => Proc.new { |field, kind| "drop_column :#{field}" }
|
91
91
|
)
|
92
92
|
end
|
93
93
|
end
|
@@ -59,7 +59,7 @@ module Padrino
|
|
59
59
|
|
60
60
|
def create_model_migration(migration_name, name, columns)
|
61
61
|
output_model_migration(migration_name, name, columns,
|
62
|
-
:column_format =>
|
62
|
+
:column_format => Proc.new { |field, kind| "#{kind.camelize} :#{field}" },
|
63
63
|
:base => SQ_MIGRATION, :up => SQ_MODEL_UP_MG, :down => SQ_MODEL_DOWN_MG)
|
64
64
|
end
|
65
65
|
|
@@ -72,8 +72,8 @@ module Padrino
|
|
72
72
|
def create_migration_file(migration_name, name, columns)
|
73
73
|
output_migration_file(migration_name, name, columns,
|
74
74
|
:base => SQ_MIGRATION, :change_format => SQ_CHANGE_MG,
|
75
|
-
:add =>
|
76
|
-
:remove =>
|
75
|
+
:add => Proc.new { |field, kind| "add_column :#{field}, #{kind.camelize}" },
|
76
|
+
:remove => Proc.new { |field, kind| "drop_column :#{field}" }
|
77
77
|
)
|
78
78
|
end
|
79
79
|
end
|
@@ -10,32 +10,34 @@ module Padrino
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def app
|
13
|
-
|
13
|
+
# Sinatra < 1.0 always disable sessions for test env
|
14
|
+
# so if you need them it's necessary force the use
|
15
|
+
# of Rack::Session::Cookie
|
16
|
+
CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
|
17
|
+
# You can hanlde all padrino applications using instead:
|
18
|
+
# Padrino.application
|
14
19
|
end
|
15
20
|
TEST
|
16
21
|
|
17
|
-
# Setup the testing configuration helper and dependencies
|
18
|
-
def setup_test
|
19
|
-
require_dependencies 'bacon', :group => 'test'
|
20
|
-
insert_test_suite_setup BACON_SETUP
|
21
|
-
end
|
22
|
-
|
23
22
|
BACON_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
24
23
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
25
24
|
|
26
25
|
describe "!NAME!Controller" do
|
27
26
|
it 'returns text at root' do
|
28
|
-
get
|
27
|
+
get "/"
|
29
28
|
last_response.body.should == "some text"
|
30
29
|
end
|
31
30
|
end
|
32
31
|
TEST
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
BACON_RAKE = (<<-TEST).gsub(/^ {10}/, '')
|
34
|
+
require 'rake/testtask'
|
35
|
+
|
36
|
+
Rake::TestTask.new(:test) do |test|
|
37
|
+
test.pattern = '**/*_test.rb'
|
38
|
+
test.verbose = true
|
38
39
|
end
|
40
|
+
TEST
|
39
41
|
|
40
42
|
BACON_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
41
43
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
@@ -48,6 +50,19 @@ module Padrino
|
|
48
50
|
end
|
49
51
|
TEST
|
50
52
|
|
53
|
+
# Setup the testing configuration helper and dependencies
|
54
|
+
def setup_test
|
55
|
+
require_dependencies 'bacon', :group => 'test'
|
56
|
+
insert_test_suite_setup BACON_SETUP, :path => 'test/test_config.rb'
|
57
|
+
create_file destination_root("test/test.rake"), BACON_RAKE
|
58
|
+
end
|
59
|
+
|
60
|
+
# Generates a controller test given the controllers name
|
61
|
+
def generate_controller_test(name)
|
62
|
+
bacon_contents = BACON_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.camelize)
|
63
|
+
create_file destination_root("test/controllers/","#{name}_controller_test.rb"), bacon_contents, :skip => true
|
64
|
+
end
|
65
|
+
|
51
66
|
def generate_model_test(name)
|
52
67
|
bacon_contents = BACON_MODEL_TEST.gsub(/!NAME!/, name.to_s.camelize).gsub(/!DNAME!/, name.downcase.underscore)
|
53
68
|
create_file destination_root("test/models/#{name.to_s.downcase}_test.rb"), bacon_contents, :skip => true
|
@@ -9,44 +9,65 @@ module Padrino
|
|
9
9
|
include Rack::Test::Methods
|
10
10
|
|
11
11
|
def app
|
12
|
-
|
12
|
+
# Sinatra < 1.0 always disable sessions for test env
|
13
|
+
# so if you need them it's necessary force the use
|
14
|
+
# of Rack::Session::Cookie
|
15
|
+
CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
|
16
|
+
# You can hanlde all padrino applications using instead:
|
17
|
+
# Padrino.application
|
13
18
|
end
|
14
19
|
end
|
15
20
|
TEST
|
16
21
|
|
17
|
-
def setup_test
|
18
|
-
require_dependencies 'riot', :group => 'test'
|
19
|
-
insert_test_suite_setup RIOT_SETUP
|
20
|
-
end
|
21
|
-
|
22
22
|
RIOT_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
23
23
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
24
24
|
|
25
25
|
context "!NAME!Controller" do
|
26
26
|
context "description here" do
|
27
|
-
setup
|
27
|
+
setup do
|
28
|
+
get "/"
|
29
|
+
end
|
30
|
+
|
28
31
|
asserts("the response body") { last_response.body }.equals "Hello World"
|
29
32
|
end
|
30
33
|
end
|
31
34
|
TEST
|
32
35
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
36
|
+
RIOT_RAKE = (<<-TEST).gsub(/^ {10}/, '')
|
37
|
+
require 'rake/testtask'
|
38
|
+
|
39
|
+
Rake::TestTask.new(:test) do |test|
|
40
|
+
test.pattern = '**/*_test.rb'
|
41
|
+
test.verbose = true
|
37
42
|
end
|
43
|
+
TEST
|
38
44
|
|
39
45
|
RIOT_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
40
46
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
41
47
|
|
42
48
|
context "!NAME! Model" do
|
43
49
|
context 'can be created' do
|
44
|
-
setup
|
50
|
+
setup do
|
51
|
+
@!DNAME! = !NAME!.new
|
52
|
+
end
|
53
|
+
|
45
54
|
asserts("that record is not nil") { !@!DNAME!.nil? }
|
46
55
|
end
|
47
56
|
end
|
48
57
|
TEST
|
49
58
|
|
59
|
+
def setup_test
|
60
|
+
require_dependencies 'riot', :group => 'test'
|
61
|
+
insert_test_suite_setup RIOT_SETUP
|
62
|
+
create_file destination_root("test/test.rake"), RIOT_RAKE
|
63
|
+
end
|
64
|
+
|
65
|
+
# Generates a controller test given the controllers name
|
66
|
+
def generate_controller_test(name)
|
67
|
+
riot_contents = RIOT_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.camelize)
|
68
|
+
create_file destination_root("test/controllers/#{name}_controller_test.rb"), riot_contents, :skip => true
|
69
|
+
end
|
70
|
+
|
50
71
|
def generate_model_test(name)
|
51
72
|
riot_contents = RIOT_MODEL_TEST.gsub(/!NAME!/, name.to_s.camelize).gsub(/!DNAME!/, name.downcase.underscore)
|
52
73
|
create_file destination_root("test/models/#{name.to_s.downcase}_test.rb"), riot_contents, :skip => true
|
@@ -10,36 +10,40 @@ module Padrino
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def app
|
13
|
-
|
13
|
+
# Sinatra < 1.0 always disable sessions for test env
|
14
|
+
# so if you need them it's necessary force the use
|
15
|
+
# of Rack::Session::Cookie
|
16
|
+
CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
|
17
|
+
# You can hanlde all padrino applications using instead:
|
18
|
+
# Padrino.application
|
14
19
|
end
|
15
20
|
TEST
|
16
21
|
|
17
|
-
# TODO move to spec directory to follow convention
|
18
|
-
def setup_test
|
19
|
-
require_dependencies 'rspec', :group => 'test', :require => 'spec'
|
20
|
-
insert_test_suite_setup RSPEC_SETUP
|
21
|
-
end
|
22
|
-
|
23
22
|
RSPEC_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
24
|
-
require File.dirname(__FILE__) + '/../
|
23
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
25
24
|
|
26
25
|
describe "!NAME!Controller" do
|
27
|
-
|
26
|
+
before do
|
27
|
+
get "/"
|
28
|
+
end
|
29
|
+
|
28
30
|
it "returns hello world" do
|
29
31
|
last_response.body.should == "Hello World"
|
30
32
|
end
|
31
33
|
end
|
32
34
|
TEST
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
RSPEC_RAKE = (<<-TEST).gsub(/^ {10}/, '')
|
37
|
+
require 'spec/rake/spectask'
|
38
|
+
|
39
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
40
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
41
|
+
t.spec_files = Dir['**/*_spec.rb']
|
39
42
|
end
|
43
|
+
TEST
|
40
44
|
|
41
45
|
RSPEC_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
42
|
-
require File.dirname(__FILE__) + '/../
|
46
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
43
47
|
|
44
48
|
describe "!NAME! Model" do
|
45
49
|
it 'can be created' do
|
@@ -49,9 +53,22 @@ module Padrino
|
|
49
53
|
end
|
50
54
|
TEST
|
51
55
|
|
56
|
+
def setup_test
|
57
|
+
require_dependencies 'rspec', :require => 'spec', :group => 'test'
|
58
|
+
insert_test_suite_setup RSPEC_SETUP, :path => "spec/spec_helper.rb"
|
59
|
+
create_file destination_root("spec/spec.rake"), RSPEC_RAKE
|
60
|
+
create_file destination_root("spec/spec.opts"), "--color"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Generates a controller test given the controllers name
|
64
|
+
def generate_controller_test(name)
|
65
|
+
rspec_contents = RSPEC_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.camelize)
|
66
|
+
create_file destination_root("spec/controllers/#{name}_controller_spec.rb"), rspec_contents, :skip => true
|
67
|
+
end
|
68
|
+
|
52
69
|
def generate_model_test(name)
|
53
70
|
rspec_contents = RSPEC_MODEL_TEST.gsub(/!NAME!/, name.to_s.camelize).gsub(/!DNAME!/, name.downcase.underscore)
|
54
|
-
create_file destination_root("
|
71
|
+
create_file destination_root("spec/models/#{name.to_s.downcase}_spec.rb"), rspec_contents, :skip => true
|
55
72
|
end
|
56
73
|
|
57
74
|
end
|
@@ -9,16 +9,16 @@ module Padrino
|
|
9
9
|
include Rack::Test::Methods
|
10
10
|
|
11
11
|
def app
|
12
|
-
|
12
|
+
# Sinatra < 1.0 always disable sessions for test env
|
13
|
+
# so if you need them it's necessary force the use
|
14
|
+
# of Rack::Session::Cookie
|
15
|
+
CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
|
16
|
+
# You can hanlde all padrino applications using instead:
|
17
|
+
# Padrino.application
|
13
18
|
end
|
14
19
|
end
|
15
20
|
TEST
|
16
21
|
|
17
|
-
def setup_test
|
18
|
-
require_dependencies 'shoulda', :group => 'test'
|
19
|
-
insert_test_suite_setup SHOULDA_SETUP
|
20
|
-
end
|
21
|
-
|
22
22
|
SHOULDA_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
23
23
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
24
24
|
|
@@ -35,11 +35,14 @@ module Padrino
|
|
35
35
|
end
|
36
36
|
TEST
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
SHOULDA_RAKE = (<<-TEST).gsub(/^ {10}/, '')
|
39
|
+
require 'rake/testtask'
|
40
|
+
|
41
|
+
Rake::TestTask.new(:test) do |test|
|
42
|
+
test.pattern = '**/*_test.rb'
|
43
|
+
test.verbose = true
|
42
44
|
end
|
45
|
+
TEST
|
43
46
|
|
44
47
|
SHOULDA_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
45
48
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
@@ -54,6 +57,18 @@ module Padrino
|
|
54
57
|
end
|
55
58
|
TEST
|
56
59
|
|
60
|
+
def setup_test
|
61
|
+
require_dependencies 'shoulda', :group => 'test'
|
62
|
+
insert_test_suite_setup SHOULDA_SETUP
|
63
|
+
create_file destination_root("test/test.rake"), SHOULDA_RAKE
|
64
|
+
end
|
65
|
+
|
66
|
+
# Generates a controller test given the controllers name
|
67
|
+
def generate_controller_test(name)
|
68
|
+
shoulda_contents = SHOULDA_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.camelize)
|
69
|
+
create_file destination_root("test/controllers/#{name}_controller_test.rb"), shoulda_contents, :skip => true
|
70
|
+
end
|
71
|
+
|
57
72
|
def generate_model_test(name)
|
58
73
|
shoulda_contents = SHOULDA_MODEL_TEST.gsub(/!NAME!/, name.to_s.camelize).gsub(/!DNAME!/, name.downcase.underscore)
|
59
74
|
create_file destination_root("test/models/#{name.to_s.downcase}_test.rb"), shoulda_contents, :skip => true
|
@@ -9,16 +9,16 @@ module Padrino
|
|
9
9
|
include Rack::Test::Methods
|
10
10
|
|
11
11
|
def app
|
12
|
-
|
12
|
+
# Sinatra < 1.0 always disable sessions for test env
|
13
|
+
# so if you need them it's necessary force the use
|
14
|
+
# of Rack::Session::Cookie
|
15
|
+
CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
|
16
|
+
# You can hanlde all padrino applications using instead:
|
17
|
+
# Padrino.application
|
13
18
|
end
|
14
19
|
end
|
15
20
|
TEST
|
16
21
|
|
17
|
-
def setup_test
|
18
|
-
require_dependencies 'test/spec', :group => 'test'
|
19
|
-
insert_test_suite_setup TESTSPEC_SETUP
|
20
|
-
end
|
21
|
-
|
22
22
|
TESTSPEC_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
23
23
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
24
24
|
|
@@ -30,11 +30,14 @@ module Padrino
|
|
30
30
|
end
|
31
31
|
TEST
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
TESTSPEC_RAKE = (<<-TEST).gsub(/^ {10}/, '')
|
34
|
+
require 'rake/testtask'
|
35
|
+
|
36
|
+
Rake::TestTask.new(:test) do |test|
|
37
|
+
test.pattern = '**/*_test.rb'
|
38
|
+
test.verbose = true
|
37
39
|
end
|
40
|
+
TEST
|
38
41
|
|
39
42
|
TESTSPEC_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
|
40
43
|
require File.dirname(__FILE__) + '/../test_config.rb'
|
@@ -47,6 +50,18 @@ module Padrino
|
|
47
50
|
end
|
48
51
|
TEST
|
49
52
|
|
53
|
+
def setup_test
|
54
|
+
require_dependencies 'test-spec', :require => 'test/spec', :group => 'test'
|
55
|
+
insert_test_suite_setup TESTSPEC_SETUP
|
56
|
+
create_file destination_root("test/test.rake"), TESTSPEC_RAKE
|
57
|
+
end
|
58
|
+
|
59
|
+
# Generates a controller test given the controllers name
|
60
|
+
def generate_controller_test(name)
|
61
|
+
testspec_contents = TESTSPEC_CONTROLLER_TEST.gsub(/!NAME!/, name.to_s.camelize)
|
62
|
+
create_file destination_root("test/controllers/#{name}_controller_test.rb"), testspec_contents, :skip => true
|
63
|
+
end
|
64
|
+
|
50
65
|
def generate_model_test(name)
|
51
66
|
tests_contents = TESTSPEC_MODEL_TEST.gsub(/!NAME!/, name.to_s.camelize).gsub(/!DNAME!/, name.downcase.underscore)
|
52
67
|
create_file destination_root("test/models/#{name.to_s.downcase}_test.rb"), tests_contents, :skip => true
|
@@ -24,10 +24,7 @@ module Padrino
|
|
24
24
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
25
25
|
|
26
26
|
# Show help if no argv given
|
27
|
-
|
28
|
-
given_args = ["-h"] if given_args.empty?
|
29
|
-
super
|
30
|
-
end
|
27
|
+
require_arguments!
|
31
28
|
|
32
29
|
def create_controller
|
33
30
|
self.destination_root = options[:root]
|
@@ -23,10 +23,7 @@ module Padrino
|
|
23
23
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
24
24
|
|
25
25
|
# Show help if no argv given
|
26
|
-
|
27
|
-
given_args = ["-h"] if given_args.empty?
|
28
|
-
super
|
29
|
-
end
|
26
|
+
require_arguments!
|
30
27
|
|
31
28
|
def create_mailer
|
32
29
|
self.destination_root = options[:root]
|
@@ -23,17 +23,18 @@ module Padrino
|
|
23
23
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
24
24
|
|
25
25
|
# Show help if no argv given
|
26
|
-
|
27
|
-
given_args = ["-h"] if given_args.empty?
|
28
|
-
super
|
29
|
-
end
|
26
|
+
require_arguments!
|
30
27
|
|
31
28
|
def create_migration
|
32
29
|
self.destination_root = options[:root]
|
33
30
|
if in_app_root?
|
34
31
|
self.behavior = :revoke if options[:destroy]
|
35
|
-
include_component_module_for(:orm)
|
36
|
-
|
32
|
+
if include_component_module_for(:orm)
|
33
|
+
create_migration_file(name, name, columns)
|
34
|
+
else
|
35
|
+
say "<= You need an ORM adapter for run this generator. Sorry!"
|
36
|
+
raise SystemExit
|
37
|
+
end
|
37
38
|
else
|
38
39
|
say "You are not at the root of a Padrino application! (config/boot.rb not found)" and return unless in_app_root?
|
39
40
|
end
|
@@ -24,16 +24,16 @@ module Padrino
|
|
24
24
|
class_option :skip_migration, :aliases => "-s", :default => false, :type => :boolean
|
25
25
|
|
26
26
|
# Show help if no argv given
|
27
|
-
|
28
|
-
given_args = ["-h"] if given_args.empty?
|
29
|
-
super
|
30
|
-
end
|
27
|
+
require_arguments!
|
31
28
|
|
32
29
|
def create_model
|
33
30
|
self.destination_root = options[:root]
|
34
31
|
if in_app_root?
|
35
32
|
self.behavior = :revoke if options[:destroy]
|
36
|
-
include_component_module_for(:orm)
|
33
|
+
unless include_component_module_for(:orm)
|
34
|
+
say "<= You need an ORM adapter for run this generator. Sorry!"
|
35
|
+
raise SystemExit
|
36
|
+
end
|
37
37
|
include_component_module_for(:test)
|
38
38
|
migration_name = "create_#{name.pluralize.underscore}"
|
39
39
|
create_model_file(name, fields)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'padrino-core/version'
|
2
|
+
|
1
3
|
module Padrino
|
2
4
|
module Generators
|
3
5
|
class Project < Thor::Group
|
@@ -18,22 +20,19 @@ module Padrino
|
|
18
20
|
|
19
21
|
argument :name, :desc => "The name of your padrino project"
|
20
22
|
|
21
|
-
class_option :run_bundler, :desc => "Run
|
22
|
-
class_option :root, :desc => "The root destination",
|
23
|
-
class_option :dev, :desc => "Use padrino from a git checkout",
|
23
|
+
class_option :run_bundler, :desc => "Run bundle install", :aliases => '-b', :default => false, :type => :boolean
|
24
|
+
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
25
|
+
class_option :dev, :desc => "Use padrino from a git checkout", :default => false, :type => :boolean
|
24
26
|
|
25
27
|
# Definitions for the available customizable components
|
26
28
|
component_option :orm, "database engine", :aliases => '-d', :choices => [:datamapper, :mongomapper, :activerecord, :sequel, :couchrest], :default => :none
|
27
|
-
component_option :test, "testing framework", :aliases => '-t', :choices => [:
|
28
|
-
component_option :mock, "mocking library", :aliases => '-m', :choices => [:mocha, :rr]
|
29
|
+
component_option :test, "testing framework", :aliases => '-t', :choices => [:rspec, :shoulda, :bacon, :testspec, :riot]
|
30
|
+
component_option :mock, "mocking library", :aliases => '-m', :choices => [:mocha, :rr], :default => :none
|
29
31
|
component_option :script, "javascript library", :aliases => '-s', :choices => [:jquery, :prototype, :rightjs], :default => :none
|
30
32
|
component_option :renderer, "template engine", :aliases => '-e', :choices => [:haml, :erb]
|
31
33
|
|
32
34
|
# Show help if no argv given
|
33
|
-
|
34
|
-
given_args = ["-h"] if given_args.empty?
|
35
|
-
super
|
36
|
-
end
|
35
|
+
require_arguments!
|
37
36
|
|
38
37
|
# Copies over the Padrino base application App
|
39
38
|
def setup_project
|
@@ -59,6 +58,20 @@ module Padrino
|
|
59
58
|
in_root { run 'bundle install' }
|
60
59
|
end
|
61
60
|
end
|
61
|
+
|
62
|
+
# Finish message
|
63
|
+
def finish
|
64
|
+
say (<<-TEXT).gsub(/ {8}/,'')
|
65
|
+
|
66
|
+
=================================================================
|
67
|
+
#{name} has been successfully created, now follow this steps:
|
68
|
+
=================================================================
|
69
|
+
1) cd #{name}
|
70
|
+
2) bundle install
|
71
|
+
=================================================================
|
72
|
+
|
73
|
+
TEXT
|
74
|
+
end
|
62
75
|
end
|
63
76
|
end
|
64
77
|
end
|
data/lib/padrino-gen.rb
CHANGED
@@ -1,6 +1,66 @@
|
|
1
|
-
require 'thor/group'
|
2
1
|
require 'padrino-core/support_lite'
|
3
|
-
require 'padrino-core/version'
|
4
|
-
require 'padrino-gen/generators'
|
5
2
|
require 'padrino-core/tasks'
|
3
|
+
|
4
|
+
module Padrino
|
5
|
+
##
|
6
|
+
# This module it's used for register generators
|
7
|
+
#
|
8
|
+
# Can be useful for 3rd party generators:
|
9
|
+
#
|
10
|
+
# # custom_generator.rb
|
11
|
+
# class CustomGenerator < Thor::Group
|
12
|
+
# Padrino::Generators.add_generator(:custom_generator, self)
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# Now for handle generators in padrino you need to add it to into +load_paths+
|
16
|
+
#
|
17
|
+
# Padrino::Generators.load_paths << "custom_generator.rb"
|
18
|
+
#
|
19
|
+
module Generators
|
20
|
+
|
21
|
+
DEV_PATH = File.expand_path("../../", File.dirname(__FILE__))
|
22
|
+
|
23
|
+
class << self
|
24
|
+
|
25
|
+
##
|
26
|
+
# Here we store our generators paths
|
27
|
+
#
|
28
|
+
def load_paths
|
29
|
+
@_files ||= []
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Return a ordered list of task with their class
|
34
|
+
#
|
35
|
+
def mappings
|
36
|
+
@_mappings ||= SupportLite::OrderedHash.new
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Gloabl add a new generator class to +padrino-gen+
|
41
|
+
#
|
42
|
+
def add_generator(name, klass)
|
43
|
+
mappings[name] = klass
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Load Global Actions and Component Actions then all files in +load_path+.
|
48
|
+
#
|
49
|
+
def lockup!
|
50
|
+
require 'padrino-gen/generators/actions'
|
51
|
+
Dir[File.dirname(__FILE__) + '/padrino-gen/generators/components/**/*.rb'].each { |lib| require lib }
|
52
|
+
load_paths.flatten.each { |file| require file }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end # Generators
|
56
|
+
end # Padrino
|
57
|
+
|
58
|
+
##
|
59
|
+
# We add our generators to Padrino::Genererator
|
60
|
+
#
|
61
|
+
Padrino::Generators.load_paths << Dir[File.dirname(__FILE__) + '/padrino-gen/generators/{project,app,mailer,controller,model,migration}.rb']
|
62
|
+
|
63
|
+
##
|
64
|
+
# We add our tasks to padrino-core
|
65
|
+
#
|
6
66
|
Padrino::Tasks.files << Dir[File.dirname(__FILE__) + "/padrino-gen/padrino-tasks/**/*.rb"]
|
data/padrino-gen.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{padrino-gen}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-17}
|
13
13
|
s.default_executable = %q{padrino-gen}
|
14
14
|
s.description = %q{Generators for easily creating and building padrino applications from the console}
|
15
15
|
s.email = %q{padrinorb@gmail.com}
|
@@ -26,13 +26,13 @@ Gem::Specification.new do |s|
|
|
26
26
|
"VERSION",
|
27
27
|
"bin/padrino-gen",
|
28
28
|
"lib/padrino-gen.rb",
|
29
|
-
"lib/padrino-gen/generators.rb",
|
30
29
|
"lib/padrino-gen/generators/actions.rb",
|
31
30
|
"lib/padrino-gen/generators/app.rb",
|
32
31
|
"lib/padrino-gen/generators/app/app.rb.tt",
|
33
32
|
"lib/padrino-gen/generators/app/controllers/.empty_directory",
|
34
33
|
"lib/padrino-gen/generators/app/helpers/.empty_directory",
|
35
34
|
"lib/padrino-gen/generators/app/views/.empty_directory",
|
35
|
+
"lib/padrino-gen/generators/cli.rb",
|
36
36
|
"lib/padrino-gen/generators/components/actions.rb",
|
37
37
|
"lib/padrino-gen/generators/components/mocks/mocha_gen.rb",
|
38
38
|
"lib/padrino-gen/generators/components/mocks/rr_gen.rb",
|
@@ -83,6 +83,7 @@ Gem::Specification.new do |s|
|
|
83
83
|
"lib/padrino-gen/padrino-tasks/activerecord.rb",
|
84
84
|
"lib/padrino-gen/padrino-tasks/datamapper.rb",
|
85
85
|
"lib/padrino-gen/padrino-tasks/locale.rb",
|
86
|
+
"lib/padrino-gen/padrino-tasks/seed.rb",
|
86
87
|
"padrino-gen.gemspec",
|
87
88
|
"test/helper.rb",
|
88
89
|
"test/test_app_generator.rb",
|
@@ -107,7 +108,7 @@ Gem::Specification.new do |s|
|
|
107
108
|
|
108
109
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
109
110
|
s.add_runtime_dependency(%q<sinatra>, [">= 0.9.2"])
|
110
|
-
s.add_runtime_dependency(%q<padrino-core>, ["= 0.8.
|
111
|
+
s.add_runtime_dependency(%q<padrino-core>, ["= 0.8.2"])
|
111
112
|
s.add_runtime_dependency(%q<thor>, [">= 0.13.0"])
|
112
113
|
s.add_runtime_dependency(%q<bundler>, [">= 0.9.3"])
|
113
114
|
s.add_development_dependency(%q<haml>, [">= 2.2.1"])
|
@@ -118,7 +119,7 @@ Gem::Specification.new do |s|
|
|
118
119
|
s.add_development_dependency(%q<fakeweb>, [">= 1.2.3"])
|
119
120
|
else
|
120
121
|
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
121
|
-
s.add_dependency(%q<padrino-core>, ["= 0.8.
|
122
|
+
s.add_dependency(%q<padrino-core>, ["= 0.8.2"])
|
122
123
|
s.add_dependency(%q<thor>, [">= 0.13.0"])
|
123
124
|
s.add_dependency(%q<bundler>, [">= 0.9.3"])
|
124
125
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
@@ -130,7 +131,7 @@ Gem::Specification.new do |s|
|
|
130
131
|
end
|
131
132
|
else
|
132
133
|
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
133
|
-
s.add_dependency(%q<padrino-core>, ["= 0.8.
|
134
|
+
s.add_dependency(%q<padrino-core>, ["= 0.8.2"])
|
134
135
|
s.add_dependency(%q<thor>, [">= 0.13.0"])
|
135
136
|
s.add_dependency(%q<bundler>, [">= 0.9.3"])
|
136
137
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
data/test/helper.rb
CHANGED
data/test/test_cli.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
-
require '
|
3
|
-
require 'fakeweb'
|
2
|
+
require 'padrino-gen/generators/cli'
|
4
3
|
|
5
4
|
class TestCli < Test::Unit::TestCase
|
6
5
|
def setup
|
7
|
-
FakeWeb.allow_net_connect = false
|
8
6
|
`rm -rf /tmp/sample_project`
|
9
7
|
@cli = Padrino::Generators::Cli.dup
|
10
8
|
@project = Padrino::Generators::Project.dup
|
@@ -55,7 +55,7 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
55
55
|
should "generate controller test for rspec" do
|
56
56
|
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=rspec']) }
|
57
57
|
silence_logger { @cont_gen.start(['demo_items', '-r=/tmp/sample_project']) }
|
58
|
-
assert_match_in_file(/describe "DemoItemsController" do/m, '/tmp/sample_project/
|
58
|
+
assert_match_in_file(/describe "DemoItemsController" do/m, '/tmp/sample_project/spec/controllers/demo_items_controller_spec.rb')
|
59
59
|
end
|
60
60
|
|
61
61
|
should "generate controller test for shoulda" do
|
@@ -93,18 +93,8 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
93
93
|
silence_logger { @cont_gen.start(['demo_items','-r=/tmp/sample_project','-d'])}
|
94
94
|
assert_no_file_exists(@controller_path)
|
95
95
|
assert_no_file_exists('/tmp/sample_project/app/helpers/demo_items_helper.rb')
|
96
|
-
assert_no_file_exists('/tmp/sample_project/
|
97
|
-
end
|
98
|
-
|
99
|
-
should "remove url routes" do
|
100
|
-
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=bacon'])}
|
101
|
-
silence_logger { @cont_gen.start(['demo_items', "get:yoda","post:yada",'-r=/tmp/sample_project']) }
|
102
|
-
silence_logger { @cont_gen.start(['demo_items','-r=/tmp/sample_project','-d'])}
|
103
|
-
# assert_no_match_in_file(/map\(\:yoda\).to\(\"\/demo_items\/yoda\"\)/m,@route_path)
|
104
|
-
# assert_no_match_in_file(/map\(\:yada\).to\(\"\/demo_items\/yada\"\)/m,@route_path)
|
96
|
+
assert_no_file_exists('/tmp/sample_project/spec/controllers/demo_items_controller_spec.rb')
|
105
97
|
end
|
106
98
|
|
107
99
|
end
|
108
|
-
|
109
|
-
|
110
100
|
end
|
@@ -15,6 +15,11 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
15
15
|
assert_no_file_exists('/tmp/db/migration')
|
16
16
|
end
|
17
17
|
|
18
|
+
should "fail if we don't use an adapter" do
|
19
|
+
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=bacon']) }
|
20
|
+
assert_raise(SystemExit) { silence_logger { @mig_gen.start(['AddEmailToUsers', '-r=/tmp/sample_project']) } }
|
21
|
+
end
|
22
|
+
|
18
23
|
should "generate migration inside app root" do
|
19
24
|
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=bacon', '-d=activerecord']) }
|
20
25
|
response_success = silence_logger { @mig_gen.start(['AddEmailToUsers', '-r=/tmp/sample_project']) }
|
@@ -15,6 +15,11 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
15
15
|
assert_no_file_exists('/tmp/app/models/user.rb')
|
16
16
|
end
|
17
17
|
|
18
|
+
should "fail if we don't use an adapter" do
|
19
|
+
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=bacon']) }
|
20
|
+
assert_raise(SystemExit) { silence_logger { @model_gen.start(['user', '-r=/tmp/sample_project']) } }
|
21
|
+
end
|
22
|
+
|
18
23
|
should 'not fail if we don\'t have test component' do
|
19
24
|
silence_logger { @project.start(['sample_project', '--root=/tmp', '--test=none', '-d=activerecord']) }
|
20
25
|
response_success = silence_logger { @model_gen.start(['user', '-r=/tmp/sample_project']) }
|
@@ -199,9 +204,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
199
204
|
should "generate test file for rspec" do
|
200
205
|
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=rspec', '-d=activerecord']) }
|
201
206
|
silence_logger { @model_gen.start(['User', '-r=/tmp/sample_project']) }
|
202
|
-
assert_match_in_file(/describe "User Model"/m, '/tmp/sample_project/
|
203
|
-
assert_match_in_file(/@user = User.new/m, '/tmp/sample_project/
|
204
|
-
assert_match_in_file(/@user\.should\.not\.be\snil/m, '/tmp/sample_project/
|
207
|
+
assert_match_in_file(/describe "User Model"/m, '/tmp/sample_project/spec/models/user_spec.rb')
|
208
|
+
assert_match_in_file(/@user = User.new/m, '/tmp/sample_project/spec/models/user_spec.rb')
|
209
|
+
assert_match_in_file(/@user\.should\.not\.be\snil/m, '/tmp/sample_project/spec/models/user_spec.rb')
|
205
210
|
end
|
206
211
|
|
207
212
|
# SHOULDA
|
@@ -239,7 +244,7 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
239
244
|
silence_logger { @project.start(['sample_project', '--root=/tmp', '--script=none', '-t=rspec', '-d=activerecord']) }
|
240
245
|
silence_logger { @model_gen.start(['User', '-r=/tmp/sample_project']) }
|
241
246
|
silence_logger { @model_gen.start(['User', '-r=/tmp/sample_project', '-d']) }
|
242
|
-
assert_no_file_exists('/tmp/sample_project/
|
247
|
+
assert_no_file_exists('/tmp/sample_project/spec/models/user_spec.rb')
|
243
248
|
end
|
244
249
|
|
245
250
|
should "destroy the model migration" do
|
@@ -15,7 +15,7 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
15
15
|
assert_file_exists('/tmp/sample_project')
|
16
16
|
assert_file_exists('/tmp/sample_project/app')
|
17
17
|
assert_file_exists('/tmp/sample_project/config/boot.rb')
|
18
|
-
assert_file_exists('/tmp/sample_project/
|
18
|
+
assert_file_exists('/tmp/sample_project/spec/spec_helper.rb')
|
19
19
|
end
|
20
20
|
|
21
21
|
should "not create models folder if no orm is chosen" do
|
@@ -38,8 +38,8 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
38
38
|
silence_logger { @project.start(['sample_project', '--root=/tmp']) }
|
39
39
|
components_chosen = YAML.load_file('/tmp/sample_project/.components')
|
40
40
|
assert_equal 'none', components_chosen[:orm]
|
41
|
-
assert_equal '
|
42
|
-
assert_equal '
|
41
|
+
assert_equal 'rspec', components_chosen[:test]
|
42
|
+
assert_equal 'none', components_chosen[:mock]
|
43
43
|
assert_equal 'none', components_chosen[:script]
|
44
44
|
assert_equal 'haml', components_chosen[:renderer]
|
45
45
|
end
|
@@ -88,12 +88,20 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
88
88
|
assert_match_in_file(/RR::Adapters::RRMethods/m, '/tmp/sample_project/test/test_config.rb')
|
89
89
|
end
|
90
90
|
|
91
|
-
should "properly generate
|
91
|
+
should "properly generate for mocha and rspec" do
|
92
92
|
buffer = silence_logger { @project.start(['sample_project', '--root=/tmp', '--mock=mocha', '--script=none']) }
|
93
93
|
assert_match /Applying.*?mocha.*?mock/, buffer
|
94
94
|
assert_match_in_file(/gem 'mocha'/, '/tmp/sample_project/Gemfile')
|
95
|
-
assert_match_in_file(/
|
95
|
+
assert_match_in_file(/conf.mock_with :mocha/m, '/tmp/sample_project/spec/spec_helper.rb')
|
96
96
|
end
|
97
|
+
|
98
|
+
should "properly generate for rr and rspec" do
|
99
|
+
buffer = silence_logger { @project.start(['sample_project', '--root=/tmp', '--mock=rr', '--script=none']) }
|
100
|
+
assert_match /Applying.*?rr.*?mock/, buffer
|
101
|
+
assert_match_in_file(/gem 'rr'/, '/tmp/sample_project/Gemfile')
|
102
|
+
assert_match_in_file(/conf.mock_with :rr/m, '/tmp/sample_project/spec/spec_helper.rb')
|
103
|
+
end
|
104
|
+
|
97
105
|
end
|
98
106
|
|
99
107
|
context "the generator for orm components" do
|
@@ -185,6 +193,7 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
185
193
|
assert_match_in_file(/gem 'bacon'/, '/tmp/sample_project/Gemfile')
|
186
194
|
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/test/test_config.rb')
|
187
195
|
assert_match_in_file(/Bacon::Context/, '/tmp/sample_project/test/test_config.rb')
|
196
|
+
assert_file_exists('/tmp/sample_project/test/test.rake')
|
188
197
|
end
|
189
198
|
|
190
199
|
should "properly generate for riot" do
|
@@ -193,14 +202,16 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
193
202
|
assert_match_in_file(/gem 'riot'/, '/tmp/sample_project/Gemfile')
|
194
203
|
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/test/test_config.rb')
|
195
204
|
assert_match_in_file(/Riot::Situation/, '/tmp/sample_project/test/test_config.rb')
|
205
|
+
assert_file_exists('/tmp/sample_project/test/test.rake')
|
196
206
|
end
|
197
207
|
|
198
208
|
should "properly generate for rspec" do
|
199
209
|
buffer = silence_logger { @project.start(['sample_project', '--root=/tmp', '--test=rspec', '--script=none']) }
|
200
210
|
assert_match /Applying.*?rspec.*?test/, buffer
|
201
211
|
assert_match_in_file(/gem 'rspec'.*?:require => "spec"/, '/tmp/sample_project/Gemfile')
|
202
|
-
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/
|
203
|
-
assert_match_in_file(/Spec::Runner/, '/tmp/sample_project/
|
212
|
+
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/spec/spec_helper.rb')
|
213
|
+
assert_match_in_file(/Spec::Runner/, '/tmp/sample_project/spec/spec_helper.rb')
|
214
|
+
assert_file_exists('/tmp/sample_project/spec/spec.rake')
|
204
215
|
end
|
205
216
|
|
206
217
|
should "properly generate for shoulda" do
|
@@ -209,14 +220,16 @@ class TestProjectGenerator < Test::Unit::TestCase
|
|
209
220
|
assert_match_in_file(/gem 'shoulda'/, '/tmp/sample_project/Gemfile')
|
210
221
|
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/test/test_config.rb')
|
211
222
|
assert_match_in_file(/Test::Unit::TestCase/, '/tmp/sample_project/test/test_config.rb')
|
223
|
+
assert_file_exists('/tmp/sample_project/test/test.rake')
|
212
224
|
end
|
213
225
|
|
214
226
|
should "properly generate for testspec" do
|
215
227
|
buffer = silence_logger { @project.start(['sample_project', '--root=/tmp', '--test=testspec', '--script=none']) }
|
216
228
|
assert_match /Applying.*?testspec.*?test/, buffer
|
217
|
-
assert_match_in_file(/gem 'test\/spec
|
229
|
+
assert_match_in_file(/gem 'test-spec'.*?:require => "test\/spec"/, '/tmp/sample_project/Gemfile')
|
218
230
|
assert_match_in_file(/PADRINO_ENV = 'test' unless defined\?\(PADRINO_ENV\)/, '/tmp/sample_project/test/test_config.rb')
|
219
231
|
assert_match_in_file(/Test::Unit::TestCase/, '/tmp/sample_project/test/test_config.rb')
|
232
|
+
assert_file_exists('/tmp/sample_project/test/test.rake')
|
220
233
|
end
|
221
234
|
end
|
222
235
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2010-02-
|
15
|
+
date: 2010-02-17 00:00:00 +01:00
|
16
16
|
default_executable: padrino-gen
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
requirements:
|
34
34
|
- - "="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 0.8.
|
36
|
+
version: 0.8.2
|
37
37
|
version:
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: thor
|
@@ -132,13 +132,13 @@ files:
|
|
132
132
|
- VERSION
|
133
133
|
- bin/padrino-gen
|
134
134
|
- lib/padrino-gen.rb
|
135
|
-
- lib/padrino-gen/generators.rb
|
136
135
|
- lib/padrino-gen/generators/actions.rb
|
137
136
|
- lib/padrino-gen/generators/app.rb
|
138
137
|
- lib/padrino-gen/generators/app/app.rb.tt
|
139
138
|
- lib/padrino-gen/generators/app/controllers/.empty_directory
|
140
139
|
- lib/padrino-gen/generators/app/helpers/.empty_directory
|
141
140
|
- lib/padrino-gen/generators/app/views/.empty_directory
|
141
|
+
- lib/padrino-gen/generators/cli.rb
|
142
142
|
- lib/padrino-gen/generators/components/actions.rb
|
143
143
|
- lib/padrino-gen/generators/components/mocks/mocha_gen.rb
|
144
144
|
- lib/padrino-gen/generators/components/mocks/rr_gen.rb
|
@@ -189,6 +189,7 @@ files:
|
|
189
189
|
- lib/padrino-gen/padrino-tasks/activerecord.rb
|
190
190
|
- lib/padrino-gen/padrino-tasks/datamapper.rb
|
191
191
|
- lib/padrino-gen/padrino-tasks/locale.rb
|
192
|
+
- lib/padrino-gen/padrino-tasks/seed.rb
|
192
193
|
- padrino-gen.gemspec
|
193
194
|
- test/helper.rb
|
194
195
|
- test/test_app_generator.rb
|