padrino-gen 0.16.0.pre4 → 0.16.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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/bin/padrino-gen +4 -4
- data/lib/padrino-gen/command.rb +2 -2
- data/lib/padrino-gen/generators/actions.rb +68 -64
- data/lib/padrino-gen/generators/app/app.rb.tt +6 -6
- data/lib/padrino-gen/generators/app.rb +19 -19
- data/lib/padrino-gen/generators/cli.rb +16 -19
- data/lib/padrino-gen/generators/component.rb +18 -19
- data/lib/padrino-gen/generators/components/actions.rb +42 -42
- data/lib/padrino-gen/generators/components/mocks/mocha.rb +7 -7
- data/lib/padrino-gen/generators/components/mocks/rr.rb +7 -7
- data/lib/padrino-gen/generators/components/orms/activerecord.rb +158 -156
- data/lib/padrino-gen/generators/components/orms/couchrest.rb +33 -33
- data/lib/padrino-gen/generators/components/orms/datamapper.rb +108 -103
- data/lib/padrino-gen/generators/components/orms/dynamoid.rb +40 -40
- data/lib/padrino-gen/generators/components/orms/minirecord.rb +114 -114
- data/lib/padrino-gen/generators/components/orms/mongoid.rb +65 -65
- data/lib/padrino-gen/generators/components/orms/mongomapper.rb +20 -20
- data/lib/padrino-gen/generators/components/orms/mongomatic.rb +63 -59
- data/lib/padrino-gen/generators/components/orms/ohm.rb +49 -47
- data/lib/padrino-gen/generators/components/orms/ripple.rb +45 -45
- data/lib/padrino-gen/generators/components/orms/sequel.rb +51 -46
- data/lib/padrino-gen/generators/components/renderers/erb.rb +1 -1
- data/lib/padrino-gen/generators/components/renderers/liquid.rb +1 -1
- data/lib/padrino-gen/generators/components/scripts/dojo.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/extcore.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/jquery.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/mootools.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/prototype.rb +8 -8
- data/lib/padrino-gen/generators/components/stylesheets/compass.rb +1 -1
- data/lib/padrino-gen/generators/components/stylesheets/less.rb +4 -4
- data/lib/padrino-gen/generators/components/tests/bacon.rb +66 -66
- data/lib/padrino-gen/generators/components/tests/cucumber.rb +61 -61
- data/lib/padrino-gen/generators/components/tests/minitest.rb +70 -70
- data/lib/padrino-gen/generators/components/tests/rspec.rb +74 -74
- data/lib/padrino-gen/generators/components/tests/shoulda.rb +72 -72
- data/lib/padrino-gen/generators/components/tests/testunit.rb +69 -69
- data/lib/padrino-gen/generators/controller.rb +16 -17
- data/lib/padrino-gen/generators/helper.rb +8 -9
- data/lib/padrino-gen/generators/mailer.rb +8 -9
- data/lib/padrino-gen/generators/migration.rb +6 -6
- data/lib/padrino-gen/generators/model.rb +20 -21
- data/lib/padrino-gen/generators/plugin.rb +9 -9
- data/lib/padrino-gen/generators/project/config/apps.rb.tt +4 -4
- data/lib/padrino-gen/generators/project/config/boot.rb +2 -2
- data/lib/padrino-gen/generators/project/config.ru +1 -1
- data/lib/padrino-gen/generators/project.rb +49 -51
- data/lib/padrino-gen/generators/runner.rb +25 -24
- data/lib/padrino-gen/generators/task.rb +7 -8
- data/lib/padrino-gen/generators/templates/Gemfile.tt +5 -5
- data/lib/padrino-gen/generators/templates/controller.rb.tt +3 -3
- data/lib/padrino-gen/generators/templates/mailer.rb.tt +15 -15
- data/lib/padrino-gen/generators/templates/project_bin.tt +1 -1
- data/lib/padrino-gen/generators/templates/task.rb.tt +1 -1
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +152 -160
- data/lib/padrino-gen/padrino-tasks/database.rb +2 -2
- data/lib/padrino-gen/padrino-tasks/datamapper.rb +31 -31
- data/lib/padrino-gen/padrino-tasks/minirecord.rb +3 -3
- data/lib/padrino-gen/padrino-tasks/mongoid.rb +39 -41
- data/lib/padrino-gen/padrino-tasks/mongomapper.rb +18 -14
- data/lib/padrino-gen/padrino-tasks/sequel.rb +28 -28
- data/lib/padrino-gen/padrino-tasks/sql-helpers.rb +45 -45
- data/lib/padrino-gen.rb +4 -4
- data/padrino-gen.gemspec +19 -19
- data/test/fixtures/admin_template.rb +5 -5
- data/test/fixtures/database_template.rb +19 -22
- data/test/fixtures/example_template.rb +8 -8
- data/test/fixtures/git_template.rb +2 -2
- data/test/fixtures/plugin_template.rb +3 -3
- data/test/fixtures/rake_template.rb +5 -5
- data/test/helper.rb +23 -21
- data/test/test_app_generator.rb +13 -13
- data/test/test_cli.rb +4 -5
- data/test/test_component_generator.rb +17 -17
- data/test/test_controller_generator.rb +62 -63
- data/test/test_generator.rb +6 -6
- data/test/test_helper_generator.rb +23 -24
- data/test/test_mailer_generator.rb +7 -7
- data/test/test_migration_generator.rb +31 -31
- data/test/test_model_generator.rb +80 -80
- data/test/test_plugin_generator.rb +35 -36
- data/test/test_project_generator.rb +171 -169
- data/test/test_sql_helpers.rb +49 -50
- data/test/test_task_generator.rb +13 -13
- metadata +10 -10
data/padrino-gen.gemspec
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env gem build
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
|
-
require File.expand_path(
|
|
4
|
+
require File.expand_path('../padrino-core/lib/padrino-core/version.rb', __dir__)
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
|
-
s.name =
|
|
8
|
-
s.authors = [
|
|
9
|
-
s.email =
|
|
10
|
-
s.summary =
|
|
11
|
-
s.homepage =
|
|
12
|
-
s.description =
|
|
13
|
-
s.required_rubygems_version =
|
|
7
|
+
s.name = 'padrino-gen'
|
|
8
|
+
s.authors = ['Padrino Team', 'Nathan Esquenazi', "Davide D'Agostino", 'Arthur Chiu']
|
|
9
|
+
s.email = 'padrinorb@gmail.com'
|
|
10
|
+
s.summary = 'Generators for easily creating and building padrino applications'
|
|
11
|
+
s.homepage = 'http://www.padrinorb.com'
|
|
12
|
+
s.description = 'Generators for easily creating and building padrino applications from the console'
|
|
13
|
+
s.required_rubygems_version = '>= 1.3.6'
|
|
14
14
|
s.version = Padrino.version
|
|
15
|
-
s.date = Time.now.strftime(
|
|
16
|
-
s.license =
|
|
15
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
|
16
|
+
s.license = 'MIT'
|
|
17
17
|
|
|
18
|
-
s.extra_rdoc_files = Dir[
|
|
19
|
-
s.files = `git ls-files`.split("\n") | Dir.glob(
|
|
18
|
+
s.extra_rdoc_files = Dir['*.rdoc']
|
|
19
|
+
s.files = `git ls-files`.split("\n") | Dir.glob('{lib}/**/*')
|
|
20
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
21
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
22
|
-
s.require_paths = [
|
|
23
|
-
s.rdoc_options = [
|
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
22
|
+
s.require_paths = ['lib']
|
|
23
|
+
s.rdoc_options = ['--charset=UTF-8']
|
|
24
24
|
|
|
25
|
-
s.add_dependency(
|
|
26
|
-
s.add_dependency(
|
|
27
|
-
s.add_development_dependency(
|
|
28
|
-
s.add_development_dependency(
|
|
25
|
+
s.add_dependency('padrino-core', Padrino.version)
|
|
26
|
+
s.add_dependency('bundler', '>= 1.0', '< 3')
|
|
27
|
+
s.add_development_dependency('padrino-helpers', Padrino.version)
|
|
28
|
+
s.add_development_dependency('padrino-mailer', Padrino.version)
|
|
29
29
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
project :
|
|
1
|
+
project test: :shoulda, orm: :activerecord
|
|
2
2
|
|
|
3
|
-
generate :model,
|
|
4
|
-
rake
|
|
3
|
+
generate :model, 'post title:string body:text'
|
|
4
|
+
rake 'ar:create'
|
|
5
5
|
generate :admin
|
|
6
|
-
rake
|
|
7
|
-
generate :admin_page,
|
|
6
|
+
rake 'ar:migrate'
|
|
7
|
+
generate :admin_page, 'post'
|
|
@@ -2,34 +2,31 @@
|
|
|
2
2
|
# You can use other adapters like:
|
|
3
3
|
#
|
|
4
4
|
# ActiveRecord::Base.configurations = {
|
|
5
|
-
# :
|
|
6
|
-
# :
|
|
7
|
-
# :
|
|
8
|
-
# :
|
|
9
|
-
# :
|
|
10
|
-
# :
|
|
11
|
-
# :
|
|
12
|
-
# :
|
|
13
|
-
# :
|
|
14
|
-
# :
|
|
5
|
+
# development: {
|
|
6
|
+
# adapter: 'mysql2',
|
|
7
|
+
# encoding: 'utf8',
|
|
8
|
+
# reconnect: true,
|
|
9
|
+
# database: 'your_database',
|
|
10
|
+
# pool: 5,
|
|
11
|
+
# username: 'root',
|
|
12
|
+
# password: '',
|
|
13
|
+
# host: 'localhost',
|
|
14
|
+
# socket: '/tmp/mysql.sock'
|
|
15
15
|
# }
|
|
16
16
|
# }
|
|
17
17
|
#
|
|
18
18
|
ActiveRecord::Base.configurations = {
|
|
19
|
-
:
|
|
20
|
-
:
|
|
21
|
-
:
|
|
22
|
-
|
|
19
|
+
development: {
|
|
20
|
+
adapter: 'sqlite3',
|
|
21
|
+
database: Padrino.root('db', 'sample_project_development.db')
|
|
23
22
|
},
|
|
24
|
-
:
|
|
25
|
-
:
|
|
26
|
-
:
|
|
27
|
-
|
|
23
|
+
production: {
|
|
24
|
+
adapter: 'sqlite3',
|
|
25
|
+
database: Padrino.root('db', 'sample_project_production.db')
|
|
28
26
|
},
|
|
29
|
-
:
|
|
30
|
-
:
|
|
31
|
-
:
|
|
32
|
-
|
|
27
|
+
test: {
|
|
28
|
+
adapter: 'sqlite3',
|
|
29
|
+
database: Padrino.root('db', 'sample_project_test.db')
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
project :
|
|
1
|
+
project test: :shoulda, orm: :activerecord, template: 'mongochist', dev: true
|
|
2
2
|
|
|
3
|
-
generate :model,
|
|
4
|
-
generate :controller,
|
|
5
|
-
generate :migration,
|
|
6
|
-
generate :fake,
|
|
7
|
-
generate :plugin,
|
|
3
|
+
generate :model, 'post title:string body:text'
|
|
4
|
+
generate :controller, 'posts get:index get:new post:new'
|
|
5
|
+
generate :migration, 'AddEmailToUser email:string'
|
|
6
|
+
generate :fake, 'foo bar'
|
|
7
|
+
generate :plugin, 'carrierwave'
|
|
8
8
|
|
|
9
9
|
require_dependencies 'nokogiri'
|
|
10
10
|
|
|
11
|
-
initializer :test,
|
|
11
|
+
initializer :test, '# Example'
|
|
12
12
|
|
|
13
13
|
app :testapp do
|
|
14
|
-
generate :controller,
|
|
14
|
+
generate :controller, 'users get:index'
|
|
15
15
|
end
|
|
@@ -8,6 +8,6 @@ HOPTOAD = <<-HOPTOAD
|
|
|
8
8
|
#notifier.environment_filters << %w(MY_SECRET_KEY MY_SECRET_TOKEN)
|
|
9
9
|
end
|
|
10
10
|
HOPTOAD
|
|
11
|
-
require_dependencies 'rack_hoptoad', :
|
|
12
|
-
initializer :hoptoad,HOPTOAD
|
|
13
|
-
inject_into_file destination_root('/app/app.rb')," enable :raise_errors\n", :
|
|
11
|
+
require_dependencies 'rack_hoptoad', require: 'rack/hoptoad'
|
|
12
|
+
initializer :hoptoad, HOPTOAD
|
|
13
|
+
inject_into_file destination_root('/app/app.rb'), " enable :raise_errors\n", after: "configure do\n"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
project :
|
|
2
|
-
# create_file
|
|
1
|
+
project test: :shoulda, orm: :activerecord
|
|
2
|
+
# create_file 'lib/tasks/test.rake', <<-RAKE
|
|
3
3
|
# task :custom do
|
|
4
|
-
# File.open('#{destination_root("/tmp/custom.txt")}', 'w')
|
|
4
|
+
# File.open('#{destination_root("/tmp/custom.txt")}', 'w') do |f|
|
|
5
5
|
# f.puts('Completed custom rake test')
|
|
6
|
-
#
|
|
6
|
+
# end
|
|
7
7
|
# end
|
|
8
8
|
# RAKE
|
|
9
|
-
rake
|
|
9
|
+
rake 'custom'
|
data/test/helper.rb
CHANGED
|
@@ -22,7 +22,7 @@ class Minitest::Spec
|
|
|
22
22
|
|
|
23
23
|
def stub_static_files
|
|
24
24
|
# register fake URL to avoid downloading static files every time tests run
|
|
25
|
-
fake_uri_base =
|
|
25
|
+
fake_uri_base = 'https://raw.github.com/padrino/padrino-static/master/'
|
|
26
26
|
%w[
|
|
27
27
|
js/dojo.js
|
|
28
28
|
js/ext.js
|
|
@@ -47,37 +47,39 @@ class Minitest::Spec
|
|
|
47
47
|
"Padrino::Generators::#{name.to_s.camelize}".constantize.start(params)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
# generate_with_parts(:app,
|
|
50
|
+
# generate_with_parts(:app, 'demo', "--root=/tmp/sample_project", apps: 'subapp')
|
|
51
51
|
# This method is intended to reproduce the real environment.
|
|
52
52
|
def generate_with_parts(name, *params)
|
|
53
|
-
features, constants = [$
|
|
53
|
+
features, constants = [$LOADED_FEATURES, Object.constants].map { |x| Marshal.load(Marshal.dump(x)) }
|
|
54
54
|
|
|
55
|
-
if root = params.find{|x| x.index(/-r=|--root=/) }
|
|
55
|
+
if (root = params.find { |x| x.index(/-r=|--root=/) })
|
|
56
56
|
root = root.split(/=/)[1]
|
|
57
|
-
options, model_path = {}, File.expand_path(File.join(root,
|
|
57
|
+
options, model_path = {}, File.expand_path(File.join(root, '/models/**/*.rb'))
|
|
58
58
|
options = params.pop if params.last.is_a?(Hash)
|
|
59
|
-
Dir[model_path].each{|path| require path }
|
|
59
|
+
Dir[model_path].sort.each { |path| require path }
|
|
60
|
+
|
|
60
61
|
Array(options[:apps]).each do |app_name|
|
|
61
62
|
path = File.expand_path(File.join(root, "/#{app_name}/app.rb"))
|
|
62
63
|
require path if File.exist?(path)
|
|
63
|
-
end
|
|
64
|
+
end
|
|
64
65
|
end
|
|
66
|
+
|
|
65
67
|
"Padrino::Generators::#{name.to_s.camelize}".constantize.start(params)
|
|
66
|
-
($
|
|
67
|
-
(Object.constants - constants).each{|constant| Object.instance_eval{ remove_const(constant) }}
|
|
68
|
+
($LOADED_FEATURES - features).each { |x| $LOADED_FEATURES.delete(x) }
|
|
69
|
+
(Object.constants - constants).each { |constant| Object.instance_eval { remove_const(constant) } }
|
|
68
70
|
end
|
|
69
71
|
|
|
70
72
|
# expects_generated :model, "post title:string body:text"
|
|
71
|
-
def expects_generated(generator, params=
|
|
73
|
+
def expects_generated(generator, params = '')
|
|
72
74
|
Padrino.expects(:bin_gen).with(generator, *params.split(' ')).returns(true)
|
|
73
75
|
end
|
|
74
76
|
|
|
75
|
-
# expects_generated_project :
|
|
76
|
-
def expects_generated_project(options={})
|
|
77
|
+
# expects_generated_project test: :shoulda, orm: :activerecord, dev: true
|
|
78
|
+
def expects_generated_project(options = {})
|
|
77
79
|
options = options.dup
|
|
78
80
|
project_root = options.delete(:root)
|
|
79
81
|
project_name = options.delete(:name)
|
|
80
|
-
components = options.sort_by{ |k, _v| k.to_s }.map{ |component, value| "--#{component}=#{value}" }
|
|
82
|
+
components = options.sort_by { |k, _v| k.to_s }.map { |component, value| "--#{component}=#{value}" }
|
|
81
83
|
params = [project_name, *components].push("-r=#{project_root}")
|
|
82
84
|
Padrino.expects(:bin_gen).with(*params.unshift('project')).returns(true)
|
|
83
85
|
end
|
|
@@ -87,23 +89,23 @@ class Minitest::Spec
|
|
|
87
89
|
instance = mock
|
|
88
90
|
instance.expects(:invoke!).once
|
|
89
91
|
include_text = "gem '#{name}'\n"
|
|
90
|
-
Thor::Actions::InjectIntoFile.expects(:new).with(anything,'Gemfile', include_text, anything).returns(instance)
|
|
92
|
+
Thor::Actions::InjectIntoFile.expects(:new).with(anything, 'Gemfile', include_text, anything).returns(instance)
|
|
91
93
|
end
|
|
92
94
|
|
|
93
95
|
# expects_initializer :test, "# Example"
|
|
94
|
-
def expects_initializer(name, body,options={})
|
|
95
|
-
#options.reverse_merge!(:
|
|
96
|
-
path = File.join(options[:root],'config/initializers',"#{name}.rb")
|
|
96
|
+
def expects_initializer(name, body, options = {})
|
|
97
|
+
# options.reverse_merge!(root: '/tmp/sample_project')
|
|
98
|
+
path = File.join(options[:root], 'config/initializers', "#{name}.rb")
|
|
97
99
|
instance = mock
|
|
98
100
|
instance.expects(:invoke!).at_least_once
|
|
99
101
|
include_text = " register #{name.to_s.camelize}Initializer\n"
|
|
100
|
-
Thor::Actions::InjectIntoFile.expects(:new).with(anything,anything, include_text, anything).returns(instance)
|
|
102
|
+
Thor::Actions::InjectIntoFile.expects(:new).with(anything, anything, include_text, anything).returns(instance)
|
|
101
103
|
Thor::Actions::CreateFile.expects(:new).with(anything, path, kind_of(Proc), anything).returns(instance)
|
|
102
104
|
end
|
|
103
105
|
|
|
104
106
|
# expects_rake "custom"
|
|
105
|
-
def expects_rake(command,options={})
|
|
106
|
-
#options.reverse_merge!(:
|
|
107
|
-
Padrino.expects(:bin).with(
|
|
107
|
+
def expects_rake(command, options = {})
|
|
108
|
+
# options.reverse_merge!(root: '/tmp')
|
|
109
|
+
Padrino.expects(:bin).with('rake', command, "-c=#{options[:root]}").returns(true)
|
|
108
110
|
end
|
|
109
111
|
end
|
data/test/test_app_generator.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative 'helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe 'AppGenerator' do
|
|
4
4
|
def setup
|
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{SecureRandom.hex}"
|
|
6
6
|
`mkdir -p #{@apptmp}`
|
|
@@ -12,7 +12,7 @@ describe "AppGenerator" do
|
|
|
12
12
|
|
|
13
13
|
describe 'the app generator' do
|
|
14
14
|
it 'should fail outside app root' do
|
|
15
|
-
out,
|
|
15
|
+
out, = capture_io { generate(:app, 'demo_root', "-r=#{@apptmp}") }
|
|
16
16
|
assert_match(/not at the root/, out)
|
|
17
17
|
assert_no_file_exists("#{@apptmp}/demo_root")
|
|
18
18
|
end
|
|
@@ -28,7 +28,7 @@ describe "AppGenerator" do
|
|
|
28
28
|
assert_dir_exists("#{@apptmp}/sample_project/demo/views")
|
|
29
29
|
assert_dir_exists("#{@apptmp}/sample_project/demo/views/layouts")
|
|
30
30
|
assert_dir_exists("#{@apptmp}/sample_project/public/demo")
|
|
31
|
-
assert_match_in_file("Padrino.mount('SampleProject::Demo', :
|
|
31
|
+
assert_match_in_file("Padrino.mount('SampleProject::Demo', app_file: Padrino.root('demo/app.rb')).to('/demo')", "#{@apptmp}/sample_project/config/apps.rb")
|
|
32
32
|
assert_match_in_file('module SampleProject', "#{@apptmp}/sample_project/demo/app.rb")
|
|
33
33
|
assert_match_in_file('class Demo < Padrino::Application', "#{@apptmp}/sample_project/demo/app.rb")
|
|
34
34
|
assert_match_in_file(/Padrino.configure_apps do/, "#{@apptmp}/sample_project/config/apps.rb")
|
|
@@ -46,7 +46,7 @@ describe "AppGenerator" do
|
|
|
46
46
|
assert_dir_exists("#{@apptmp}/sample_project/demo_app/views")
|
|
47
47
|
assert_dir_exists("#{@apptmp}/sample_project/demo_app/views/layouts")
|
|
48
48
|
assert_dir_exists("#{@apptmp}/sample_project/public/demo_app")
|
|
49
|
-
assert_match_in_file("Padrino.mount('SampleProject::DemoApp', :
|
|
49
|
+
assert_match_in_file("Padrino.mount('SampleProject::DemoApp', app_file: Padrino.root('demo_app/app.rb')).to('/demo_app')", "#{@apptmp}/sample_project/config/apps.rb")
|
|
50
50
|
assert_match_in_file('module SampleProject', "#{@apptmp}/sample_project/demo_app/app.rb")
|
|
51
51
|
assert_match_in_file('class DemoApp < Padrino::Application', "#{@apptmp}/sample_project/demo_app/app.rb")
|
|
52
52
|
assert_match_in_file(/Padrino.configure_apps do/, "#{@apptmp}/sample_project/config/apps.rb")
|
|
@@ -55,14 +55,14 @@ describe "AppGenerator" do
|
|
|
55
55
|
|
|
56
56
|
it 'should generate tiny app skeleton' do
|
|
57
57
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
58
|
-
capture_io { generate(:app, 'demo','--tiny',"--root=#{@apptmp}/sample_project") }
|
|
58
|
+
capture_io { generate(:app, 'demo', '--tiny', "--root=#{@apptmp}/sample_project") }
|
|
59
59
|
assert_dir_exists("#{@apptmp}/sample_project")
|
|
60
60
|
assert_dir_exists("#{@apptmp}/sample_project/demo")
|
|
61
61
|
assert_file_exists("#{@apptmp}/sample_project/demo/helpers.rb")
|
|
62
62
|
assert_file_exists("#{@apptmp}/sample_project/demo/controllers.rb")
|
|
63
63
|
assert_file_exists("#{@apptmp}/sample_project/demo/mailers.rb")
|
|
64
64
|
assert_dir_exists("#{@apptmp}/sample_project/public/demo")
|
|
65
|
-
assert_match_in_file(/:notifier/,"#{@apptmp}/sample_project/demo/mailers.rb")
|
|
65
|
+
assert_match_in_file(/:notifier/, "#{@apptmp}/sample_project/demo/mailers.rb")
|
|
66
66
|
assert_match_in_file(/module Helper/, "#{@apptmp}/sample_project/demo/helpers.rb")
|
|
67
67
|
assert_match_in_file(/helpers Helper/, "#{@apptmp}/sample_project/demo/helpers.rb")
|
|
68
68
|
assert_no_file_exists("#{@apptmp}/sample_project/demo/helpers")
|
|
@@ -89,19 +89,19 @@ describe "AppGenerator" do
|
|
|
89
89
|
it 'should destroys itself' do
|
|
90
90
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
91
91
|
capture_io { generate(:app, 'demo', "--root=#{@apptmp}/sample_project") }
|
|
92
|
-
out,
|
|
92
|
+
out, = capture_io { generate_with_parts(:app, 'demo', "--root=#{@apptmp}/sample_project", '-d', apps: 'demo') }
|
|
93
93
|
refute_match(/has been mounted/, out)
|
|
94
94
|
assert_no_dir_exists("#{@apptmp}/sample_project/public/demo")
|
|
95
95
|
assert_no_file_exists("#{@apptmp}/sample_project/demo/app.rb")
|
|
96
96
|
assert_no_dir_exists("#{@apptmp}/sample_project/demo/controllers")
|
|
97
97
|
assert_no_dir_exists("#{@apptmp}/sample_project/demo/helpers")
|
|
98
98
|
assert_no_dir_exists("#{@apptmp}/sample_project/demo/views")
|
|
99
|
-
assert_no_match_in_file(
|
|
99
|
+
assert_no_match_in_file(%r{Padrino\.mount\("Demo"\).to\("/demo"\)}, "#{@apptmp}/sample_project/config/apps.rb")
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
it 'should abort if app name already exists' do
|
|
103
103
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
104
|
-
out,
|
|
104
|
+
out, = capture_io { generate(:app, 'kernel', "--root=#{@apptmp}/sample_project") }
|
|
105
105
|
assert_match(/Kernel already exists/, out)
|
|
106
106
|
assert_no_dir_exists("#{@apptmp}/sample_project/public/kernel")
|
|
107
107
|
assert_no_dir_exists("#{@apptmp}/sample_project/kernel/controllers")
|
|
@@ -112,7 +112,7 @@ describe "AppGenerator" do
|
|
|
112
112
|
it 'should abort if app name already exists in root' do
|
|
113
113
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
114
114
|
capture_io { generate(:app, 'subapp', "--root=#{@apptmp}/sample_project") }
|
|
115
|
-
out,
|
|
115
|
+
out, = capture_io { generate_with_parts(:app, 'subapp', "--root=#{@apptmp}/sample_project", apps: 'subapp') }
|
|
116
116
|
assert_dir_exists("#{@apptmp}/sample_project/public/subapp")
|
|
117
117
|
assert_dir_exists("#{@apptmp}/sample_project/subapp/controllers")
|
|
118
118
|
assert_dir_exists("#{@apptmp}/sample_project/subapp/helpers")
|
|
@@ -122,7 +122,7 @@ describe "AppGenerator" do
|
|
|
122
122
|
|
|
123
123
|
it 'should generate app files if :force option is specified' do
|
|
124
124
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
125
|
-
|
|
125
|
+
capture_io { generate(:app, 'kernel', "--root=#{@apptmp}/sample_project", '--force') }
|
|
126
126
|
assert_dir_exists("#{@apptmp}/sample_project/public/kernel")
|
|
127
127
|
assert_dir_exists("#{@apptmp}/sample_project/kernel/controllers")
|
|
128
128
|
assert_dir_exists("#{@apptmp}/sample_project/kernel/helpers")
|
|
@@ -131,7 +131,7 @@ describe "AppGenerator" do
|
|
|
131
131
|
|
|
132
132
|
it 'should allow to pass upcased name as the app name' do
|
|
133
133
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
134
|
-
|
|
134
|
+
capture_io { generate(:app, 'API', "--root=#{@apptmp}/sample_project", '--force') }
|
|
135
135
|
assert_dir_exists("#{@apptmp}/sample_project/public/api")
|
|
136
136
|
assert_dir_exists("#{@apptmp}/sample_project/api/controllers")
|
|
137
137
|
assert_dir_exists("#{@apptmp}/sample_project/api/helpers")
|
data/test/test_cli.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative 'helper'
|
|
2
2
|
require 'padrino-gen/generators/cli'
|
|
3
3
|
|
|
4
|
-
describe
|
|
4
|
+
describe 'Cli' do
|
|
5
5
|
def setup
|
|
6
6
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{SecureRandom.hex}"
|
|
7
7
|
`mkdir -p #{@apptmp}`
|
|
@@ -12,16 +12,15 @@ describe "Cli" do
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
describe 'the cli' do
|
|
15
|
-
|
|
16
15
|
it 'should fail without arguments' do
|
|
17
|
-
out,
|
|
16
|
+
out, = capture_io { generate(:cli) }
|
|
18
17
|
assert_match(/Please specify generator to use/, out)
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
it 'should work correctly if we have a project' do
|
|
22
21
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
23
22
|
capture_io { generate(:cli, "--root=#{@apptmp}/sample_project") }
|
|
24
|
-
skip
|
|
23
|
+
skip 'Make a great asserition'
|
|
25
24
|
end
|
|
26
25
|
end
|
|
27
26
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
1
|
+
require_relative 'helper'
|
|
2
|
+
require 'rb-readline'
|
|
3
3
|
|
|
4
|
-
describe
|
|
4
|
+
describe 'ComponentGenerator' do
|
|
5
5
|
def setup
|
|
6
6
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{SecureRandom.hex}"
|
|
7
7
|
`mkdir -p #{@apptmp}`
|
|
@@ -14,20 +14,20 @@ describe "ComponentGenerator" do
|
|
|
14
14
|
|
|
15
15
|
describe 'the controller generator' do
|
|
16
16
|
it 'should fail outside app root' do
|
|
17
|
-
out,
|
|
17
|
+
out, = capture_io { generate(:component, 'demo', "-r=#{@apptmp}") }
|
|
18
18
|
assert_match(/not at the root/, out)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
describe
|
|
22
|
+
describe 'add components' do
|
|
23
23
|
it 'should properly generate default' do
|
|
24
24
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
25
|
-
out,
|
|
25
|
+
out, = capture_io { generate(:component, '--orm=activerecord', "-r=#{@apptmp}/sample_project") }
|
|
26
26
|
assert_match(/applying.*?activerecord.*?orm/, out)
|
|
27
|
-
assert_match_in_file(/gem 'activerecord', '>= 3.1', :
|
|
27
|
+
assert_match_in_file(/gem 'activerecord', '>= 3.1', require: 'active_record'/, "#{@apptmp}/sample_project/Gemfile")
|
|
28
28
|
assert_match_in_file(/gem 'sqlite3'/, "#{@apptmp}/sample_project/Gemfile")
|
|
29
29
|
refute_match(/Switch renderer to/, out)
|
|
30
|
-
database_template_path = File.join(
|
|
30
|
+
database_template_path = File.join(__dir__, 'fixtures', 'database_template.rb')
|
|
31
31
|
assert FileUtils.compare_file("#{@apptmp}/sample_project/config/database.rb", database_template_path)
|
|
32
32
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
33
33
|
assert_equal 'activerecord', components_chosen[:orm]
|
|
@@ -35,7 +35,7 @@ describe "ComponentGenerator" do
|
|
|
35
35
|
|
|
36
36
|
it 'should properly generate with adapter' do
|
|
37
37
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
38
|
-
out,
|
|
38
|
+
out, = capture_io { generate(:component, '--orm=sequel', '--adapter=postgres', "-r=#{@apptmp}/sample_project") }
|
|
39
39
|
assert_match_in_file(/gem 'pg'/, "#{@apptmp}/sample_project/Gemfile")
|
|
40
40
|
refute_match(/Switch renderer to/, out)
|
|
41
41
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
@@ -44,31 +44,31 @@ describe "ComponentGenerator" do
|
|
|
44
44
|
|
|
45
45
|
it 'should enable @app_name value' do
|
|
46
46
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
47
|
-
|
|
47
|
+
capture_io { generate_with_parts(:component, '--test=cucumber', "-r=#{@apptmp}/sample_project", apps: 'app') }
|
|
48
48
|
assert_match_in_file(/SampleProject::App\.tap \{ \|app\| \}/, "#{@apptmp}/sample_project/features/support/env.rb")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it 'should generate component in specified app' do
|
|
52
52
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
53
53
|
capture_io { generate(:app, 'compo', "-r=#{@apptmp}/sample_project") }
|
|
54
|
-
|
|
54
|
+
capture_io { generate_with_parts(:component, '--test=cucumber', '--app=compo', "-r=#{@apptmp}/sample_project", apps: 'compo') }
|
|
55
55
|
assert_match_in_file(/SampleProject::Compo\.tap \{ \|app\| \}/, "#{@apptmp}/sample_project/features/support/env.rb")
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
it 'should not generate component in specified app if the app does not exist' do
|
|
59
59
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
|
60
|
-
out,
|
|
60
|
+
out, = capture_io { generate_with_parts(:component, '--test=cucumber', '--app=compo', "-r=#{@apptmp}/sample_project", apps: 'compo') }
|
|
61
61
|
assert_match(/SampleProject::Compo does not exist./, out)
|
|
62
62
|
assert_no_file_exists("#{@apptmp}/sample_project/features")
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
describe
|
|
66
|
+
describe 'specified of same the component' do
|
|
67
67
|
it 'should does not change' do
|
|
68
68
|
capture_io { generate(:project, 'sample_project', '--script=jquery', "--root=#{@apptmp}") }
|
|
69
69
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
70
70
|
assert_equal 'jquery', components_chosen[:script]
|
|
71
|
-
out,
|
|
71
|
+
out, = capture_io { generate(:component, '--script=jquery', "-r=#{@apptmp}/sample_project") }
|
|
72
72
|
assert_match(/applying.*?jquery.*?script/, out)
|
|
73
73
|
refute_match(/Switch renderer to/, out)
|
|
74
74
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
@@ -76,13 +76,13 @@ describe "ComponentGenerator" do
|
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
describe
|
|
79
|
+
describe 'component changes' do
|
|
80
80
|
it 'should when allow changes, will be applied' do
|
|
81
81
|
capture_io { generate(:project, 'sample_project', '--renderer=slim', "--root=#{@apptmp}") }
|
|
82
82
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
83
83
|
assert_equal 'slim', components_chosen[:renderer]
|
|
84
84
|
Readline.stubs(:readline).returns('yes').once
|
|
85
|
-
out,
|
|
85
|
+
out, = capture_io { generate(:component, '--renderer=haml', "-r=#{@apptmp}/sample_project") }
|
|
86
86
|
assert_match(/applying.*?haml.*?renderer/, out)
|
|
87
87
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
88
88
|
assert_equal 'haml', components_chosen[:renderer]
|
|
@@ -93,7 +93,7 @@ describe "ComponentGenerator" do
|
|
|
93
93
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
94
94
|
assert_equal 'slim', components_chosen[:renderer]
|
|
95
95
|
Readline.stubs(:readline).returns('no').once
|
|
96
|
-
out,
|
|
96
|
+
out, = capture_io { generate(:component, '--renderer=haml', "-r=#{@apptmp}/sample_project") }
|
|
97
97
|
refute_match(/applying.*?haml.*?renderer/, out)
|
|
98
98
|
components_chosen = YAML.load_file("#{@apptmp}/sample_project/.components")
|
|
99
99
|
assert_equal 'slim', components_chosen[:renderer]
|