spicycode-micronaut 0.2.4 → 0.2.5

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/Rakefile CHANGED
@@ -12,6 +12,8 @@ begin
12
12
  s.authors = ["Chad Humphries"]
13
13
  s.files = FileList["[A-Z]*", "{bin,lib,examples}/**/*"]
14
14
  end
15
+ rescue => e
16
+ puts "Jeweler, or one of its dependencies blew right up. #{e}"
15
17
  rescue LoadError
16
18
  puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
19
  end
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 4
3
2
  :major: 0
4
3
  :minor: 2
4
+ :patch: 5
@@ -8,9 +8,7 @@ def with_ruby(version)
8
8
  yield if RUBY_PLATFORM =~ Regexp.compile("^#{version}")
9
9
  end
10
10
 
11
- with_ruby("1.8") do
12
- gem :mocha
13
- end
11
+ with_ruby("1.8") { gem :mocha }
14
12
 
15
13
  require File.expand_path(File.dirname(__FILE__) + "/resources/example_classes")
16
14
 
@@ -45,5 +43,6 @@ Micronaut.configure do |c|
45
43
  c.mock_with :mocha
46
44
  c.color_enabled = not_in_editor?
47
45
  c.filter_run :focused => true
46
+ c.profile_examples = true
48
47
  #c.formatter = :documentation
49
48
  end
@@ -236,7 +236,7 @@ describe Micronaut::Behaviour do
236
236
 
237
237
  end
238
238
 
239
- describe "#run_examples" do
239
+ pending "#run_examples" do
240
240
 
241
241
  def stub_behaviour
242
242
  stub_everything('behaviour', :metadata => { :behaviour => { :name => 'behaviour_name' }})
@@ -290,7 +290,12 @@ describe Micronaut::Behaviour do
290
290
 
291
291
 
292
292
  it "should be able to access the before all ivars in the before_all_ivars hash" do
293
- running_example.behaviour.before_all_ivars.should include('@before_all_top_level' => 'before_all_top_level')
293
+ with_ruby('1.8') do
294
+ running_example.behaviour.before_all_ivars.should include('@before_all_top_level' => 'before_all_top_level')
295
+ end
296
+ with_ruby('1.9') do
297
+ running_example.behaviour.before_all_ivars.should include(:@before_all_top_level => 'before_all_top_level')
298
+ end
294
299
  end
295
300
 
296
301
  describe "but now I am nested" do
@@ -76,12 +76,8 @@ describe Micronaut::Formatters::BaseFormatter do
76
76
  @formatter.should have_interface_for(:example_started).with(1).argument
77
77
  end
78
78
 
79
- it "should have example_failed as an interface with two arguments" do
80
- @formatter.should have_interface_for(:example_failed).with(2).arguments
81
- end
82
-
83
- it "should have example_pending as an interface with two arguments" do
84
- @formatter.should have_interface_for(:example_pending).with(2).arguments
79
+ it "should have example_finished as an interface with one argument" do
80
+ @formatter.should have_interface_for(:example_finished).with(1).arguments
85
81
  end
86
82
 
87
83
  it "should have start_dump as an interface with 1 arguments" do
@@ -122,4 +118,4 @@ describe Micronaut::Formatters::BaseFormatter do
122
118
 
123
119
  end
124
120
 
125
- end
121
+ end
@@ -21,41 +21,9 @@ describe Micronaut::Formatters::ProgressFormatter do
21
21
  @output.string.should =~ /Finished in 3 seconds\n2 examples/i
22
22
  end
23
23
 
24
- it "should produce standard summary" do
25
- @formatter.start_dump(3)
26
- @formatter.example_pending(running_example, "message")
27
- @output.rewind
28
- @formatter.dump_summary
29
- @output.string.should =~ /Finished in 3 seconds\n2 examples/i
30
- end
31
-
32
- describe "when color is enabled" do
33
-
34
- before do
35
- @formatter.stubs(:trace?).returns(false)
36
- @formatter.stubs(:color_enabled?).returns(true)
37
- end
38
-
39
- it "should output a green dot for passing spec" do
40
- @formatter.example_passed("spec")
41
- @output.string.should == "\e[32m.\e[0m"
42
- end
43
-
44
- it "should push red F for failure spec" do
45
- @formatter.example_failed("spec", Micronaut::Expectations::ExpectationNotMetError.new)
46
- @output.string.should == "\e[31mF\e[0m"
47
- end
48
-
49
- it "should push magenta F for error spec" do
50
- @formatter.example_failed("spec", RuntimeError.new)
51
- @output.string.should == "\e[35mF\e[0m"
52
- end
53
-
54
- end
55
-
56
24
  it "should push nothing on start" do
57
25
  @formatter.start(4)
58
26
  @output.string.should == ""
59
27
  end
60
28
 
61
- end
29
+ end
@@ -50,7 +50,7 @@ module Micronaut
50
50
  def self.example(desc=nil, options={}, &block)
51
51
  examples << Micronaut::Example.new(self, desc, options.update(:caller => caller[0]), block)
52
52
  end
53
-
53
+
54
54
  def self.alias_example_to(new_alias, extra_options={})
55
55
  new_alias = <<-END_RUBY
56
56
  def self.#{new_alias}(desc=nil, options={}, &block)
@@ -62,7 +62,7 @@ module Micronaut
62
62
  END_RUBY
63
63
  module_eval(new_alias, __FILE__, __LINE__)
64
64
  end
65
-
65
+
66
66
  alias_example_to :it
67
67
  alias_example_to :focused, :focused => true
68
68
  alias_example_to :disabled, :disabled => true
@@ -196,7 +196,7 @@ module Micronaut
196
196
 
197
197
  # Runs all examples, returning true only if all of them pass
198
198
  def self.run_examples(behaviour_instance, reporter)
199
- examples_to_run.map { |ex| ex.run(behaviour_instance, reporter) }.all?
199
+ examples_to_run.map { |ex| ex.run(behaviour_instance) }.all?
200
200
  end
201
201
 
202
202
  def self.subclass(base_name, &body) # :nodoc:
@@ -8,15 +8,40 @@ module Micronaut
8
8
  @behaviour, @description, @options, @example_block = behaviour, desc, options, example_block
9
9
  @metadata = @behaviour.metadata.dup
10
10
  @metadata[:description] = description
11
+ @metadata[:execution_result] = {}
11
12
  @metadata.update(options)
12
13
  end
13
14
 
14
- def inspect
15
- "#{@metadata[:behaviour][:name]} - #{@metadata[:description]}"
15
+ def record_results(results={})
16
+ @metadata[:execution_result].update(results)
17
+ end
18
+
19
+ def execution_result
20
+ @metadata[:execution_result]
16
21
  end
17
22
 
18
- def to_s
19
- inspect
23
+ def run_started
24
+ record_results :started_at => Time.now
25
+ Micronaut.configuration.formatter.example_started(self)
26
+ end
27
+
28
+ def run_passed
29
+ run_finished 'passed'
30
+ end
31
+
32
+ def run_pending(message='Not yet implemented')
33
+ run_finished 'pending', :pending_message => message
34
+ end
35
+
36
+ def run_failed(exception)
37
+ run_finished 'failed', :exception_encountered => exception
38
+ end
39
+
40
+ def run_finished(status, results={})
41
+ record_results results.update(:status => status)
42
+ finish_time = Time.now
43
+ record_results :finished_at => finish_time, :run_time => (finish_time - execution_result[:started_at])
44
+ Micronaut.configuration.formatter.example_finished(self)
20
45
  end
21
46
 
22
47
  def run_before_each
@@ -34,16 +59,17 @@ module Micronaut
34
59
  def run_example
35
60
  if example_block
36
61
  @behaviour_instance.instance_eval(&example_block)
37
- @reporter.example_passed(self)
62
+ run_passed
38
63
  else
39
- @reporter.example_pending(self, 'Not yet implemented')
64
+ run_pending
40
65
  end
41
66
  end
42
67
 
43
- def run(behaviour_instance, reporter)
44
- @behaviour_instance, @reporter = behaviour_instance, reporter
68
+ def run(behaviour_instance)
69
+ @behaviour_instance = behaviour_instance
45
70
  @behaviour_instance.running_example = self
46
- @reporter.example_started(self)
71
+
72
+ run_started
47
73
 
48
74
  all_systems_nominal = true
49
75
  exception_encountered = nil
@@ -64,11 +90,19 @@ module Micronaut
64
90
  ensure
65
91
  @behaviour_instance.running_example = nil
66
92
  end
67
-
68
- @reporter.example_failed(self, exception_encountered) if exception_encountered
93
+
94
+ run_failed(exception_encountered) if exception_encountered
69
95
 
70
96
  all_systems_nominal
71
97
  end
98
+
99
+ def inspect
100
+ "#{@metadata[:behaviour][:name]} - #{@metadata[:description]}"
101
+ end
102
+
103
+ def to_s
104
+ inspect
105
+ end
72
106
 
73
107
  end
74
108
 
@@ -2,11 +2,12 @@ module Micronaut
2
2
  module Formatters
3
3
 
4
4
  class BaseFormatter
5
- attr_accessor :behaviour, :total_example_failed, :total_example_pending
6
- attr_reader :example_count, :duration
5
+ attr_accessor :behaviour
6
+ attr_reader :example_count, :duration, :examples
7
7
 
8
8
  def initialize
9
- @total_example_failed, @total_example_pending, @example_count = 0, 0, 0
9
+ @example_count = 0
10
+ @examples = []
10
11
  @behaviour = nil
11
12
  end
12
13
 
@@ -35,16 +36,12 @@ module Micronaut
35
36
  configuration.color_enabled?
36
37
  end
37
38
 
38
- def example_profiling_info
39
- @example_profiling_info ||= []
40
- end
41
-
42
39
  def pending_examples
43
- @pending_examples ||= []
40
+ @pending_examples ||= ::Micronaut.world.find(examples, :execution_result => { :status => 'pending' })
44
41
  end
45
42
 
46
43
  def failed_examples
47
- @failed_examples ||= []
44
+ @failed_examples ||= ::Micronaut.world.find(examples, :execution_result => { :status => 'failed' })
48
45
  end
49
46
 
50
47
  # This method is invoked before any examples are run, right after
@@ -57,6 +54,13 @@ module Micronaut
57
54
  @example_count = example_count
58
55
  end
59
56
 
57
+ def example_started(example)
58
+ end
59
+
60
+ def example_finished(example)
61
+ examples << example
62
+ end
63
+
60
64
  # This method is invoked at the beginning of the execution of each behaviour.
61
65
  # +behaviour+ is the behaviour.
62
66
  #
@@ -65,31 +69,6 @@ module Micronaut
65
69
  @behaviour = behaviour
66
70
  end
67
71
 
68
- # This method is invoked when an +example+ starts.
69
- def example_started(example)
70
- end
71
-
72
- # This method is invoked when an +example+ passes.
73
- def example_passed(example)
74
- end
75
-
76
- # This method is invoked when an +example+ fails, i.e. an exception occurred
77
- # inside it (such as a failed should or other exception). +counter+ is the
78
- # sequence number of the failure (starting at 1) and +failure+ is the associated
79
- # exception.
80
- def example_failed(example, exception)
81
- @total_example_failed += 1
82
- end
83
-
84
- # This method is invoked when an example is not yet implemented (i.e. has not
85
- # been provided a block), or when an ExamplePendingError is raised.
86
- # +message+ is the message from the ExamplePendingError, if it exists, or the
87
- # default value of "Not Yet Implemented"
88
- # +pending_caller+ is the file and line number of the spec which
89
- # has called the pending method
90
- def example_pending(example, message)
91
- end
92
-
93
72
  # This method is invoked after all of the examples have executed. The next method
94
73
  # to be invoked after this one is #dump_failure (once for each failed example),
95
74
  def start_dump(duration)
@@ -3,33 +3,11 @@ module Micronaut
3
3
  module Formatters
4
4
 
5
5
  class BaseTextFormatter < BaseFormatter
6
-
7
- def example_passed(example)
8
- super
9
- # Why && @start_time
10
- if profile_examples? && @start_time
11
- example_profiling_info << [example, Time.now - @start_time]
12
- end
13
- end
14
6
 
15
- def example_started(example)
16
- super
17
- @start_time = Time.now
18
- end
19
-
20
- def example_pending(example, message)
21
- pending_examples << [example, message]
22
- end
23
-
24
- def example_failed(example, exception)
25
- super
26
- failed_examples << [example, exception]
27
- end
28
-
29
7
  def dump_failures
30
8
  output.puts
31
- failed_examples.each_with_index do |examples_with_exception, index|
32
- failed_example, exception = examples_with_exception.first, examples_with_exception.last
9
+ failed_examples.each_with_index do |failed_example, index|
10
+ exception = failed_example.execution_result[:exception_encountered]
33
11
  padding = ' '
34
12
 
35
13
  output.puts "#{index.next}) #{failed_example}"
@@ -77,11 +55,11 @@ module Micronaut
77
55
 
78
56
  # Don't print out profiled info if there are failures, it just clutters the output
79
57
  if profile_examples? && failure_count == 0
80
- sorted_examples = example_profiling_info.sort_by { |desc, time| time }.last(10)
58
+ sorted_examples = examples.sort_by { |example| example.execution_result[:run_time] }.reverse.first(10)
81
59
  output.puts "\nTop #{sorted_examples.size} slowest examples:\n"
82
- sorted_examples.reverse.each do |ex, time|
83
- output.puts " (#{sprintf("%.7f", time)} seconds) #{ex}"
84
- output.puts grey(" # #{ex.metadata[:caller]}")
60
+ sorted_examples.each do |example|
61
+ output.puts " (#{sprintf("%.7f", example.execution_result[:run_time])} seconds) #{example}"
62
+ output.puts grey(" # #{example.metadata[:caller]}")
85
63
  end
86
64
  end
87
65
 
@@ -154,4 +132,4 @@ module Micronaut
154
132
 
155
133
  end
156
134
 
157
- end
135
+ end
@@ -25,9 +25,27 @@ module Micronaut
25
25
  @previous_nested_behaviours = described_behaviour_chain
26
26
  end
27
27
 
28
- def example_failed(example, exception)
28
+ def output_for(example)
29
+ case example.execution_result[:status]
30
+ when 'failed'
31
+ failure_output(example, example.execution_result[:exception_encountered])
32
+ when 'pending'
33
+ pending_output(example, example.execution_result[:pending_message])
34
+ when 'passed'
35
+ passed_output(example)
36
+ else
37
+ red(example.execution_result[:status])
38
+ end
39
+ end
40
+
41
+ def example_finished(example)
29
42
  super
30
- expectation_not_met = exception.is_a?(Micronaut::Expectations::ExpectationNotMetError)
43
+ output.puts output_for(example)
44
+ output.flush
45
+ end
46
+
47
+ def failure_output(example, exception)
48
+ expectation_not_met = exception.is_a?(::Micronaut::Expectations::ExpectationNotMetError)
31
49
 
32
50
  message = if expectation_not_met
33
51
  "#{current_indentation}#{example.description} (FAILED)"
@@ -35,20 +53,15 @@ module Micronaut
35
53
  "#{current_indentation}#{example.description} (ERROR)"
36
54
  end
37
55
 
38
- output.puts(expectation_not_met ? red(message) : magenta(message))
39
- output.flush
56
+ expectation_not_met ? red(message) : magenta(message)
40
57
  end
41
58
 
42
- def example_passed(example)
43
- super
44
- output.puts green("#{current_indentation}#{example.description}")
45
- output.flush
59
+ def passed_output(example)
60
+ green("#{current_indentation}#{example.description}")
46
61
  end
47
62
 
48
- def example_pending(example, message)
49
- super
50
- output.puts yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
51
- output.flush
63
+ def pending_output(example, message)
64
+ yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
52
65
  end
53
66
 
54
67
  def current_indentation
@@ -62,4 +75,4 @@ module Micronaut
62
75
  end
63
76
 
64
77
  end
65
- end
78
+ end
@@ -3,22 +3,19 @@ module Micronaut
3
3
 
4
4
  class ProgressFormatter < BaseTextFormatter
5
5
 
6
- def example_failed(example, exception)
7
- super
8
- output.print colorise('F', exception)
9
- output.flush
6
+ def output_for(example)
7
+ case example.execution_result[:status]
8
+ when 'failed' then colorise('F', example.execution_result[:exception_encountered])
9
+ when 'pending' then yellow('*')
10
+ when 'passed' then green('.')
11
+ else
12
+ red(example.execution_result[:status])
13
+ end
10
14
  end
11
15
 
12
- def example_passed(example)
16
+ def example_finished(example)
13
17
  super
14
- output.print green('.')
15
- output.flush
16
- end
17
-
18
- def example_pending(example, message)
19
- super
20
- output.print yellow('*')
21
- output.flush
18
+ output.print output_for(example)
22
19
  end
23
20
 
24
21
  def start_dump(duration)
@@ -27,11 +24,7 @@ module Micronaut
27
24
  output.flush
28
25
  end
29
26
 
30
- def method_missing(sym, *args)
31
- # ignore
32
- end
33
-
34
27
  end
35
28
 
36
29
  end
37
- end
30
+ end
@@ -18,7 +18,7 @@ module Micronaut
18
18
  if filter
19
19
  @behaviours_to_run = filter_behaviours
20
20
  if @behaviours_to_run.size == 0 && Micronaut.configuration.run_all_when_everything_filtered?
21
- puts "No behaviours were matched by #{filter.inspect}, running all"
21
+ puts "No examples were matched by #{filter.inspect}, running all"
22
22
  # reset the behaviour list to all behaviours, and add back all examples
23
23
  @behaviours_to_run = @behaviours
24
24
  @behaviours.each { |b| b.examples_to_run.replace(b.examples) }
data/lib/micronaut.rb CHANGED
@@ -31,7 +31,6 @@ module Micronaut
31
31
 
32
32
  def self.configure
33
33
  yield configuration if block_given?
34
- configuration.autorun!
35
34
  end
36
35
 
37
36
  def self.world
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spicycode-micronaut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Humphries
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-13 00:00:00 -08:00
12
+ date: 2009-03-10 00:00:00 -07:00
13
13
  default_executable: micronaut
14
14
  dependencies: []
15
15
 
@@ -19,8 +19,9 @@ executables:
19
19
  - micronaut
20
20
  extensions: []
21
21
 
22
- extra_rdoc_files: []
23
-
22
+ extra_rdoc_files:
23
+ - README.markdown
24
+ - LICENSE
24
25
  files:
25
26
  - History.txt
26
27
  - LICENSE