spicycode-micronaut 0.0.4 → 0.0.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.
Files changed (29) hide show
  1. data/RSPEC-LICENSE +23 -0
  2. data/Rakefile +2 -2
  3. data/examples/example_helper.rb +10 -0
  4. data/examples/lib/micronaut/behaviour_group_example.rb +170 -159
  5. data/examples/lib/micronaut/expectations/fail_with_example.rb +10 -64
  6. data/examples/lib/micronaut/formatters/progress_formatter_example.rb +3 -7
  7. data/examples/lib/micronaut/matchers/description_generation_example.rb +1 -1
  8. data/examples/lib/micronaut/matchers/have_example.rb +2 -2
  9. data/examples/lib/micronaut/matchers/operator_matcher_example.rb +0 -2
  10. data/examples/lib/micronaut/matchers/raise_error_example.rb +32 -1
  11. data/examples/lib/micronaut/{example_runner_example.rb → runner_example.rb} +0 -0
  12. data/examples/lib/micronaut/runner_options_example.rb +5 -0
  13. data/examples/lib/micronaut/world_example.rb +94 -0
  14. data/lib/micronaut.rb +1 -15
  15. data/lib/micronaut/behaviour_group.rb +34 -16
  16. data/lib/micronaut/behaviour_group_class_methods.rb +32 -47
  17. data/lib/micronaut/expectations.rb +0 -12
  18. data/lib/micronaut/extensions/kernel.rb +2 -2
  19. data/lib/micronaut/formatters/base_formatter.rb +4 -3
  20. data/lib/micronaut/formatters/base_text_formatter.rb +29 -17
  21. data/lib/micronaut/formatters/progress_formatter.rb +1 -1
  22. data/lib/micronaut/runner.rb +2 -2
  23. data/lib/micronaut/world.rb +36 -0
  24. metadata +7 -10
  25. data/examples/lib/micronaut/expectations/differs/default_example.rb +0 -125
  26. data/examples/lib/micronaut/matchers/exist_example.rb +0 -69
  27. data/lib/micronaut/example_world.rb +0 -17
  28. data/lib/micronaut/expectations/differs/default.rb +0 -58
  29. data/lib/micronaut/matchers/exist.rb +0 -16
@@ -3,7 +3,7 @@ module Micronaut
3
3
 
4
4
  def inherited(klass)
5
5
  super
6
- Micronaut::ExampleWorld.example_groups << klass
6
+ Micronaut::World.behaviour_groups << klass
7
7
  end
8
8
 
9
9
  def befores
@@ -46,88 +46,73 @@ module Micronaut
46
46
  @_examples ||= []
47
47
  end
48
48
 
49
- def set_it_up(name_or_const, given_description, given_options)
50
- @_behaviour_group_name = name_or_const.to_s
51
- @_behaviour_described_type = name_or_const.is_a?(String) ? Object : name_or_const
52
- @_behaviour_group_description = given_description
53
- @_behaviour_group_options = given_options
49
+ def set_it_up(*args)
50
+ metadata[:options] = args.last.is_a?(Hash) ? args.pop : {}
51
+ metadata[:described_type] = args.first.is_a?(String) ? self.superclass.described_type : args.shift
52
+ metadata[:description] = args.shift || ''
53
+ metadata[:name] = "#{metadata[:described_type]} #{metadata[:description]}".strip
54
+ end
55
+
56
+ def metadata
57
+ @_metadata ||= {}
54
58
  end
55
59
 
56
60
  def name
57
- @_behaviour_group_name
61
+ metadata[:name]
58
62
  end
59
63
 
60
64
  def described_type
61
- @_behaviour_described_type
65
+ metadata[:described_type]
62
66
  end
63
67
 
64
68
  def description
65
- @_behaviour_group_description
69
+ metadata[:description]
66
70
  end
67
71
 
68
72
  def options
69
- @_behaviour_group_options
73
+ metadata[:options]
70
74
  end
71
75
 
72
- def describe(name_or_const, desc=nil, options={}, &block)
73
- raise ArgumentError if block.nil? || name_or_const.nil?
76
+ def describe(*args, &describe_block)
77
+ raise ArgumentError if args.empty? || describe_block.nil?
78
+
79
+ args << {} unless Hash === args.last
80
+ # args.last[:spec_path] ||= File.expand_path(caller(0)[2])
74
81
 
75
82
  subclass('NestedLevel') do
76
- set_it_up(name_or_const, desc, options)
77
-
78
- module_eval(&block)
83
+ set_it_up(*args)
84
+ module_eval(&describe_block)
79
85
  end
80
86
  end
81
87
 
82
- def create_example_group(name_or_const, desc=nil, options={}, &describe_block)
83
- describe(name_or_const, desc, options, &describe_block)
84
- end
85
-
86
88
  def each_ancestor(superclass_last=false)
87
89
  classes = []
88
90
  current_class = self
89
- while is_example_group_class?(current_class)
91
+
92
+ while current_class < Micronaut::BehaviourGroup
90
93
  superclass_last ? classes << current_class : classes.unshift(current_class)
91
94
  current_class = current_class.superclass
92
95
  end
93
96
 
94
- classes.each do |example_group|
95
- yield example_group
96
- end
97
+ classes.each { |example_group| yield example_group }
97
98
  end
98
-
99
- def is_example_group_class?(klass)
100
- klass.kind_of?(Micronaut::BehaviourGroup)
101
- end
102
99
 
103
- def all_before_alls
104
- all_before_alls = []
105
- each_ancestor do |ancestor|
106
- all_before_alls << ancestor.before_alls
107
- end
108
- all_before_alls.concat(before_alls)
109
- end
110
-
111
100
  def run(runner)
112
101
  new.execute(runner)
113
102
  end
114
103
 
115
- def subclass(base_name, &body)
104
+ def subclass(base_name, &body) # :nodoc:
105
+ @_sub_class_count ||= 0
106
+ @_sub_class_count += 1
116
107
  klass = Class.new(self)
117
- class_name = "#{base_name}_#{_sub_class_count!}"
118
- instance_eval do
119
- const_set(class_name, klass)
120
- end
121
- klass.instance_eval(&body) if block_given?
108
+ class_name = "#{base_name}_#{@_sub_class_count}"
109
+ const_set(class_name, klass)
110
+ klass.instance_eval(&body)
122
111
  klass
123
112
  end
124
113
 
125
- private
126
-
127
- def _sub_class_count!
128
- @_sub_class_count ||= 0
129
- @_sub_class_count += 1
130
- @_sub_class_count
114
+ def to_s
115
+ name
131
116
  end
132
117
 
133
118
  end
@@ -34,22 +34,10 @@ module Micronaut
34
34
  class << self
35
35
  attr_accessor :differ
36
36
 
37
- # raises a Micronaut::Expectations::ExpectationNotMetError with message
38
- #
39
- # When a differ has been assigned and fail_with is passed
40
- # <code>expected</code> and <code>target</code>, passes them
41
- # to the differ to append a diff message to the failure message.
42
37
  def fail_with(message, expected=nil, target=nil) # :nodoc:
43
38
  if Array === message && message.length == 3
44
39
  message, expected, target = message[0], message[1], message[2]
45
40
  end
46
- unless (differ.nil? || expected.nil? || target.nil?)
47
- if expected.is_a?(String)
48
- message << "\nDiff:" << self.differ.diff_as_string(target.to_s, expected)
49
- elsif !target.is_a?(Proc)
50
- message << "\nDiff:" << self.differ.diff_as_object(target, expected)
51
- end
52
- end
53
41
  Kernel::raise(Micronaut::Expectations::ExpectationNotMetError.new(message))
54
42
  end
55
43
  end
@@ -2,8 +2,8 @@ module Micronaut
2
2
  module Extensions
3
3
  module Kernel
4
4
 
5
- def describe(name_or_const, desc=nil, options={}, &describe_block)
6
- Micronaut::BehaviourGroup.create_example_group(name_or_const, desc, options, &describe_block)
5
+ def describe(*args, &describe_block)
6
+ Micronaut::BehaviourGroup.describe(*args, &describe_block)
7
7
  end
8
8
 
9
9
  end
@@ -2,9 +2,10 @@ module Micronaut
2
2
  module Formatters
3
3
  # Baseclass for formatters that implements all required methods as no-ops.
4
4
  class BaseFormatter
5
- attr_accessor :example_group, :options, :where, :total_example_failed, :total_example_pending
6
- def initialize(options, where)
7
- @options, @where = options, where
5
+ attr_accessor :example_group, :options, :output, :total_example_failed, :total_example_pending
6
+
7
+ def initialize(options, output_to)
8
+ @options, @output = options, output_to
8
9
  @total_example_failed, @total_example_pending = 0, 0
9
10
  end
10
11
 
@@ -1,22 +1,21 @@
1
1
  module Micronaut
2
+
2
3
  module Formatters
3
4
 
4
5
  class BaseTextFormatter < BaseFormatter
5
- attr_reader :output, :pending_examples, :failed_examples
6
+ attr_reader :pending_examples, :failed_examples
6
7
 
7
8
  def initialize(options, output_to)
8
9
  super
9
- @output = output_to
10
10
  @pending_examples = []
11
11
  @failed_examples = []
12
12
  end
13
-
13
+
14
14
  def example_pending(example, message)
15
15
  super
16
- # @pending_examples << [example.full_description, message, pending_caller]
17
16
  @pending_examples << [example, message]
18
17
  end
19
-
18
+
20
19
  def example_failed(example, exception)
21
20
  super
22
21
  @failed_examples << [example, exception]
@@ -25,11 +24,11 @@ module Micronaut
25
24
  def dump_failures
26
25
  @output.puts
27
26
  @failed_examples.each_with_index do |examples_with_exception, index|
28
- @output.puts "#{index.next})"
29
27
  example, exception = examples_with_exception.first, examples_with_exception.last
30
- @output.puts colorise("#{example}\n#{exception.message}", exception)
28
+ @output.puts "#{index.next}) #{example.class.name}"
29
+ @output.puts colorise(exception.message, exception)
31
30
  @output.puts format_backtrace(exception.backtrace)
32
- @output.puts "\n"
31
+ @output.puts
33
32
  @output.flush
34
33
  end
35
34
  end
@@ -43,9 +42,7 @@ module Micronaut
43
42
  end
44
43
 
45
44
  def dump_summary(duration, example_count, failure_count, pending_count)
46
- @output.puts
47
- @output.puts "Finished in #{duration} seconds"
48
- @output.puts
45
+ @output.puts "\nFinished in #{duration} seconds\n"
49
46
 
50
47
  summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
51
48
  summary << ", #{pending_count} pending" if pending_count > 0
@@ -107,13 +104,28 @@ module Micronaut
107
104
  end
108
105
  end
109
106
 
110
- def green(text); color(text, "\e[32m"); end
111
- def red(text); color(text, "\e[31m"); end
112
- def magenta(text); color(text, "\e[35m"); end
113
- def yellow(text); color(text, "\e[33m"); end
114
- def blue(text); color(text, "\e[34m"); end
107
+ def green(text)
108
+ color(text, "\e[32m")
109
+ end
110
+
111
+ def red(text)
112
+ color(text, "\e[31m")
113
+ end
114
+
115
+ def magenta(text)
116
+ color(text, "\e[35m")
117
+ end
118
+
119
+ def yellow(text)
120
+ color(text, "\e[33m")
121
+ end
122
+
123
+ def blue(text)
124
+ color(text, "\e[34m")
125
+ end
115
126
 
116
127
  end
128
+
117
129
  end
118
-
130
+
119
131
  end
@@ -5,7 +5,7 @@ module Micronaut
5
5
 
6
6
  def example_failed(example, exception)
7
7
  super
8
- @output.print colorise('F',exception)
8
+ @output.print colorise('F', exception)
9
9
  @output.flush
10
10
  end
11
11
 
@@ -30,7 +30,7 @@ module Micronaut
30
30
  /./ # anything - ^example_ already filtered by #examples
31
31
  end
32
32
 
33
- total_examples = Micronaut::ExampleWorld.example_groups.inject(0) { |sum, eg| sum + eg.examples.size }
33
+ total_examples = Micronaut::World.behaviour_groups.inject(0) { |sum, eg| sum + eg.examples.size }
34
34
 
35
35
  old_sync, options.formatter.output.sync = options.formatter.output.sync, true if options.formatter.output.respond_to?(:sync=)
36
36
 
@@ -39,7 +39,7 @@ module Micronaut
39
39
  suite_success = true
40
40
 
41
41
  starts_at = Time.now
42
- Micronaut::ExampleWorld.example_groups.each do |example_group|
42
+ Micronaut::World.behaviour_groups.each do |example_group|
43
43
  suite_success &= example_group.run(options.formatter)
44
44
  end
45
45
  duration = Time.now - starts_at
@@ -0,0 +1,36 @@
1
+ module Micronaut
2
+
3
+ class World
4
+
5
+ def self.reset
6
+ @behaviour_groups = []
7
+ end
8
+
9
+ reset
10
+
11
+ def self.behaviour_groups
12
+ @behaviour_groups
13
+ end
14
+
15
+ def self.find(conditions={})
16
+ return [] if conditions.empty?
17
+
18
+ behaviour_groups.select do |group|
19
+ conditions.all? do |key, value|
20
+ case value
21
+ when Hash
22
+ value.all? { |k, v| group.metadata[key][k] == v }
23
+ when Regexp
24
+ group.metadata[key] =~ value
25
+ when Proc
26
+ value.call(group.metadata[key]) rescue false
27
+ else
28
+ group.metadata[key] == value
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ end
35
+
36
+ end
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.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Humphries
@@ -9,7 +9,7 @@ autorequire: micronaut
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-27 00:00:00 -08:00
12
+ date: 2008-12-02 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -33,6 +33,7 @@ extra_rdoc_files:
33
33
  files:
34
34
  - LICENSE
35
35
  - README
36
+ - RSPEC-LICENSE
36
37
  - Rakefile
37
38
  - lib/autotest
38
39
  - lib/autotest/discover.rb
@@ -40,10 +41,7 @@ files:
40
41
  - lib/micronaut
41
42
  - lib/micronaut/behaviour_group.rb
42
43
  - lib/micronaut/behaviour_group_class_methods.rb
43
- - lib/micronaut/example_world.rb
44
44
  - lib/micronaut/expectations
45
- - lib/micronaut/expectations/differs
46
- - lib/micronaut/expectations/differs/default.rb
47
45
  - lib/micronaut/expectations/errors.rb
48
46
  - lib/micronaut/expectations/extensions
49
47
  - lib/micronaut/expectations/extensions/object.rb
@@ -66,7 +64,6 @@ files:
66
64
  - lib/micronaut/matchers/eql.rb
67
65
  - lib/micronaut/matchers/equal.rb
68
66
  - lib/micronaut/matchers/errors.rb
69
- - lib/micronaut/matchers/exist.rb
70
67
  - lib/micronaut/matchers/generated_descriptions.rb
71
68
  - lib/micronaut/matchers/has.rb
72
69
  - lib/micronaut/matchers/have.rb
@@ -84,15 +81,13 @@ files:
84
81
  - lib/micronaut/mocking/with_mocha.rb
85
82
  - lib/micronaut/runner.rb
86
83
  - lib/micronaut/runner_options.rb
84
+ - lib/micronaut/world.rb
87
85
  - lib/micronaut.rb
88
86
  - examples/example_helper.rb
89
87
  - examples/lib
90
88
  - examples/lib/micronaut
91
89
  - examples/lib/micronaut/behaviour_group_example.rb
92
- - examples/lib/micronaut/example_runner_example.rb
93
90
  - examples/lib/micronaut/expectations
94
- - examples/lib/micronaut/expectations/differs
95
- - examples/lib/micronaut/expectations/differs/default_example.rb
96
91
  - examples/lib/micronaut/expectations/extensions
97
92
  - examples/lib/micronaut/expectations/extensions/object_example.rb
98
93
  - examples/lib/micronaut/expectations/fail_with_example.rb
@@ -107,7 +102,6 @@ files:
107
102
  - examples/lib/micronaut/matchers/description_generation_example.rb
108
103
  - examples/lib/micronaut/matchers/eql_example.rb
109
104
  - examples/lib/micronaut/matchers/equal_example.rb
110
- - examples/lib/micronaut/matchers/exist_example.rb
111
105
  - examples/lib/micronaut/matchers/handler_example.rb
112
106
  - examples/lib/micronaut/matchers/has_example.rb
113
107
  - examples/lib/micronaut/matchers/have_example.rb
@@ -120,6 +114,9 @@ files:
120
114
  - examples/lib/micronaut/matchers/satisfy_example.rb
121
115
  - examples/lib/micronaut/matchers/simple_matcher_example.rb
122
116
  - examples/lib/micronaut/matchers/throw_symbol_example.rb
117
+ - examples/lib/micronaut/runner_example.rb
118
+ - examples/lib/micronaut/runner_options_example.rb
119
+ - examples/lib/micronaut/world_example.rb
123
120
  - examples/lib/micronaut_example.rb
124
121
  - examples/resources
125
122
  - examples/resources/example_classes.rb
@@ -1,125 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../../../../example_helper")
2
- require 'micronaut/expectations/differs/default'
3
-
4
- module Micronaut
5
- module Fixtures
6
- class Animal
7
- def initialize(name,species)
8
- @name,@species = name,species
9
- end
10
-
11
- def inspect
12
- <<-EOA
13
- <Animal
14
- name=#{@name},
15
- species=#{@species}
16
- >
17
- EOA
18
- end
19
- end
20
- end
21
- end
22
-
23
- describe "Diff" do
24
- before do
25
- @differ = Micronaut::Expectations::Differs::Default.new(:unified)
26
- end
27
-
28
- it "should output unified diff of two strings" do
29
- expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
30
- actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
31
- expected_diff= <<'EOD'
32
-
33
-
34
- @@ -1,6 +1,6 @@
35
- foo
36
- -zap
37
- bar
38
- +zap
39
- this
40
- is
41
- soo
42
- @@ -9,6 +9,5 @@
43
- equal
44
- insert
45
- a
46
- -another
47
- line
48
- EOD
49
-
50
- diff = @differ.diff_as_string(expected, actual)
51
- diff.should eql(expected_diff)
52
- end
53
-
54
- it "should output unified diff message of two arrays" do
55
- expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
56
- actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
57
-
58
- expected_diff = <<'EOD'
59
-
60
-
61
- @@ -5,7 +5,7 @@
62
- :metasyntactic,
63
- "variable",
64
- :delta,
65
- - "tango",
66
- + "charlie",
67
- :width,
68
- - "very wide"]
69
- + "quite wide"]
70
- EOD
71
-
72
-
73
- diff = @differ.diff_as_object(expected,actual)
74
- diff.should == expected_diff
75
- end
76
-
77
- it "should output unified diff message of two objects" do
78
- expected = Micronaut::Fixtures::Animal.new "bob", "giraffe"
79
- actual = Micronaut::Fixtures::Animal.new "bob", "tortoise"
80
-
81
- expected_diff = <<'EOD'
82
-
83
- @@ -1,5 +1,5 @@
84
- <Animal
85
- name=bob,
86
- - species=tortoise
87
- + species=giraffe
88
- >
89
- EOD
90
-
91
- diff = @differ.diff_as_object(expected,actual)
92
- diff.should == expected_diff
93
- end
94
-
95
- end
96
-
97
-
98
- describe "Diff in context format" do
99
- before do
100
- @differ = Micronaut::Expectations::Differs::Default.new(:context)
101
- end
102
-
103
- it "should output unified diff message of two objects" do
104
- expected = Micronaut::Fixtures::Animal.new "bob", "giraffe"
105
- actual = Micronaut::Fixtures::Animal.new "bob", "tortoise"
106
-
107
- expected_diff = <<'EOD'
108
-
109
- ***************
110
- *** 1,5 ****
111
- <Animal
112
- name=bob,
113
- ! species=tortoise
114
- >
115
- --- 1,5 ----
116
- <Animal
117
- name=bob,
118
- ! species=giraffe
119
- >
120
- EOD
121
-
122
- diff = @differ.diff_as_object(expected,actual)
123
- diff.should == expected_diff
124
- end
125
- end