ammeter 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -11
- data/Gemfile +6 -1
- data/Rakefile +1 -1
- data/features/generator_in_a_gem.feature +1 -1
- data/features/generator_with_shell_prompts_spec.feature +56 -0
- data/features/hooking_into_other_generators.feature +1 -1
- data/features/templates/my_rails_gem/spec/spec_helper.rb +3 -0
- data/features/templates/my_railties_gem/spec/spec_helper.rb +2 -1
- data/lib/ammeter/rspec/generator/example.rb +4 -1
- data/lib/ammeter/rspec/generator/example/generator_example_helpers.rb +29 -0
- data/lib/ammeter/version.rb +1 -1
- data/spec/ammeter/rspec/generator/example/generator_example_helpers_spec.rb +27 -0
- data/spec/support/mock_generator.rb +10 -0
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a001157dcbfae6b406995d4e01a27b89ce22ae92
|
4
|
+
data.tar.gz: 7f43153034ae84e0698a73c609782714224d64dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44b2ea56e21b1650b60a598d0ac45ab8e07c0e36c8500a93a067cc2ed42dacc8efc853996ceea1d4362b4f50de75454ab440833689c5ede74881a7c31aef1673
|
7
|
+
data.tar.gz: d54a0ab64428f7f462f5fb22c70ca2af3e0498b95e94c86b26babc6d7c5741fa8d915b820ae4dd047443432c03713c61e1e38093e0d79c044b14962c0baf24c1
|
data/.travis.yml
CHANGED
@@ -2,20 +2,16 @@ language: ruby
|
|
2
2
|
sudo: false
|
3
3
|
|
4
4
|
rvm:
|
5
|
+
- 2.3.0
|
5
6
|
- 2.2
|
6
7
|
- 2.1.2
|
7
8
|
- 2.0.0
|
8
|
-
- 1.9.3
|
9
|
-
- 1.8.7
|
10
9
|
- ruby-head
|
11
|
-
- jruby-9.
|
12
|
-
- jruby-1.7.9-d19
|
10
|
+
- jruby-9.1.2.0
|
13
11
|
|
14
12
|
env:
|
15
13
|
- RSPEC_VERSION=master
|
16
|
-
- RSPEC_VERSION='~> 3.0
|
17
|
-
- RSPEC_VERSION='~> 2.99.0'
|
18
|
-
- RSPEC_VERSION='~> 2.14.0'
|
14
|
+
- RSPEC_VERSION='~> 3.0'
|
19
15
|
|
20
16
|
bundler_args: "--retry=3 --jobs=3"
|
21
17
|
|
@@ -23,8 +19,5 @@ script: "bundle exec rake ci --trace"
|
|
23
19
|
|
24
20
|
matrix:
|
25
21
|
allow_failures:
|
26
|
-
- rvm: 2.2
|
27
22
|
- rvm: ruby-head
|
28
|
-
- rvm: jruby-9.
|
29
|
-
- rvm: jruby-1.7.9-d19
|
30
|
-
|
23
|
+
- rvm: jruby-9.1.2.0
|
data/Gemfile
CHANGED
@@ -27,7 +27,11 @@ if rspec_major_version == '2' || RUBY_VERSION.to_f < 1.9
|
|
27
27
|
gem 'haml-rails', '~> 0.4'
|
28
28
|
gem 'execjs', '~> 2.0.0'
|
29
29
|
elsif rspec_major_version == '3'
|
30
|
-
|
30
|
+
if RUBY_VERSION < '2.2.2'
|
31
|
+
gem 'rails', '< 5.0' # rails 5 is ruby >= 2.2.2
|
32
|
+
else
|
33
|
+
gem 'rails', '>= 4.0'
|
34
|
+
end
|
31
35
|
gem 'uglifier', '>= 1.3'
|
32
36
|
gem 'rake', '>= 0.10'
|
33
37
|
gem 'coffee-rails', '>= 4.0'
|
@@ -39,6 +43,7 @@ else
|
|
39
43
|
end
|
40
44
|
|
41
45
|
gem "i18n", '< 0.7.0' if RUBY_VERSION < '1.9.3'
|
46
|
+
gem "rack", '<= 1.6.4' if RUBY_VERSION < '2.2.2'
|
42
47
|
|
43
48
|
# Specify your gem's dependencies in rspec-rails-generator-specs.gemspec
|
44
49
|
gemspec
|
data/Rakefile
CHANGED
@@ -27,7 +27,7 @@ def create_gem(gem_name)
|
|
27
27
|
template_folder = "features/templates/#{gem_name}"
|
28
28
|
|
29
29
|
Dir.chdir("./tmp") do
|
30
|
-
sh "bundle gem #{gem_name}"
|
30
|
+
sh "yes | bundle gem -t rspec #{gem_name}"
|
31
31
|
end
|
32
32
|
sh "cp '#{template_folder}/Gemfile' tmp/#{gem_name}"
|
33
33
|
sh "cp '#{template_folder}/#{gem_name}.gemspec' tmp/#{gem_name}"
|
@@ -74,7 +74,7 @@ Feature: Gems can contain generators
|
|
74
74
|
describe 'app/models/post.rb' do
|
75
75
|
subject { file('app/models/post.rb') }
|
76
76
|
it { expect(subject).to exist }
|
77
|
-
it { expect(subject).to contain 'class Post <
|
77
|
+
it { expect(subject).to contain 'class Post < ' }
|
78
78
|
end
|
79
79
|
end
|
80
80
|
"""
|
@@ -0,0 +1,56 @@
|
|
1
|
+
@example_app
|
2
|
+
Feature: generator with shell prompts spec
|
3
|
+
|
4
|
+
Generator specs live in spec/generators. In order to access
|
5
|
+
the generator's methods you can call them on the "generator" object.
|
6
|
+
|
7
|
+
Background: A simple generator
|
8
|
+
Given a file named "lib/generators/awesome/lamest_generator.rb" with:
|
9
|
+
"""
|
10
|
+
class LamestGenerator < Rails::Generators::NamedBase
|
11
|
+
source_root File.expand_path('../templates', __FILE__)
|
12
|
+
class_option :super, :type => :boolean, :default => false
|
13
|
+
|
14
|
+
def create_lamest
|
15
|
+
@lame = false
|
16
|
+
@awesome = false
|
17
|
+
@user_name = ask("What is your name?")
|
18
|
+
if yes?("Are you the lamest?")
|
19
|
+
@lame = true
|
20
|
+
end
|
21
|
+
if yes?("Are you awesome?")
|
22
|
+
@awesome = true
|
23
|
+
end
|
24
|
+
template 'lamest.html.erb', File.join('public', name, "#{"super_" if options[:super]}lamest.html")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
"""
|
28
|
+
And a file named "lib/generators/awesome/templates/lamest.html.erb" with:
|
29
|
+
"""
|
30
|
+
<%= @user_name %> <%= "is the lamest" if @lame %> and <%= "is not awesome!" if @awesome == false %>
|
31
|
+
"""
|
32
|
+
|
33
|
+
Scenario: A spec that runs the entire generator
|
34
|
+
Given a file named "spec/generators/lamest_generator_spec.rb" with:
|
35
|
+
"""
|
36
|
+
require "rails_helper"
|
37
|
+
require 'generators/awesome/lamest_generator'
|
38
|
+
|
39
|
+
describe LamestGenerator do
|
40
|
+
describe 'invoke' do
|
41
|
+
before do
|
42
|
+
gen = generator %w(my_dir)
|
43
|
+
set_shell_prompt_responses(gen, { :ask => "Thomas", :yes? => [true, false] })
|
44
|
+
run_generator
|
45
|
+
end
|
46
|
+
describe 'public/my_dir/lamest.html' do
|
47
|
+
subject { file('public/my_dir/lamest.html') }
|
48
|
+
it { expect(subject).to exist }
|
49
|
+
it { expect(subject).to contain 'Thomas is the lamest and is not awesome!' }
|
50
|
+
it { expect(subject).to_not contain 'This text is not in the file' }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
"""
|
55
|
+
When I run `rake spec`
|
56
|
+
Then the output should contain "3 examples, 0 failures"
|
@@ -41,7 +41,7 @@ Feature: generator spec
|
|
41
41
|
describe 'app/models/post.rb' do
|
42
42
|
subject { file('app/models/post.rb') }
|
43
43
|
it { expect(subject).to exist }
|
44
|
-
it { expect(subject).to contain 'class Post <
|
44
|
+
it { expect(subject).to contain 'class Post < ' }
|
45
45
|
end
|
46
46
|
end
|
47
47
|
"""
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rspec/core'
|
2
2
|
require 'ammeter/rspec/generator/example/generator_example_group'
|
3
|
+
require 'ammeter/rspec/generator/example/generator_example_helpers'
|
3
4
|
|
4
5
|
RSpec::configure do |c|
|
5
6
|
def c.escaped_path(*parts)
|
@@ -8,6 +9,8 @@ RSpec::configure do |c|
|
|
8
9
|
|
9
10
|
generator_path_regex = c.escaped_path(%w[spec generators])
|
10
11
|
if RSpec::Core::Version::STRING >= '3'
|
12
|
+
c.include Ammeter::RSpec::Rails::GeneratorExampleHelpers,
|
13
|
+
:type => :generator
|
11
14
|
c.include Ammeter::RSpec::Rails::GeneratorExampleGroup,
|
12
15
|
:type => :generator,
|
13
16
|
:file_path => lambda { |file_path, metadata|
|
@@ -15,7 +18,7 @@ RSpec::configure do |c|
|
|
15
18
|
}
|
16
19
|
|
17
20
|
else #rspec2
|
18
|
-
|
21
|
+
c.include Ammeter::RSpec::Rails::GeneratorExampleHelpers, :type => :generator
|
19
22
|
c.include Ammeter::RSpec::Rails::GeneratorExampleGroup, :type => :generator, :example_group => {
|
20
23
|
:file_path => generator_path_regex
|
21
24
|
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
|
4
|
+
module Ammeter
|
5
|
+
module RSpec
|
6
|
+
module Rails
|
7
|
+
# Delegates to Rails::Generators::TestCase to work with RSpec.
|
8
|
+
module GeneratorExampleHelpers
|
9
|
+
|
10
|
+
# Sets return values for basic shell commands (ex. ask, yes?, no?).
|
11
|
+
# Does this by mocking return values using RSpec's `and_return` method
|
12
|
+
#
|
13
|
+
# ===== Parameters =====
|
14
|
+
# Generator w/ @shell attribute
|
15
|
+
# Hash { command_name: input_value, ask: "Testing", yes?: true }
|
16
|
+
# The values for each element in the hash can be set as an array as well.
|
17
|
+
# This will allow for different return values upon each call.
|
18
|
+
#
|
19
|
+
# ex. set_shell_prompt_responses(generator, { yes?: [true, false] })
|
20
|
+
# would respond with true to the first yes? call, but false to the second
|
21
|
+
def set_shell_prompt_responses(generator, command_args={})
|
22
|
+
command_args.each do |k,v|
|
23
|
+
allow(generator.shell).to receive(k.to_sym).and_return(*v)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/ammeter/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Ammeter::RSpec::Rails
|
4
|
+
describe GeneratorExampleHelpers do
|
5
|
+
include GeneratorExampleHelpers
|
6
|
+
let(:generator) { MockGenerator.new }
|
7
|
+
|
8
|
+
it "mocks return value of ask to response" do
|
9
|
+
set_shell_prompt_responses(generator, { :ask => "response" })
|
10
|
+
expect(generator.shell.ask).to eq("response")
|
11
|
+
end
|
12
|
+
context "arguments contain multiple shell commands" do
|
13
|
+
it "mocks return values response for ask and true for yes?" do
|
14
|
+
set_shell_prompt_responses(generator, { :ask => "response", :yes? => true })
|
15
|
+
expect(generator.shell.ask).to eq("response")
|
16
|
+
expect(generator.shell.yes?).to be true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
context "argument shell command contains an array" do
|
20
|
+
it "mocks sequential return values response1 and response2" do
|
21
|
+
set_shell_prompt_responses(generator, { :ask => ["response1", "response2"] })
|
22
|
+
expect(generator.shell.ask).to eq("response1")
|
23
|
+
expect(generator.shell.ask).to eq("response2")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Used in generator_example_helpers_spec.rb
|
2
|
+
# set_shell_prompt_responses requires a generator w/ a shell
|
3
|
+
# as an argument. This class defines that generator w/ a shell.
|
4
|
+
class MockGenerator
|
5
|
+
attr_accessor :shell
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@shell = Object.new
|
9
|
+
end
|
10
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ammeter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rothenberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -223,6 +223,7 @@ files:
|
|
223
223
|
- ammeter.gemspec
|
224
224
|
- features/generator_in_a_gem.feature
|
225
225
|
- features/generator_spec.feature
|
226
|
+
- features/generator_with_shell_prompts_spec.feature
|
226
227
|
- features/hooking_into_other_generators.feature
|
227
228
|
- features/support/aruba_timeout.rb
|
228
229
|
- features/support/env.rb
|
@@ -242,6 +243,7 @@ files:
|
|
242
243
|
- lib/ammeter/railtie.rb
|
243
244
|
- lib/ammeter/rspec/generator/example.rb
|
244
245
|
- lib/ammeter/rspec/generator/example/generator_example_group.rb
|
246
|
+
- lib/ammeter/rspec/generator/example/generator_example_helpers.rb
|
245
247
|
- lib/ammeter/rspec/generator/matchers.rb
|
246
248
|
- lib/ammeter/rspec/generator/matchers/be_a_migration.rb
|
247
249
|
- lib/ammeter/rspec/generator/matchers/contain.rb
|
@@ -251,6 +253,7 @@ files:
|
|
251
253
|
- lib/ammeter/rspec/rspec_2_compatibility.rb
|
252
254
|
- lib/ammeter/version.rb
|
253
255
|
- spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
|
256
|
+
- spec/ammeter/rspec/generator/example/generator_example_helpers_spec.rb
|
254
257
|
- spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
|
255
258
|
- spec/ammeter/rspec/generator/matchers/contain_spec.rb
|
256
259
|
- spec/ammeter/rspec/generator/matchers/exist_spec.rb
|
@@ -260,6 +263,7 @@ files:
|
|
260
263
|
- spec/support/helpers.rb
|
261
264
|
- spec/support/matchers.rb
|
262
265
|
- spec/support/memoized_helpers_rspec2compatibility.rb
|
266
|
+
- spec/support/mock_generator.rb
|
263
267
|
homepage: ''
|
264
268
|
licenses: []
|
265
269
|
metadata: {}
|
@@ -279,13 +283,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
283
|
version: '0'
|
280
284
|
requirements: []
|
281
285
|
rubyforge_project:
|
282
|
-
rubygems_version: 2.
|
286
|
+
rubygems_version: 2.4.3
|
283
287
|
signing_key:
|
284
288
|
specification_version: 4
|
285
289
|
summary: Write specs for your Rails 3+ generators
|
286
290
|
test_files:
|
287
291
|
- features/generator_in_a_gem.feature
|
288
292
|
- features/generator_spec.feature
|
293
|
+
- features/generator_with_shell_prompts_spec.feature
|
289
294
|
- features/hooking_into_other_generators.feature
|
290
295
|
- features/support/aruba_timeout.rb
|
291
296
|
- features/support/env.rb
|
@@ -300,6 +305,7 @@ test_files:
|
|
300
305
|
- features/templates/my_railties_gem/spec/spec_helper.rb
|
301
306
|
- features/templates/rspec.rake
|
302
307
|
- spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
|
308
|
+
- spec/ammeter/rspec/generator/example/generator_example_helpers_spec.rb
|
303
309
|
- spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
|
304
310
|
- spec/ammeter/rspec/generator/matchers/contain_spec.rb
|
305
311
|
- spec/ammeter/rspec/generator/matchers/exist_spec.rb
|
@@ -309,3 +315,4 @@ test_files:
|
|
309
315
|
- spec/support/helpers.rb
|
310
316
|
- spec/support/matchers.rb
|
311
317
|
- spec/support/memoized_helpers_rspec2compatibility.rb
|
318
|
+
- spec/support/mock_generator.rb
|