micronaut 0.2.9 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -23,24 +23,8 @@ end
23
23
  begin
24
24
  require 'rake/contrib/sshpublisher'
25
25
  namespace :rubyforge do
26
-
27
26
  desc "Release gem and RDoc documentation to RubyForge"
28
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
29
-
30
- namespace :release do
31
- desc "Publish RDoc to RubyForge."
32
- task :docs => [:rdoc] do
33
- config = YAML.load(
34
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
35
- )
36
-
37
- host = "#{config['username']}@rubyforge.org"
38
- remote_dir = "/var/www/gforge-projects/the-perfect-gem/"
39
- local_dir = 'rdoc'
40
-
41
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
42
- end
43
- end
27
+ task :release => ["rubyforge:release:gem"]
44
28
  end
45
29
  rescue LoadError
46
30
  puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
@@ -58,7 +42,7 @@ task :untested do
58
42
  end
59
43
  end
60
44
 
61
- puts "Running in Ruby #{RUBY_VERSION}"
45
+ puts "Running in Ruby #{RUBY_PLATFORM} #{RUBY_VERSION}"
62
46
  desc "Run all micronaut examples"
63
47
  Micronaut::RakeTask.new :examples do |t|
64
48
  t.pattern = "examples/**/*_example.rb"
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 9
2
+ :minor: 3
3
+ :patch: 0
3
4
  :major: 0
4
- :minor: 2
@@ -130,4 +130,14 @@ describe Micronaut::Configuration do
130
130
 
131
131
  end
132
132
 
133
+ describe "filters" do
134
+
135
+ it "tells you filter is deprecated"
136
+
137
+ it "responds to exclusion_filter"
138
+
139
+ it "responds to inclusion_filter"
140
+
141
+
142
+ end
133
143
  end
@@ -11,16 +11,16 @@ describe Micronaut::World do
11
11
  end
12
12
 
13
13
  describe "behaviour groups" do
14
-
14
+
15
15
  it "should contain all defined behaviour groups" do
16
16
  behaviour_group = Micronaut::Behaviour.describe(Bar, 'Empty Behaviour Group') { }
17
17
  @world.behaviours.should include(behaviour_group)
18
18
  end
19
-
19
+
20
20
  end
21
-
22
- describe "find" do
23
-
21
+
22
+ describe "applying inclusion filters" do
23
+
24
24
  before(:all) do
25
25
  options_1 = { :foo => 1, :color => 'blue', :feature => 'reporting' }
26
26
  options_2 = { :pending => true, :feature => 'reporting' }
@@ -44,55 +44,124 @@ describe Micronaut::World do
44
44
  Micronaut.world.behaviours.delete(@bg3)
45
45
  Micronaut.world.behaviours.delete(@bg4)
46
46
  end
47
-
47
+
48
48
  it "should find awesome examples" do
49
- @world.find(@bg4.examples, :awesome => true).should == [@bg4.examples[1], @bg4.examples[2]]
49
+ @world.apply_inclusion_filters(@bg4.examples, :awesome => true).should == [@bg4.examples[1], @bg4.examples[2]]
50
50
  end
51
51
 
52
52
  it "should find no groups when given no search parameters" do
53
- @world.find([]).should == []
53
+ @world.apply_inclusion_filters([]).should == []
54
54
  end
55
55
 
56
56
  it "should find three groups when searching for :behaviour_describes => Bar" do
57
- @world.find(@behaviours, :behaviour => { :describes => Bar }).should == [@bg1, @bg2, @bg3]
57
+ @world.apply_inclusion_filters(@behaviours, :behaviour => { :describes => Bar }).should == [@bg1, @bg2, @bg3]
58
58
  end
59
59
 
60
60
  it "should find one group when searching for :description => 'find group-1'" do
61
- @world.find(@behaviours, :behaviour => { :description => 'find group-1' }).should == [@bg1]
61
+ @world.apply_inclusion_filters(@behaviours, :behaviour => { :description => 'find group-1' }).should == [@bg1]
62
62
  end
63
63
 
64
64
  it "should find two groups when searching for :description => lambda { |v| v.include?('-1') || v.include?('-3') }" do
65
- @world.find(@behaviours, :behaviour => { :description => lambda { |v| v.include?('-1') || v.include?('-3') } }).should == [@bg1, @bg3]
65
+ @world.apply_inclusion_filters(@behaviours, :behaviour => { :description => lambda { |v| v.include?('-1') || v.include?('-3') } }).should == [@bg1, @bg3]
66
66
  end
67
67
 
68
68
  it "should find three groups when searching for :description => /find group/" do
69
- @world.find(@behaviours, :behaviour => { :description => /find group/ }).should == [@bg1, @bg2, @bg3]
69
+ @world.apply_inclusion_filters(@behaviours, :behaviour => { :description => /find group/ }).should == [@bg1, @bg2, @bg3]
70
70
  end
71
71
 
72
72
  it "should find one group when searching for :foo => 1" do
73
- @world.find(@behaviours, :foo => 1 ).should == [@bg1]
73
+ @world.apply_inclusion_filters(@behaviours, :foo => 1 ).should == [@bg1]
74
74
  end
75
75
 
76
76
  it "should find one group when searching for :pending => true" do
77
- @world.find(@behaviours, :pending => true ).should == [@bg2]
77
+ @world.apply_inclusion_filters(@behaviours, :pending => true ).should == [@bg2]
78
78
  end
79
-
79
+
80
80
  it "should find one group when searching for :array => [1,2,3,4]" do
81
- @world.find(@behaviours, :array => [1,2,3,4]).should == [@bg3]
81
+ @world.apply_inclusion_filters(@behaviours, :array => [1,2,3,4]).should == [@bg3]
82
82
  end
83
-
83
+
84
84
  it "should find no group when searching for :array => [4,3,2,1]" do
85
- @world.find(@behaviours, :array => [4,3,2,1]).should be_empty
85
+ @world.apply_inclusion_filters(@behaviours, :array => [4,3,2,1]).should be_empty
86
86
  end
87
-
87
+
88
88
  it "should find two groups when searching for :color => 'blue'" do
89
- @world.find(@behaviours, :color => 'blue').should == [@bg1, @bg3]
89
+ @world.apply_inclusion_filters(@behaviours, :color => 'blue').should == [@bg1, @bg3]
90
90
  end
91
-
91
+
92
92
  it "should find two groups when searching for :feature => 'reporting' }" do
93
- @world.find(@behaviours, :feature => 'reporting').should == [@bg1, @bg2]
93
+ @world.apply_inclusion_filters(@behaviours, :feature => 'reporting').should == [@bg1, @bg2]
94
+ end
95
+
96
+ end
97
+
98
+ describe "applying exclusion filters" do
99
+
100
+ it "should find nothing if all describes match the exclusion filter" do
101
+ options = { :network_access => true }
102
+
103
+ isolate_behaviour do
104
+ group1 = Micronaut::Behaviour.describe(Bar, "find group-1", options) do
105
+ it("foo") {}
106
+ it("bar") {}
107
+ end
108
+
109
+ @world.apply_exclusion_filters(group1.examples, :network_access => true).should == []
110
+ end
111
+
112
+ isolate_behaviour do
113
+ group2 = Micronaut::Behaviour.describe(Bar, "find group-1") do
114
+ it("foo", :network_access => true) {}
115
+ it("bar") {}
116
+ end
117
+
118
+ @world.apply_exclusion_filters(group2.examples, :network_access => true).should == [group2.examples.last]
119
+ end
120
+
121
+ end
122
+
123
+ it "should find nothing if a regexp matches the exclusion filter" do
124
+ isolate_behaviour do
125
+ group = Micronaut::Behaviour.describe(Bar, "find group-1", :name => "exclude me with a regex", :another => "foo") do
126
+ it("foo") {}
127
+ it("bar") {}
128
+ end
129
+ @world.apply_exclusion_filters(group.examples, :name => /exclude/).should == []
130
+ @world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo").should == []
131
+ @world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo", :behaviour => {
132
+ :describes => lambda { |b| b == Bar } } ).should == []
133
+
134
+ @world.apply_exclusion_filters(group.examples, :name => /exclude not/).should == group.examples
135
+ @world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo").should == group.examples
136
+ @world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo1").should == group.examples
137
+ end
138
+ end
139
+
140
+ end
141
+
142
+ describe "filtering behaviours" do
143
+
144
+ before(:all) do
145
+ @group1 = Micronaut::Behaviour.describe(Bar, "find these examples") do
146
+ it('I have no options', :color => :red, :awesome => true) {}
147
+ it("I also have no options", :color => :red, :awesome => true) {}
148
+ it("not so awesome", :color => :red, :awesome => false) {}
149
+ end
150
+ end
151
+
152
+ after(:all) do
153
+ Micronaut.world.behaviours.delete(@group1)
94
154
  end
95
155
 
156
+ it "should run matches" do
157
+ Micronaut.world.stubs(:exclusion_filter).returns({ :awesome => false })
158
+ Micronaut.world.stubs(:filter).returns({ :color => :red })
159
+ Micronaut.world.stubs(:behaviours).returns([@group1])
160
+ filtered_behaviours = @world.filter_behaviours
161
+ filtered_behaviours.should == [@group1]
162
+ @group1.examples_to_run.should == @group1.examples[0..1]
163
+ end
164
+
96
165
  end
97
166
 
98
167
  end
@@ -10,6 +10,8 @@ module Micronaut
10
10
  # Allows you to control what examples are ran by filtering
11
11
  attr_reader :filter
12
12
 
13
+ attr_reader :exclusion_filter
14
+
13
15
  # Modules that will be included or extended based on given filters
14
16
  attr_reader :include_or_extend_modules
15
17
 
@@ -34,7 +36,7 @@ module Micronaut
34
36
  @before_and_afters = { :before => { :each => [], :all => [] }, :after => { :each => [], :all => [] } }
35
37
  @include_or_extend_modules = []
36
38
  @formatter_to_use = Micronaut::Formatters::ProgressFormatter
37
- @filter = nil
39
+ @filter, @exclusion_filter = nil, nil
38
40
  mock_with nil unless @mock_framework_established
39
41
  end
40
42
 
@@ -37,11 +37,11 @@ module Micronaut
37
37
  end
38
38
 
39
39
  def pending_examples
40
- @pending_examples ||= ::Micronaut.world.find(examples, :execution_result => { :status => 'pending' })
40
+ @pending_examples ||= ::Micronaut.world.find(examples, :positive, :execution_result => { :status => 'pending' })
41
41
  end
42
42
 
43
43
  def failed_examples
44
- @failed_examples ||= ::Micronaut.world.find(examples, :execution_result => { :status => 'failed' })
44
+ @failed_examples ||= ::Micronaut.world.find(examples, :positive, :execution_result => { :status => 'failed' })
45
45
  end
46
46
 
47
47
  # This method is invoked before any examples are run, right after
@@ -4,7 +4,12 @@ require 'mocha/object'
4
4
  module Micronaut
5
5
  module Mocking
6
6
  module WithMocha
7
- include Mocha::Standalone
7
+ # Mocha::Standalone was deprecated as of Mocha 0.9.7.
8
+ begin
9
+ include Mocha::API
10
+ rescue NameError
11
+ include Mocha::Standalone
12
+ end
8
13
 
9
14
  alias :_setup_mocks :mocha_setup
10
15
  alias :_verify_mocks :mocha_verify
@@ -11,11 +11,15 @@ module Micronaut
11
11
  def filter
12
12
  Micronaut.configuration.filter
13
13
  end
14
+
15
+ def exclusion_filter
16
+ Micronaut.configuration.exclusion_filter
17
+ end
14
18
 
15
19
  def behaviours_to_run
16
20
  return @behaviours_to_run if @behaviours_to_run
17
21
 
18
- if filter
22
+ if filter || exclusion_filter
19
23
  @behaviours_to_run = filter_behaviours
20
24
  if @behaviours_to_run.size == 0 && Micronaut.configuration.run_all_when_everything_filtered?
21
25
  puts "No examples were matched by #{filter.inspect}, running all"
@@ -38,21 +42,38 @@ module Micronaut
38
42
  end
39
43
 
40
44
  def filter_behaviours
41
- behaviours.inject([]) do |list, b|
42
- b.examples_to_run.replace(find(b.examples, filter).uniq)
43
- # Do not add behaviours with 0 examples to run
44
- list << (b.examples_to_run.size == 0 ? nil : b)
45
+ behaviours.inject([]) do |list_of_behaviors, _behavior|
46
+ examples = _behavior.examples
47
+ examples = apply_exclusion_filters(examples, exclusion_filter) if exclusion_filter
48
+ examples = apply_inclusion_filters(examples, filter) if filter
49
+ examples.uniq!
50
+ _behavior.examples_to_run.replace(examples)
51
+ if examples.empty?
52
+ list_of_behaviors << nil
53
+ else
54
+ list_of_behaviors << _behavior
55
+ end
45
56
  end.compact
46
57
  end
47
58
 
48
- def find(collection, conditions={})
59
+ def find(collection, type_of_filter=:positive, conditions={})
60
+ negative = type_of_filter != :positive
61
+
49
62
  collection.select do |item|
50
- conditions.all? { |filter_on, filter| apply_condition(filter_on, filter, item.metadata) }
63
+ # negative conditions.any?, positive conditions.all? ?????
64
+ result = conditions.all? do |filter_on, filter|
65
+ apply_condition(filter_on, filter, item.metadata)
66
+ end
67
+ negative ? !result : result
51
68
  end
52
69
  end
53
70
 
54
- def find_behaviours(conditions={})
55
- find(behaviours, conditions)
71
+ def apply_inclusion_filters(collection, conditions={})
72
+ find(collection, :positive, conditions)
73
+ end
74
+
75
+ def apply_exclusion_filters(collection, conditions={})
76
+ find(collection, :negative, conditions)
56
77
  end
57
78
 
58
79
  def apply_condition(filter_on, filter, metadata)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: micronaut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
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-05-23 00:00:00 -04:00
12
+ date: 2009-08-10 00:00:00 -04:00
13
13
  default_executable: micronaut
14
14
  dependencies: []
15
15
 
@@ -23,7 +23,6 @@ extra_rdoc_files:
23
23
  - LICENSE
24
24
  - README.markdown
25
25
  files:
26
- - History.txt
27
26
  - LICENSE
28
27
  - README.markdown
29
28
  - RSPEC-LICENSE
@@ -125,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
124
  requirements: []
126
125
 
127
126
  rubyforge_project: spicycode-depot
128
- rubygems_version: 1.3.3
127
+ rubygems_version: 1.3.5
129
128
  signing_key:
130
129
  specification_version: 3
131
130
  summary: An excellent replacement for the wheel...
@@ -1,15 +0,0 @@
1
- 0.0.8
2
- =======================
3
- - It turns out I'm horrible at updating history files
4
- - Added MockWith::AbsolutelyNothing as the default
5
- - Added the ability to setup before, after, include, and extend blocks using a extensible API
6
-
7
- 0.0.6
8
- =======================
9
- - MockWith::Mocha autoloads now
10
- - Beginnings of the configure block in example helper
11
- - Ability to search behaviour groups is in
12
-
13
- 0.0.5
14
- =======================
15
- - Describes are working at any level, befores/afters correctly cascade