dummier 0.2.2 → 0.2.3
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.md +10 -4
- data/bin/dummier +1 -1
- data/lib/dummier/app_generator.rb +55 -36
- data/lib/dummier/version.rb +1 -1
- data/test/support/hook_test_helper.rb +17 -0
- data/test/test_helper.rb +2 -1
- data/test/unit/app_generator_test.rb +98 -0
- data/test/unit/dummier_test.rb +6 -62
- metadata +7 -31
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
Dummier
|
2
|
-
|
1
|
+
# Dummier [](http://travis-ci.org/citrus/dummier)
|
2
|
+
|
3
3
|
|
4
4
|
A smart gem with a dumb name; Dummier is a rails generator for automating the creation of rails testing applications.
|
5
5
|
|
@@ -21,11 +21,11 @@ To install from RubyGems:
|
|
21
21
|
|
22
22
|
To install with bundler:
|
23
23
|
|
24
|
-
gem 'dummier', '>= 0.2.
|
24
|
+
gem 'dummier', '>= 0.2.3'
|
25
25
|
|
26
26
|
To package for development in your gemspec:
|
27
27
|
|
28
|
-
s.add_development_dependency('dummier', '>= 0.2.
|
28
|
+
s.add_development_dependency('dummier', '>= 0.2.3')
|
29
29
|
|
30
30
|
|
31
31
|
Usage
|
@@ -104,6 +104,12 @@ Change Log
|
|
104
104
|
----------
|
105
105
|
|
106
106
|
|
107
|
+
**0.2.3 - 2011/9/6**
|
108
|
+
|
109
|
+
* refactored AppGenerator#run!
|
110
|
+
* new app generator tests
|
111
|
+
|
112
|
+
|
107
113
|
**0.2.2 - 2011/8/31**
|
108
114
|
|
109
115
|
* added to travis-ci.org
|
data/bin/dummier
CHANGED
@@ -11,6 +11,7 @@ module Dummier
|
|
11
11
|
|
12
12
|
source_root File.expand_path('../../templates', __FILE__)
|
13
13
|
|
14
|
+
# Default generator options
|
14
15
|
def defaults
|
15
16
|
{ :verbose => false }
|
16
17
|
end
|
@@ -69,72 +70,90 @@ module Dummier
|
|
69
70
|
end
|
70
71
|
alias :store_application_definition! :application_definition
|
71
72
|
|
72
|
-
#
|
73
|
+
# Loads a hook file and evalutes its contents.
|
73
74
|
# rescues any exceptions and logs their message.
|
74
|
-
#
|
75
|
+
# Store hooks in gem_root/test/dummy_hooks
|
75
76
|
def fire_hook(hook_name)
|
76
77
|
begin
|
77
78
|
file = File.join(root_path, "test/dummy_hooks/#{hook_name}.rb")
|
78
79
|
say_status "hook", hook_name, File.exists?(file) ? :cyan : :red
|
79
|
-
if File.exists?(file)
|
80
|
-
rb = File.read(file)
|
81
|
-
eval(rb)
|
82
|
-
end
|
80
|
+
eval File.read(file) if File.exists?(file)
|
83
81
|
rescue Exception => e
|
84
82
|
say_status "failed", "#{hook_name} raised an exception", :red
|
85
83
|
say e.message.strip + "\n", :red
|
86
|
-
end
|
84
|
+
end
|
87
85
|
end
|
88
86
|
|
89
|
-
|
90
|
-
|
91
87
|
# Runs the generator
|
92
88
|
def run!
|
93
|
-
|
94
89
|
fire_hook :before_delete
|
95
|
-
|
96
|
-
# remove existing test app
|
97
|
-
FileUtils.rm_r(destination_path) if File.directory?(destination_path)
|
98
|
-
|
90
|
+
remove_existing_dummy
|
99
91
|
fire_hook :before_app_generator
|
100
|
-
|
101
|
-
# run the base app generator
|
102
|
-
Rails::Generators::AppGenerator.start([destination_path])
|
103
|
-
|
92
|
+
run_base_generator
|
104
93
|
fire_hook :after_app_generator
|
105
|
-
|
106
94
|
inside destination_path do
|
107
|
-
|
108
|
-
|
95
|
+
remove_unnecessary_files
|
96
|
+
replace_boot_templates
|
97
|
+
add_cucumber_support if has_features?
|
98
|
+
fire_hook :before_migrate
|
99
|
+
run_migration
|
100
|
+
fire_hook :after_migrate
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
# Removes existing test app
|
107
|
+
def remove_existing_dummy
|
108
|
+
FileUtils.rm_r(destination_path) if File.directory?(destination_path)
|
109
|
+
end
|
110
|
+
|
111
|
+
# Runs the base app generator
|
112
|
+
def run_base_generator
|
113
|
+
Rails::Generators::AppGenerator.start([destination_path])
|
114
|
+
end
|
115
|
+
|
116
|
+
# Removes unnecessary files from test/dummy
|
117
|
+
def remove_unnecessary_files
|
109
118
|
files = %w(public/index.html public/images/rails.png Gemfile README doc test vendor)
|
110
119
|
files.each do |file|
|
111
120
|
say_status "delete", file
|
112
121
|
FileUtils.rm_r(file) if File.exists?(file)
|
113
122
|
end
|
123
|
+
end
|
114
124
|
|
115
|
-
|
125
|
+
# Replaces application.rb and boot.rb with dummier's templates
|
126
|
+
def replace_boot_templates
|
116
127
|
template "rails/application.rb", "config/application.rb", :force => true
|
117
|
-
template "rails/boot.rb", "config/boot.rb", :force => true
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
128
|
+
template "rails/boot.rb", "config/boot.rb", :force => true
|
129
|
+
end
|
130
|
+
|
131
|
+
# Add cucumber config to database.yml
|
132
|
+
def add_cucumber_support
|
133
|
+
unless File.read(File.join(destination_path, "config/database.yml")) =~ /cucumber/
|
134
|
+
gsub_file "config/database.yml", "test:", "test: &test"
|
122
135
|
append_file "config/database.yml" do
|
123
136
|
%(
|
124
137
|
cucumber:
|
125
138
|
<<: *test
|
126
|
-
)
|
139
|
+
)
|
127
140
|
end
|
128
141
|
end
|
129
|
-
|
130
|
-
|
131
|
-
|
142
|
+
env = "config/environments/cucumber.rb"
|
143
|
+
unless File.exists?(File.join(destination_path, env))
|
144
|
+
FileUtils.cp(File.join(destination_path, "config/environments/test.rb"), env)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# Runs db:migrate on the test database
|
149
|
+
def run_migration
|
132
150
|
rake("db:migrate", :env => "test")
|
133
|
-
|
134
|
-
fire_hook :after_migrate
|
135
|
-
|
136
|
-
end
|
151
|
+
end
|
137
152
|
|
138
|
-
|
153
|
+
# Checks for ./features within the gem's root path
|
154
|
+
def has_features?
|
155
|
+
File.directory?(File.join(root_path, "features"))
|
156
|
+
end
|
157
|
+
|
139
158
|
end
|
140
159
|
end
|
data/lib/dummier/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AppGeneratorTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@root = File.expand_path("../../dummy_gem", __FILE__)
|
7
|
+
@dummy = File.join(@root, "test/dummy")
|
8
|
+
Dir.chdir(@root)
|
9
|
+
HookTestHelper.reset!
|
10
|
+
# remove existing dummy
|
11
|
+
FileUtils.rm_r(@dummy) if File.directory?(@dummy)
|
12
|
+
assert !File.directory?(@dummy)
|
13
|
+
end
|
14
|
+
|
15
|
+
def read_file(file)
|
16
|
+
File.read(File.join(@dummy, file))
|
17
|
+
end
|
18
|
+
|
19
|
+
should "have classes defined" do
|
20
|
+
assert defined?(Dummier)
|
21
|
+
assert defined?(Dummier::AppGenerator)
|
22
|
+
end
|
23
|
+
|
24
|
+
context "A new app generator" do
|
25
|
+
|
26
|
+
setup do
|
27
|
+
@generator = Dummier::AppGenerator.new(@root)
|
28
|
+
end
|
29
|
+
|
30
|
+
should "include test/dummy_hooks/templates in the generators source paths" do
|
31
|
+
assert @generator.source_paths.include?(File.join(@root, "test/dummy_hooks/templates"))
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when run" do
|
35
|
+
|
36
|
+
setup do
|
37
|
+
@generator.run!
|
38
|
+
end
|
39
|
+
|
40
|
+
should "create test/dummy" do
|
41
|
+
assert File.exists?(@dummy)
|
42
|
+
end
|
43
|
+
|
44
|
+
should "remove unnecessary files" do
|
45
|
+
files = %w(public/index.html public/images/rails.png Gemfile README doc test vendor)
|
46
|
+
files.each do |file|
|
47
|
+
assert !File.exists?(file)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
should "apply application template" do
|
52
|
+
rb = read_file('config/application.rb')
|
53
|
+
[ "require File.expand_path('../boot', __FILE__)", /require "dummy_gem"/, /module Dummy/ ].each do |regex|
|
54
|
+
assert_match regex, rb
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
should "apply the boot template" do
|
59
|
+
rb = read_file('config/boot.rb')
|
60
|
+
[ "gemfile = File.expand_path('../../../../Gemfile', __FILE__)", "ENV['BUNDLE_GEMFILE'] = gemfile", "$:.unshift File.expand_path('../../../../lib', __FILE__)" ].each do |regex|
|
61
|
+
assert_match regex, rb
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
should "fire hooks in proper order" do
|
66
|
+
assert_equal [ :before_delete, :before_app_generator, :after_app_generator, :before_migrate, :after_migrate ], HookTestHelper.hooks
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
context "with cucumber features, when run" do
|
72
|
+
|
73
|
+
setup do
|
74
|
+
@features = File.join(@root, "features")
|
75
|
+
FileUtils.mkdir(@features)
|
76
|
+
@generator.run!
|
77
|
+
end
|
78
|
+
|
79
|
+
teardown do
|
80
|
+
FileUtils.rm_r(@features) if File.directory?(@features)
|
81
|
+
end
|
82
|
+
|
83
|
+
should "apply cucumber database config" do
|
84
|
+
yml = read_file('config/database.yml')
|
85
|
+
[ "test: &test", "cucumber:", " <<: *test" ].each do |regex|
|
86
|
+
assert_match regex, yml
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
should "apply cucumber environment" do
|
91
|
+
assert File.exists?(File.join(@dummy, "config/environments/cucumber.rb"))
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
data/test/unit/dummier_test.rb
CHANGED
@@ -1,74 +1,18 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
module HookTestHelper
|
4
|
-
extend self
|
5
|
-
|
6
|
-
def register(hook)
|
7
|
-
hooks << hook
|
8
|
-
end
|
9
|
-
|
10
|
-
def hooks
|
11
|
-
@hooks ||= []
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
3
|
class DummierTest < Test::Unit::TestCase
|
18
4
|
|
19
5
|
def setup
|
20
|
-
@root
|
21
|
-
@dummy = File.join(@root, "test/dummy")
|
6
|
+
@root = File.expand_path("../../../", __FILE__)
|
22
7
|
end
|
23
8
|
|
24
|
-
|
25
|
-
File.
|
9
|
+
should "include executable" do
|
10
|
+
assert File.executable?(File.join(@root, "bin/dummier"))
|
26
11
|
end
|
27
|
-
|
12
|
+
|
28
13
|
should "have classes defined" do
|
29
14
|
assert defined?(Dummier)
|
30
15
|
assert defined?(Dummier::AppGenerator)
|
31
16
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
# remove existing dummy
|
36
|
-
FileUtils.rm_r(@dummy) if File.exists?(@dummy)
|
37
|
-
assert !File.exists?(@dummy)
|
38
|
-
|
39
|
-
# create a generator
|
40
|
-
@generator = Dummier::AppGenerator.new(@root)
|
41
|
-
|
42
|
-
# make sure our gem's dummy_hooks/templates folder is accessible
|
43
|
-
assert @generator.source_paths.include?(File.join(@root, "test/dummy_hooks/templates"))
|
44
|
-
|
45
|
-
# run the generator
|
46
|
-
@generator.run!
|
47
|
-
|
48
|
-
# make sure the dummy is created
|
49
|
-
assert File.exists?(@dummy)
|
50
|
-
|
51
|
-
# make sure things that should get deleted do
|
52
|
-
files = %w(public/index.html public/images/rails.png Gemfile README doc test vendor)
|
53
|
-
files.each do |file|
|
54
|
-
assert !File.exists?(file)
|
55
|
-
end
|
56
|
-
|
57
|
-
# make sure application template is applied
|
58
|
-
rb = read_file('config/application.rb')
|
59
|
-
[ "require File.expand_path('../boot', __FILE__)", /require "dummy_gem"/, /module Dummy/ ].each do |regex|
|
60
|
-
assert_match regex, rb
|
61
|
-
end
|
62
|
-
|
63
|
-
# make sure boot template is applied
|
64
|
-
rb = read_file('config/boot.rb')
|
65
|
-
[ "gemfile = File.expand_path('../../../../Gemfile', __FILE__)", "ENV['BUNDLE_GEMFILE'] = gemfile", "$:.unshift File.expand_path('../../../../lib', __FILE__)" ].each do |regex|
|
66
|
-
assert_match regex, rb
|
67
|
-
end
|
68
|
-
|
69
|
-
# make sure hooks are all registered and in proper order
|
70
|
-
assert_equal [:before_delete, :before_app_generator, :after_app_generator, :before_migrate, :after_migrate], HookTestHelper.hooks
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
17
|
+
|
18
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dummier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 2
|
10
|
-
version: 0.2.2
|
5
|
+
version: 0.2.3
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Spencer Steffen
|
@@ -15,8 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
13
|
+
date: 2011-09-07 00:00:00 Z
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: rails
|
@@ -26,11 +20,6 @@ dependencies:
|
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 0
|
34
23
|
version: 3.0.0
|
35
24
|
type: :runtime
|
36
25
|
version_requirements: *id001
|
@@ -42,11 +31,6 @@ dependencies:
|
|
42
31
|
requirements:
|
43
32
|
- - ">="
|
44
33
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 37
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 11
|
49
|
-
- 3
|
50
34
|
version: 2.11.3
|
51
35
|
type: :development
|
52
36
|
version_requirements: *id002
|
@@ -58,11 +42,6 @@ dependencies:
|
|
58
42
|
requirements:
|
59
43
|
- - ">="
|
60
44
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 29
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 3
|
65
|
-
- 3
|
66
45
|
version: 1.3.3
|
67
46
|
type: :development
|
68
47
|
version_requirements: *id003
|
@@ -97,9 +76,10 @@ files:
|
|
97
76
|
- test/dummy_gem/test/dummy_hooks/before_app_generator.rb
|
98
77
|
- test/dummy_gem/test/dummy_hooks/before_delete.rb
|
99
78
|
- test/dummy_gem/test/dummy_hooks/before_migrate.rb
|
79
|
+
- test/support/hook_test_helper.rb
|
100
80
|
- test/test_helper.rb
|
81
|
+
- test/unit/app_generator_test.rb
|
101
82
|
- test/unit/dummier_test.rb
|
102
|
-
has_rdoc: true
|
103
83
|
homepage: https://github.com/citrus/dummier
|
104
84
|
licenses: []
|
105
85
|
|
@@ -113,23 +93,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
93
|
requirements:
|
114
94
|
- - ">="
|
115
95
|
- !ruby/object:Gem::Version
|
116
|
-
hash: 3
|
117
|
-
segments:
|
118
|
-
- 0
|
119
96
|
version: "0"
|
120
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
98
|
none: false
|
122
99
|
requirements:
|
123
100
|
- - ">="
|
124
101
|
- !ruby/object:Gem::Version
|
125
|
-
hash: 3
|
126
|
-
segments:
|
127
|
-
- 0
|
128
102
|
version: "0"
|
129
103
|
requirements: []
|
130
104
|
|
131
105
|
rubyforge_project: dummier
|
132
|
-
rubygems_version: 1.
|
106
|
+
rubygems_version: 1.8.10
|
133
107
|
signing_key:
|
134
108
|
specification_version: 3
|
135
109
|
summary: Dummier generates a minimal rails testing application.
|
@@ -142,5 +116,7 @@ test_files:
|
|
142
116
|
- test/dummy_gem/test/dummy_hooks/before_app_generator.rb
|
143
117
|
- test/dummy_gem/test/dummy_hooks/before_delete.rb
|
144
118
|
- test/dummy_gem/test/dummy_hooks/before_migrate.rb
|
119
|
+
- test/support/hook_test_helper.rb
|
145
120
|
- test/test_helper.rb
|
121
|
+
- test/unit/app_generator_test.rb
|
146
122
|
- test/unit/dummier_test.rb
|