ammeter 1.1.0 → 1.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f14d89dc8ba87e492a772bd8e81a8370641b8bd
4
- data.tar.gz: bea93658480644d813daafa47b58510c7d9c856b
3
+ metadata.gz: 5ca6302a39acf11feaf4ba8a22bcba28402d841c
4
+ data.tar.gz: 03c39f82a6bf5cdf102dfe20adec75e092bf5bc9
5
5
  SHA512:
6
- metadata.gz: 24107720705e3ff11ba9691b762c43fe2b0d09c2608e00c9438a4ae25699acbc3f27993169c40f739fd30a66fc3a7ff65281ed9673a43330eaeb534b6858dbfa
7
- data.tar.gz: 7687869b3fddd91f0fba62b628b23f3059befdfba8bdfd1cb25f08bfa64864237ac121152aaef5ebef12999a36f1a05002a8430e966179e676890811673f3e7c
6
+ metadata.gz: 1f76eddb2fda86bc36f0ab60cf5eea848f9b2cfb5ab5673d699e3f398127599f4783ec35f8aefb773004161bc01abbe1c686f3f181da815ab88889e03e0be5c1
7
+ data.tar.gz: ce477ea8f9e05a7c111c85d9cf3f5a22b2743782edf333f90474e85cb52883beb076e2db13d8154cbe3879362331d626de7ada71774e27b4ad6a90fca9585e37
@@ -10,13 +10,14 @@ Feature: generator spec
10
10
  class AwesomeGenerator < Rails::Generators::NamedBase
11
11
  source_root File.expand_path('../templates', __FILE__)
12
12
  class_option :super, :type => :boolean, :default => false
13
+ class_option :someone, :type => :string
13
14
 
14
15
  def create_awesomeness
15
16
  template 'awesome.html', File.join('public', name, "#{"super_" if options[:super]}awesome.html")
16
17
  end
17
18
 
18
19
  def create_lameness
19
- template 'lame.html', File.join('public', name, "#{"super_" if options[:super]}lame.html")
20
+ template 'lame.html.erb', File.join('public', name, "#{"super_" if options[:super]}lame.html")
20
21
  end
21
22
  end
22
23
  """
@@ -24,9 +25,9 @@ Feature: generator spec
24
25
  """
25
26
  This is an awesome file
26
27
  """
27
- And a file named "lib/generators/awesome/templates/lame.html" with:
28
+ And a file named "lib/generators/awesome/templates/lame.html.erb" with:
28
29
  """
29
- This is a lame file
30
+ <%= options[:someone] %> is lame
30
31
  """
31
32
 
32
33
  Scenario: A spec that runs the entire generator
@@ -36,23 +37,35 @@ Feature: generator spec
36
37
  require 'generators/awesome/awesome_generator'
37
38
 
38
39
  describe AwesomeGenerator do
39
- before { run_generator %w(my_dir) }
40
- describe 'public/my_dir/awesome.html' do
41
- subject { file('public/my_dir/awesome.html') }
42
- it { expect(subject).to exist }
43
- it { expect(subject).to contain 'This is an awesome file' }
44
- it { expect(subject).to_not contain 'This text is not in the file' }
40
+ describe 'invoke' do
41
+ before { run_generator %w(my_dir --someone Alex) }
42
+ describe 'public/my_dir/awesome.html' do
43
+ subject { file('public/my_dir/awesome.html') }
44
+ it { expect(subject).to exist }
45
+ it { expect(subject).to contain 'This is an awesome file' }
46
+ it { expect(subject).to_not contain 'This text is not in the file' }
47
+ end
48
+ describe 'public/my_dir/lame.html' do
49
+ subject { file('public/my_dir/lame.html') }
50
+ it { expect(subject).to exist }
51
+ it { expect(subject).to contain 'Alex is lame' }
52
+ it { expect(subject).to_not contain 'This text is not in the file' }
53
+ end
45
54
  end
46
- describe 'public/my_dir/lame.html' do
47
- subject { file('public/my_dir/lame.html') }
48
- it { expect(subject).to exist }
49
- it { expect(subject).to contain 'This is a lame file' }
50
- it { expect(subject).to_not contain 'This text is not in the file' }
55
+ describe 'revoke' do
56
+ subject { file('public/my_dir/awesome.html') }
57
+ it 'can run a reverse migration' do
58
+ FileUtils.mkdir_p(File.dirname(subject))
59
+ File.write(subject, "test file")
60
+ expect(subject).to exist
61
+ run_generator %w(my_dir --someone Alex), behavior: :revoke
62
+ expect(subject).not_to exist
63
+ end
51
64
  end
52
65
  end
53
66
  """
54
67
  When I run `rake spec`
55
- Then the output should contain "6 examples, 0 failures"
68
+ Then the output should contain "7 examples, 0 failures"
56
69
 
57
70
  Scenario: A spec that runs one task in the generator
58
71
  Given a file named "spec/generators/another_awesome_generator_spec.rb" with:
@@ -3,6 +3,7 @@ if RSpec::Core::Version::STRING < '3'
3
3
  require 'ammeter/rspec/rspec_2_compatibility' # if rspec2
4
4
  end
5
5
  require 'rails'
6
+ require 'ammeter/output_capturer.rb'
6
7
  require 'ammeter/rspec/generator/example.rb'
7
8
  require 'ammeter/rspec/generator/matchers.rb'
8
9
 
@@ -0,0 +1,40 @@
1
+ module Ammeter
2
+ class OutputCapturer
3
+ # Is this thread safe!?!?
4
+ # This won't work with sub-processes
5
+ def self.capture(io, &block)
6
+ case io
7
+ when :stdout
8
+ capture_stdout(&block)
9
+ when :stderr
10
+ capture_stderr(&block)
11
+ else
12
+ raise "Unknown IO #{io}"
13
+ end
14
+ end
15
+
16
+ def self.capture_stdout(&block)
17
+ captured_stream = StringIO.new
18
+
19
+ orginal_io, $stdout = $stdout, captured_stream
20
+
21
+ block.call
22
+
23
+ captured_stream.string
24
+ ensure
25
+ $stdout = orginal_io
26
+ end
27
+
28
+ def self.capture_stderr(&block)
29
+ captured_stream = StringIO.new
30
+
31
+ orginal_io, $stderr = $stderr, captured_stream
32
+
33
+ block.call
34
+
35
+ captured_stream.string
36
+ ensure
37
+ $stderr = orginal_io
38
+ end
39
+ end
40
+ end
@@ -13,7 +13,7 @@ module Ammeter
13
13
  extend ActiveSupport::Concern
14
14
  include ::RSpec::Rails::RailsExampleGroup
15
15
 
16
- DELEGATED_METHODS = [:capture, :destination_root, :current_path, :generator_class]
16
+ DELEGATED_METHODS = [:destination_root, :current_path, :generator_class]
17
17
  module ClassMethods
18
18
  mattr_accessor :test_unit_test_case_delegate
19
19
  delegate :default_arguments, :to => :'self.test_unit_test_case_delegate'
@@ -44,12 +44,12 @@ module Ammeter
44
44
  end
45
45
 
46
46
  def run_generator(given_args=self.default_arguments, config={})
47
- capture(:stdout) { generator(given_args, config).invoke_all }
47
+ OutputCapturer.capture(:stdout) { generator(given_args, config).invoke_all }
48
48
  end
49
49
  end
50
50
 
51
51
  def invoke_task name
52
- capture(:stdout) { generator.invoke_task(generator_class.all_tasks[name.to_s]) }
52
+ OutputCapturer.capture(:stdout) { generator.invoke_task(generator_class.all_tasks[name.to_s]) }
53
53
  end
54
54
 
55
55
  included do
@@ -1,3 +1,3 @@
1
1
  module Ammeter
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  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.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rothenberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-21 00:00:00.000000000 Z
11
+ date: 2014-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -238,6 +238,7 @@ files:
238
238
  - features/templates/rspec.rake
239
239
  - lib/ammeter.rb
240
240
  - lib/ammeter/init.rb
241
+ - lib/ammeter/output_capturer.rb
241
242
  - lib/ammeter/railtie.rb
242
243
  - lib/ammeter/rspec/generator/example.rb
243
244
  - lib/ammeter/rspec/generator/example/generator_example_group.rb