ammeter 1.1.3 → 1.1.4
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/.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
|