mspec 1.0.0
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/LICENSE +22 -0
- data/README +101 -0
- data/Rakefile +44 -0
- data/bin/mkspec +7 -0
- data/bin/mspec +7 -0
- data/bin/mspec-ci +8 -0
- data/bin/mspec-run +8 -0
- data/bin/mspec-tag +8 -0
- data/lib/mspec.rb +6 -0
- data/lib/mspec/commands/mkspec.rb +147 -0
- data/lib/mspec/commands/mspec-ci.rb +71 -0
- data/lib/mspec/commands/mspec-run.rb +80 -0
- data/lib/mspec/commands/mspec-tag.rb +87 -0
- data/lib/mspec/commands/mspec.rb +143 -0
- data/lib/mspec/expectations.rb +2 -0
- data/lib/mspec/expectations/expectations.rb +12 -0
- data/lib/mspec/expectations/should.rb +23 -0
- data/lib/mspec/guards.rb +13 -0
- data/lib/mspec/guards/bug.rb +27 -0
- data/lib/mspec/guards/compliance.rb +18 -0
- data/lib/mspec/guards/conflict.rb +16 -0
- data/lib/mspec/guards/endian.rb +40 -0
- data/lib/mspec/guards/extensions.rb +12 -0
- data/lib/mspec/guards/guard.rb +120 -0
- data/lib/mspec/guards/noncompliance.rb +12 -0
- data/lib/mspec/guards/platform.rb +38 -0
- data/lib/mspec/guards/quarantine.rb +15 -0
- data/lib/mspec/guards/runner.rb +30 -0
- data/lib/mspec/guards/superuser.rb +15 -0
- data/lib/mspec/guards/support.rb +12 -0
- data/lib/mspec/guards/version.rb +40 -0
- data/lib/mspec/helpers.rb +6 -0
- data/lib/mspec/helpers/bignum.rb +5 -0
- data/lib/mspec/helpers/const_lookup.rb +5 -0
- data/lib/mspec/helpers/flunk.rb +5 -0
- data/lib/mspec/helpers/io.rb +13 -0
- data/lib/mspec/helpers/scratch.rb +17 -0
- data/lib/mspec/helpers/tmp.rb +32 -0
- data/lib/mspec/matchers.rb +16 -0
- data/lib/mspec/matchers/base.rb +95 -0
- data/lib/mspec/matchers/be_ancestor_of.rb +24 -0
- data/lib/mspec/matchers/be_close.rb +27 -0
- data/lib/mspec/matchers/be_empty.rb +20 -0
- data/lib/mspec/matchers/be_false.rb +20 -0
- data/lib/mspec/matchers/be_kind_of.rb +24 -0
- data/lib/mspec/matchers/be_nil.rb +20 -0
- data/lib/mspec/matchers/be_true.rb +20 -0
- data/lib/mspec/matchers/complain.rb +56 -0
- data/lib/mspec/matchers/eql.rb +26 -0
- data/lib/mspec/matchers/equal.rb +26 -0
- data/lib/mspec/matchers/equal_utf16.rb +34 -0
- data/lib/mspec/matchers/include.rb +32 -0
- data/lib/mspec/matchers/output.rb +67 -0
- data/lib/mspec/matchers/output_to_fd.rb +71 -0
- data/lib/mspec/matchers/raise_error.rb +48 -0
- data/lib/mspec/mocks.rb +3 -0
- data/lib/mspec/mocks/mock.rb +123 -0
- data/lib/mspec/mocks/object.rb +28 -0
- data/lib/mspec/mocks/proxy.rb +112 -0
- data/lib/mspec/runner.rb +13 -0
- data/lib/mspec/runner/actions.rb +6 -0
- data/lib/mspec/runner/actions/debug.rb +17 -0
- data/lib/mspec/runner/actions/filter.rb +40 -0
- data/lib/mspec/runner/actions/gdb.rb +17 -0
- data/lib/mspec/runner/actions/tag.rb +97 -0
- data/lib/mspec/runner/actions/tally.rb +80 -0
- data/lib/mspec/runner/actions/timer.rb +22 -0
- data/lib/mspec/runner/filters.rb +4 -0
- data/lib/mspec/runner/filters/match.rb +22 -0
- data/lib/mspec/runner/filters/profile.rb +54 -0
- data/lib/mspec/runner/filters/regexp.rb +7 -0
- data/lib/mspec/runner/filters/tag.rb +29 -0
- data/lib/mspec/runner/formatters.rb +7 -0
- data/lib/mspec/runner/formatters/dotted.rb +81 -0
- data/lib/mspec/runner/formatters/html.rb +87 -0
- data/lib/mspec/runner/formatters/specdoc.rb +27 -0
- data/lib/mspec/runner/formatters/spinner.rb +89 -0
- data/lib/mspec/runner/formatters/summary.rb +8 -0
- data/lib/mspec/runner/formatters/unit.rb +25 -0
- data/lib/mspec/runner/formatters/yaml.rb +43 -0
- data/lib/mspec/runner/mspec.rb +232 -0
- data/lib/mspec/runner/object.rb +20 -0
- data/lib/mspec/runner/shared.rb +12 -0
- data/lib/mspec/runner/state.rb +116 -0
- data/lib/mspec/runner/tag.rb +20 -0
- data/lib/mspec/utils/name_map.rb +130 -0
- data/lib/mspec/utils/options.rb +344 -0
- data/lib/mspec/utils/script.rb +77 -0
- data/lib/mspec/version.rb +3 -0
- data/spec/commands/mkspec_spec.rb +321 -0
- data/spec/commands/mspec_ci_spec.rb +139 -0
- data/spec/commands/mspec_run_spec.rb +146 -0
- data/spec/commands/mspec_spec.rb +359 -0
- data/spec/commands/mspec_tag_spec.rb +131 -0
- data/spec/expectations/expectations_spec.rb +16 -0
- data/spec/expectations/should_spec.rb +99 -0
- data/spec/guards/bug_spec.rb +137 -0
- data/spec/guards/compliance_spec.rb +70 -0
- data/spec/guards/conflict_spec.rb +20 -0
- data/spec/guards/endian_spec.rb +42 -0
- data/spec/guards/extensions_spec.rb +36 -0
- data/spec/guards/guard_spec.rb +355 -0
- data/spec/guards/noncompliance_spec.rb +36 -0
- data/spec/guards/platform_spec.rb +84 -0
- data/spec/guards/quarantine_spec.rb +19 -0
- data/spec/guards/runner_spec.rb +75 -0
- data/spec/guards/superuser_spec.rb +22 -0
- data/spec/guards/support_spec.rb +22 -0
- data/spec/guards/version_spec.rb +133 -0
- data/spec/helpers/bignum_spec.rb +11 -0
- data/spec/helpers/const_lookup_spec.rb +19 -0
- data/spec/helpers/flunk_spec.rb +15 -0
- data/spec/helpers/io_spec.rb +34 -0
- data/spec/helpers/scratch_spec.rb +22 -0
- data/spec/helpers/tmp_spec.rb +72 -0
- data/spec/matchers/base_spec.rb +180 -0
- data/spec/matchers/be_ancestor_of_spec.rb +28 -0
- data/spec/matchers/be_close_spec.rb +46 -0
- data/spec/matchers/be_empty_spec.rb +26 -0
- data/spec/matchers/be_false_spec.rb +28 -0
- data/spec/matchers/be_kind_of_spec.rb +29 -0
- data/spec/matchers/be_nil_spec.rb +27 -0
- data/spec/matchers/be_true_spec.rb +28 -0
- data/spec/matchers/complain_spec.rb +52 -0
- data/spec/matchers/eql_spec.rb +33 -0
- data/spec/matchers/equal_spec.rb +33 -0
- data/spec/matchers/equal_utf16_spec.rb +47 -0
- data/spec/matchers/include_spec.rb +37 -0
- data/spec/matchers/output_spec.rb +74 -0
- data/spec/matchers/output_to_fd_spec.rb +33 -0
- data/spec/matchers/raise_error_spec.rb +56 -0
- data/spec/mocks/mock_spec.rb +272 -0
- data/spec/mocks/proxy_spec.rb +259 -0
- data/spec/runner/actions/debug_spec.rb +61 -0
- data/spec/runner/actions/filter_spec.rb +84 -0
- data/spec/runner/actions/gdb_spec.rb +61 -0
- data/spec/runner/actions/tag_spec.rb +253 -0
- data/spec/runner/actions/tally_spec.rb +107 -0
- data/spec/runner/actions/timer_spec.rb +42 -0
- data/spec/runner/filters/a.yaml +4 -0
- data/spec/runner/filters/b.yaml +11 -0
- data/spec/runner/filters/match_spec.rb +44 -0
- data/spec/runner/filters/profile_spec.rb +117 -0
- data/spec/runner/filters/regexp_spec.rb +13 -0
- data/spec/runner/filters/tag_spec.rb +77 -0
- data/spec/runner/formatters/dotted_spec.rb +184 -0
- data/spec/runner/formatters/html_spec.rb +191 -0
- data/spec/runner/formatters/specdoc_spec.rb +57 -0
- data/spec/runner/formatters/spinner_spec.rb +78 -0
- data/spec/runner/formatters/summary_spec.rb +29 -0
- data/spec/runner/formatters/unit_spec.rb +71 -0
- data/spec/runner/formatters/yaml_spec.rb +123 -0
- data/spec/runner/mspec_spec.rb +393 -0
- data/spec/runner/shared_spec.rb +41 -0
- data/spec/runner/state_spec.rb +535 -0
- data/spec/runner/tag_spec.rb +93 -0
- data/spec/runner/tags.txt +3 -0
- data/spec/spec_helper.rb +46 -0
- data/spec/utils/name_map_spec.rb +178 -0
- data/spec/utils/options_spec.rb +862 -0
- data/spec/utils/script_spec.rb +240 -0
- metadata +217 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'mspec/runner/actions/debug'
|
|
3
|
+
require 'mspec/runner/mspec'
|
|
4
|
+
require 'mspec/runner/state'
|
|
5
|
+
|
|
6
|
+
describe DebugAction do
|
|
7
|
+
before :each do
|
|
8
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "creates an MatchFilter with its tag and desc arguments" do
|
|
12
|
+
filter = mock('action filter', :null_object => true)
|
|
13
|
+
MatchFilter.should_receive(:new).with(nil, "some", "thing").and_return(filter)
|
|
14
|
+
DebugAction.new ["tag", "key"], ["some", "thing"]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe DebugAction, "#before" do
|
|
19
|
+
before :each do
|
|
20
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
21
|
+
@state = SpecState.new "Catch#me", "if you can"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "does not invoke the debugger if the description does not match" do
|
|
25
|
+
Kernel.should_not_receive(:debugger)
|
|
26
|
+
action = DebugAction.new nil, "match"
|
|
27
|
+
action.before @state
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "invokes the debugger if the description matches" do
|
|
31
|
+
Kernel.should_receive(:debugger)
|
|
32
|
+
action = DebugAction.new nil, "can"
|
|
33
|
+
action.before @state
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe DebugAction, "#register" do
|
|
38
|
+
before :each do
|
|
39
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
40
|
+
MSpec.stub!(:register)
|
|
41
|
+
@action = DebugAction.new nil, nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "registers itself with MSpec for the :before action" do
|
|
45
|
+
MSpec.should_receive(:register).with(:before, @action)
|
|
46
|
+
@action.register
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe DebugAction, "#unregister" do
|
|
51
|
+
before :each do
|
|
52
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
53
|
+
MSpec.stub!(:unregister)
|
|
54
|
+
@action = DebugAction.new nil, nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "unregisters itself with MSpec for the :before action" do
|
|
58
|
+
MSpec.should_receive(:unregister).with(:before, @action)
|
|
59
|
+
@action.unregister
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'mspec/runner/actions/filter'
|
|
3
|
+
require 'mspec/runner/mspec'
|
|
4
|
+
require 'mspec/runner/tag'
|
|
5
|
+
|
|
6
|
+
describe ActionFilter do
|
|
7
|
+
it "creates a filter when not passed a description" do
|
|
8
|
+
MatchFilter.should_not_receive(:new)
|
|
9
|
+
ActionFilter.new(nil, nil)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "creates a filter from a single description" do
|
|
13
|
+
MatchFilter.should_receive(:new).with(nil, "match me")
|
|
14
|
+
ActionFilter.new(nil, "match me")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "creates a filter from an array of descriptions" do
|
|
18
|
+
MatchFilter.should_receive(:new).with(nil, "match me", "again")
|
|
19
|
+
ActionFilter.new(nil, ["match me", "again"])
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe ActionFilter, "#===" do
|
|
24
|
+
before :each do
|
|
25
|
+
MSpec.stub!(:read_tags).and_return(["match"])
|
|
26
|
+
@action = ActionFilter.new(nil, ["catch", "if you"])
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "returns false if there are no filters" do
|
|
30
|
+
action = ActionFilter.new
|
|
31
|
+
action.===("anything").should == false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "returns true if the argument matches any of the descriptions" do
|
|
35
|
+
@action.===("catch").should == true
|
|
36
|
+
@action.===("if you can").should == true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns false if the argument does not match any of the descriptions" do
|
|
40
|
+
@action.===("patch me").should == false
|
|
41
|
+
@action.===("if I can").should == false
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe ActionFilter, "#load" do
|
|
46
|
+
before :each do
|
|
47
|
+
@tag = SpecTag.new "tag(comment):description"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "creates a filter from a single tag" do
|
|
51
|
+
MSpec.should_receive(:read_tags).with("tag").and_return([@tag])
|
|
52
|
+
MatchFilter.should_receive(:new).with(nil, "description")
|
|
53
|
+
ActionFilter.new("tag", nil).load
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "creates a filter from an array of tags" do
|
|
57
|
+
MSpec.should_receive(:read_tags).with("tag", "key").and_return([@tag])
|
|
58
|
+
MatchFilter.should_receive(:new).with(nil, "description")
|
|
59
|
+
ActionFilter.new(["tag", "key"], nil).load
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "creates a filter from both tags and descriptions" do
|
|
63
|
+
MSpec.should_receive(:read_tags).and_return([@tag])
|
|
64
|
+
filter = ActionFilter.new("tag", ["match me", "again"])
|
|
65
|
+
MatchFilter.should_receive(:new).with(nil, "description")
|
|
66
|
+
filter.load
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe ActionFilter, "#register" do
|
|
71
|
+
it "registers itself with MSpec for the :load, :unload actions" do
|
|
72
|
+
filter = ActionFilter.new
|
|
73
|
+
MSpec.should_receive(:register).with(:load, filter)
|
|
74
|
+
filter.register
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe ActionFilter, "#unregister" do
|
|
79
|
+
it "unregisters itself with MSpec for the :load, :unload actions" do
|
|
80
|
+
filter = ActionFilter.new
|
|
81
|
+
MSpec.should_receive(:unregister).with(:load, filter)
|
|
82
|
+
filter.unregister
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'mspec/runner/actions/gdb'
|
|
3
|
+
require 'mspec/runner/mspec'
|
|
4
|
+
require 'mspec/runner/state'
|
|
5
|
+
|
|
6
|
+
describe GdbAction do
|
|
7
|
+
before :each do
|
|
8
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "creates an MatchFilter with its tag and desc arguments" do
|
|
12
|
+
filter = mock('action filter', :null_object => true)
|
|
13
|
+
MatchFilter.should_receive(:new).with(nil, "some", "thing").and_return(filter)
|
|
14
|
+
GdbAction.new ["tag", "key"], ["some", "thing"]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe GdbAction, "#before" do
|
|
19
|
+
before :each do
|
|
20
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
21
|
+
@state = SpecState.new "Catch#me", "if you can"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "does not invoke the debugger if the description does not match" do
|
|
25
|
+
Kernel.should_not_receive(:yield_gdb)
|
|
26
|
+
action = GdbAction.new nil, "match"
|
|
27
|
+
action.before @state
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "invokes the debugger if the description matches" do
|
|
31
|
+
Kernel.should_receive(:yield_gdb).with(true)
|
|
32
|
+
action = GdbAction.new nil, "can"
|
|
33
|
+
action.before @state
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe GdbAction, "#register" do
|
|
38
|
+
before :each do
|
|
39
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
40
|
+
MSpec.stub!(:register)
|
|
41
|
+
@action = GdbAction.new nil, nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "registers itself with MSpec for the :before action" do
|
|
45
|
+
MSpec.should_receive(:register).with(:before, @action)
|
|
46
|
+
@action.register
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe GdbAction, "#unregister" do
|
|
51
|
+
before :each do
|
|
52
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
53
|
+
MSpec.stub!(:unregister)
|
|
54
|
+
@action = GdbAction.new nil, nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "unregisters itself with MSpec for the :before action" do
|
|
58
|
+
MSpec.should_receive(:unregister).with(:before, @action)
|
|
59
|
+
@action.unregister
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require 'mspec/runner/actions/tag'
|
|
3
|
+
require 'mspec/runner/mspec'
|
|
4
|
+
require 'mspec/runner/state'
|
|
5
|
+
require 'mspec/runner/tag'
|
|
6
|
+
|
|
7
|
+
describe TagAction do
|
|
8
|
+
before :each do
|
|
9
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "creates an MatchFilter with its tag and desc arguments" do
|
|
13
|
+
filter = mock('action filter', :null_object => true)
|
|
14
|
+
MatchFilter.should_receive(:new).with(nil, "some", "thing").and_return(filter)
|
|
15
|
+
TagAction.new :add, :all, nil, nil, ["tag", "key"], ["some", "thing"]
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe TagAction, "#===" do
|
|
20
|
+
before :each do
|
|
21
|
+
MSpec.stub!(:read_tags).and_return(["match"])
|
|
22
|
+
@action = TagAction.new :add, :fail, nil, nil, nil, ["catch", "if you"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "returns true if there are no filters" do
|
|
26
|
+
action = TagAction.new :add, :all, nil, nil
|
|
27
|
+
action.===("anything").should == true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "returns true if the argument matches any of the descriptions" do
|
|
31
|
+
@action.===("catch").should == true
|
|
32
|
+
@action.===("if you can").should == true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns false if the argument does not match any of the descriptions" do
|
|
36
|
+
@action.===("patch me").should == false
|
|
37
|
+
@action.===("if I can").should == false
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe TagAction, "#outcome?" do
|
|
42
|
+
before :each do
|
|
43
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
44
|
+
@state = SpecState.new "describe", "it"
|
|
45
|
+
@exception = [nil, Exception.new("failed")]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "returns true if outcome is :fail and the spec fails" do
|
|
49
|
+
action = TagAction.new :add, :fail, nil, nil, nil, nil
|
|
50
|
+
@state.exceptions << @exception
|
|
51
|
+
action.outcome?(@state).should == true
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "returns false if the outcome is :fail and the spec passes" do
|
|
55
|
+
action = TagAction.new :add, :fail, nil, nil, nil, nil
|
|
56
|
+
action.outcome?(@state).should == false
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "returns true if the outcome is :pass and the spec passes" do
|
|
60
|
+
action = TagAction.new :del, :pass, nil, nil, nil, nil
|
|
61
|
+
action.outcome?(@state).should == true
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "returns false if the outcome is :pass and the spec fails" do
|
|
65
|
+
action = TagAction.new :del, :pass, nil, nil, nil, nil
|
|
66
|
+
@state.exceptions << @exception
|
|
67
|
+
action.outcome?(@state).should == false
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "returns true if the outcome is :all" do
|
|
71
|
+
action = TagAction.new :add, :all, nil, nil, nil, nil
|
|
72
|
+
@state.exceptions << @exception
|
|
73
|
+
action.outcome?(@state).should == true
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe TagAction, "#after when action is :add" do
|
|
78
|
+
before :each do
|
|
79
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
80
|
+
@state = SpecState.new "Catch#me", "if you can"
|
|
81
|
+
@tag = SpecTag.new "tag(comment):Catch#me if you can"
|
|
82
|
+
SpecTag.stub!(:new).and_return(@tag)
|
|
83
|
+
@exception = [nil, Exception.new("failed")]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "does not write a tag if the description does not match" do
|
|
87
|
+
MSpec.should_not_receive(:write_tag)
|
|
88
|
+
action = TagAction.new :add, :all, "tag", "comment", nil, "match"
|
|
89
|
+
action.after @state
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "does not write a tag if outcome is :fail and the spec passed" do
|
|
93
|
+
MSpec.should_not_receive(:write_tag)
|
|
94
|
+
action = TagAction.new :add, :fail, "tag", "comment", nil, "can"
|
|
95
|
+
action.after @state
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "writes a tag if the outcome is :fail and the spec failed" do
|
|
99
|
+
MSpec.should_receive(:write_tag).with(@tag)
|
|
100
|
+
action = TagAction.new :add, :fail, "tag", "comment", nil, "can"
|
|
101
|
+
@state.exceptions << @exception
|
|
102
|
+
action.after @state
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "does not write a tag if outcome is :pass and the spec failed" do
|
|
106
|
+
MSpec.should_not_receive(:write_tag)
|
|
107
|
+
action = TagAction.new :add, :pass, "tag", "comment", nil, "can"
|
|
108
|
+
@state.exceptions << @exception
|
|
109
|
+
action.after @state
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "writes a tag if the outcome is :pass and the spec passed" do
|
|
113
|
+
MSpec.should_receive(:write_tag).with(@tag)
|
|
114
|
+
action = TagAction.new :add, :pass, "tag", "comment", nil, "can"
|
|
115
|
+
action.after @state
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "writes a tag if the outcome is :all" do
|
|
119
|
+
MSpec.should_receive(:write_tag).with(@tag)
|
|
120
|
+
action = TagAction.new :add, :all, "tag", "comment", nil, "can"
|
|
121
|
+
action.after @state
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
describe TagAction, "#after when action is :del" do
|
|
126
|
+
before :each do
|
|
127
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
128
|
+
@state = SpecState.new "Catch#me", "if you can"
|
|
129
|
+
@tag = SpecTag.new "tag(comment):Catch#me if you can"
|
|
130
|
+
SpecTag.stub!(:new).and_return(@tag)
|
|
131
|
+
@exception = [nil, Exception.new("failed")]
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "does not delete a tag if the description does not match" do
|
|
135
|
+
MSpec.should_not_receive(:delete_tag)
|
|
136
|
+
action = TagAction.new :del, :all, "tag", "comment", nil, "match"
|
|
137
|
+
action.after @state
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "does not delete a tag if outcome is :fail and the spec passed" do
|
|
141
|
+
MSpec.should_not_receive(:delete_tag)
|
|
142
|
+
action = TagAction.new :del, :fail, "tag", "comment", nil, "can"
|
|
143
|
+
action.after @state
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "deletes a tag if the outcome is :fail and the spec failed" do
|
|
147
|
+
MSpec.should_receive(:delete_tag).with(@tag)
|
|
148
|
+
action = TagAction.new :del, :fail, "tag", "comment", nil, "can"
|
|
149
|
+
@state.exceptions << @exception
|
|
150
|
+
action.after @state
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "does not delete a tag if outcome is :pass and the spec failed" do
|
|
154
|
+
MSpec.should_not_receive(:delete_tag)
|
|
155
|
+
action = TagAction.new :del, :pass, "tag", "comment", nil, "can"
|
|
156
|
+
@state.exceptions << @exception
|
|
157
|
+
action.after @state
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it "deletes a tag if the outcome is :pass and the spec passed" do
|
|
161
|
+
MSpec.should_receive(:delete_tag).with(@tag)
|
|
162
|
+
action = TagAction.new :del, :pass, "tag", "comment", nil, "can"
|
|
163
|
+
action.after @state
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it "deletes a tag if the outcome is :all" do
|
|
167
|
+
MSpec.should_receive(:delete_tag).with(@tag)
|
|
168
|
+
action = TagAction.new :del, :all, "tag", "comment", nil, "can"
|
|
169
|
+
action.after @state
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
describe TagAction, "#finish" do
|
|
174
|
+
before :each do
|
|
175
|
+
$stdout = @out = IOStub.new
|
|
176
|
+
@state = SpecState.new "Catch#me", "if you can"
|
|
177
|
+
MSpec.stub!(:write_tag).and_return(true)
|
|
178
|
+
MSpec.stub!(:delete_tag).and_return(true)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
after :each do
|
|
182
|
+
$stdout = STDOUT
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it "reports no specs tagged if none where tagged" do
|
|
186
|
+
action = TagAction.new :add, :fail, "tag", "comment", nil, "can"
|
|
187
|
+
action.stub!(:outcome?).and_return(false)
|
|
188
|
+
action.after @state
|
|
189
|
+
action.finish
|
|
190
|
+
@out.should == "\nTagAction: no specs were tagged with 'tag'\n"
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "reports no specs tagged if none where tagged" do
|
|
194
|
+
action = TagAction.new :del, :fail, "tag", "comment", nil, "can"
|
|
195
|
+
action.stub!(:outcome?).and_return(false)
|
|
196
|
+
action.after @state
|
|
197
|
+
action.finish
|
|
198
|
+
@out.should == "\nTagAction: no tags 'tag' were deleted\n"
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
it "reports the spec descriptions that were tagged" do
|
|
202
|
+
action = TagAction.new :add, :fail, "tag", "comment", nil, "can"
|
|
203
|
+
action.stub!(:outcome?).and_return(true)
|
|
204
|
+
action.after @state
|
|
205
|
+
action.finish
|
|
206
|
+
@out.should ==
|
|
207
|
+
%[
|
|
208
|
+
TagAction: specs tagged with 'tag':
|
|
209
|
+
|
|
210
|
+
Catch#me if you can
|
|
211
|
+
]
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it "reports the spec descriptions for the tags that were deleted" do
|
|
215
|
+
action = TagAction.new :del, :fail, "tag", "comment", nil, "can"
|
|
216
|
+
action.stub!(:outcome?).and_return(true)
|
|
217
|
+
action.after @state
|
|
218
|
+
action.finish
|
|
219
|
+
@out.should ==
|
|
220
|
+
%[
|
|
221
|
+
TagAction: tag 'tag' deleted for specs:
|
|
222
|
+
|
|
223
|
+
Catch#me if you can
|
|
224
|
+
]
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
describe TagAction, "#register" do
|
|
229
|
+
before :each do
|
|
230
|
+
MSpec.stub!(:register)
|
|
231
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
232
|
+
@action = TagAction.new :add, :all, nil, nil, nil, nil
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it "registers itself with MSpec for the :after action" do
|
|
236
|
+
MSpec.should_receive(:register).with(:after, @action)
|
|
237
|
+
MSpec.should_receive(:register).with(:finish, @action)
|
|
238
|
+
@action.register
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
describe TagAction, "#unregister" do
|
|
243
|
+
before :each do
|
|
244
|
+
MSpec.stub!(:unregister)
|
|
245
|
+
MSpec.stub!(:read_tags).and_return([])
|
|
246
|
+
@action = TagAction.new :add, :all, nil, nil, nil, nil
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it "unregisters itself with MSpec for the :after action" do
|
|
250
|
+
MSpec.should_receive(:unregister).with(:after, @action)
|
|
251
|
+
@action.unregister
|
|
252
|
+
end
|
|
253
|
+
end
|