spicycode-micronaut 0.2.9 → 0.2.10
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 +1 -17
- data/VERSION.yml +2 -2
- data/examples/lib/micronaut/configuration_example.rb +10 -0
- data/examples/lib/micronaut/world_example.rb +91 -22
- data/lib/micronaut/configuration.rb +3 -1
- data/lib/micronaut/formatters/base_formatter.rb +2 -2
- data/lib/micronaut/world.rb +31 -9
- metadata +2 -3
- data/History.txt +0 -15
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"
|
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."
|
data/VERSION.yml
CHANGED
@@ -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 "
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
data/lib/micronaut/world.rb
CHANGED
@@ -11,12 +11,17 @@ 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
|
24
|
+
p @behaviours_to_run
|
20
25
|
if @behaviours_to_run.size == 0 && Micronaut.configuration.run_all_when_everything_filtered?
|
21
26
|
puts "No examples were matched by #{filter.inspect}, running all"
|
22
27
|
# reset the behaviour list to all behaviours, and add back all examples
|
@@ -38,21 +43,38 @@ module Micronaut
|
|
38
43
|
end
|
39
44
|
|
40
45
|
def filter_behaviours
|
41
|
-
behaviours.inject([]) do |
|
42
|
-
|
43
|
-
|
44
|
-
|
46
|
+
behaviours.inject([]) do |list_of_behaviors, _behavior|
|
47
|
+
examples = _behavior.examples
|
48
|
+
examples = apply_exclusion_filters(examples, exclusion_filter) if exclusion_filter
|
49
|
+
examples = apply_inclusion_filters(examples, filter) if filter
|
50
|
+
examples.uniq!
|
51
|
+
_behavior.examples_to_run.replace(examples)
|
52
|
+
if examples.empty?
|
53
|
+
list_of_behaviors << nil
|
54
|
+
else
|
55
|
+
list_of_behaviors << _behavior
|
56
|
+
end
|
45
57
|
end.compact
|
46
58
|
end
|
47
59
|
|
48
|
-
def find(collection, conditions={})
|
60
|
+
def find(collection, type_of_filter=:positive, conditions={})
|
61
|
+
negative = type_of_filter != :positive
|
62
|
+
|
49
63
|
collection.select do |item|
|
50
|
-
conditions.
|
64
|
+
# negative conditions.any?, positive conditions.all? ?????
|
65
|
+
result = conditions.all? do |filter_on, filter|
|
66
|
+
apply_condition(filter_on, filter, item.metadata)
|
67
|
+
end
|
68
|
+
negative ? !result : result
|
51
69
|
end
|
52
70
|
end
|
53
71
|
|
54
|
-
def
|
55
|
-
find(
|
72
|
+
def apply_inclusion_filters(collection, conditions={})
|
73
|
+
find(collection, :positive, conditions)
|
74
|
+
end
|
75
|
+
|
76
|
+
def apply_exclusion_filters(collection, conditions={})
|
77
|
+
find(collection, :negative, conditions)
|
56
78
|
end
|
57
79
|
|
58
80
|
def apply_condition(filter_on, filter, metadata)
|
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
|
+
version: 0.2.10
|
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-
|
12
|
+
date: 2009-06-15 00:00:00 -07: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
|
data/History.txt
DELETED
@@ -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
|