mspec 1.5.17 → 1.5.18
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +27 -0
- data/Gemfile +4 -0
- data/README +39 -159
- data/Rakefile +4 -44
- data/bin/mkspec.bat +1 -0
- data/bin/mspec-ci.bat +1 -0
- data/bin/mspec-run.bat +1 -0
- data/bin/mspec-tag.bat +1 -0
- data/bin/mspec.bat +1 -0
- data/lib/mspec/commands/mkspec.rb +2 -2
- data/lib/mspec/commands/mspec-run.rb +4 -0
- data/lib/mspec/commands/mspec.rb +18 -3
- data/lib/mspec/guards.rb +1 -0
- data/lib/mspec/guards/block_device.rb +22 -0
- data/lib/mspec/guards/guard.rb +14 -2
- data/lib/mspec/helpers.rb +5 -5
- data/lib/mspec/helpers/const_lookup.rb +6 -1
- data/lib/mspec/helpers/datetime.rb +28 -0
- data/lib/mspec/helpers/ducktype.rb +4 -4
- data/lib/mspec/helpers/environment.rb +19 -2
- data/lib/mspec/helpers/fs.rb +5 -1
- data/lib/mspec/helpers/io.rb +39 -1
- data/lib/mspec/helpers/numeric.rb +89 -0
- data/lib/mspec/helpers/pack.rb +3 -0
- data/lib/mspec/helpers/ruby_exe.rb +53 -15
- data/lib/mspec/helpers/singleton_class.rb +7 -0
- data/lib/mspec/helpers/stasy.rb +33 -0
- data/lib/mspec/helpers/tmp.rb +16 -3
- data/lib/mspec/matchers.rb +8 -0
- data/lib/mspec/matchers/be_computed_by.rb +37 -0
- data/lib/mspec/matchers/be_computed_by_function.rb +35 -0
- data/lib/mspec/matchers/be_nan.rb +20 -0
- data/lib/mspec/matchers/be_valid_dns_name.rb +25 -0
- data/lib/mspec/matchers/have_data.rb +6 -5
- data/lib/mspec/matchers/have_private_method.rb +24 -0
- data/lib/mspec/matchers/have_singleton_method.rb +24 -0
- data/lib/mspec/matchers/infinity.rb +28 -0
- data/lib/mspec/matchers/match_yaml.rb +5 -5
- data/lib/mspec/matchers/raise_error.rb +5 -3
- data/lib/mspec/matchers/signed_zero.rb +28 -0
- data/lib/mspec/mocks/mock.rb +15 -9
- data/lib/mspec/mocks/object.rb +4 -0
- data/lib/mspec/mocks/proxy.rb +26 -1
- data/lib/mspec/runner/actions.rb +0 -1
- data/lib/mspec/runner/context.rb +18 -16
- data/lib/mspec/runner/formatters.rb +2 -0
- data/lib/mspec/runner/formatters/dotted.rb +13 -1
- data/lib/mspec/runner/formatters/junit.rb +96 -0
- data/lib/mspec/runner/formatters/profile.rb +70 -0
- data/lib/mspec/runner/mspec.rb +11 -0
- data/lib/mspec/runner/shared.rb +1 -1
- data/lib/mspec/utils/options.rb +33 -9
- data/lib/mspec/utils/ruby_name.rb +1 -1
- data/lib/mspec/utils/script.rb +2 -1
- data/lib/mspec/version.rb +1 -1
- data/mspec.gemspec +40 -0
- data/spec/commands/mkspec_spec.rb +4 -3
- data/spec/commands/mspec_ci_spec.rb +1 -6
- data/spec/commands/mspec_run_spec.rb +1 -6
- data/spec/commands/mspec_spec.rb +14 -6
- data/spec/commands/mspec_tag_spec.rb +28 -27
- data/spec/expectations/expectations_spec.rb +1 -1
- data/spec/expectations/should_spec.rb +4 -4
- data/spec/guards/background_spec.rb +2 -2
- data/spec/guards/block_device_spec.rb +46 -0
- data/spec/guards/bug_spec.rb +2 -3
- data/spec/guards/compliance_spec.rb +2 -2
- data/spec/guards/conflict_spec.rb +2 -2
- data/spec/guards/endian_spec.rb +2 -2
- data/spec/guards/extensions_spec.rb +2 -2
- data/spec/guards/feature_spec.rb +2 -2
- data/spec/guards/guard_spec.rb +80 -22
- data/spec/guards/noncompliance_spec.rb +2 -2
- data/spec/guards/platform_spec.rb +2 -2
- data/spec/guards/quarantine_spec.rb +2 -2
- data/spec/guards/runner_spec.rb +2 -2
- data/spec/guards/specified_spec.rb +2 -2
- data/spec/guards/superuser_spec.rb +2 -2
- data/spec/guards/support_spec.rb +2 -2
- data/spec/guards/tty_spec.rb +2 -2
- data/spec/guards/user_spec.rb +2 -2
- data/spec/guards/version_spec.rb +2 -2
- data/spec/helpers/argv_spec.rb +3 -2
- data/spec/helpers/const_lookup_spec.rb +3 -2
- data/spec/helpers/datetime_spec.rb +44 -0
- data/spec/helpers/ducktype_spec.rb +3 -2
- data/spec/helpers/encode_spec.rb +3 -2
- data/spec/helpers/enumerator_class_spec.rb +5 -5
- data/spec/helpers/environment_spec.rb +15 -3
- data/spec/helpers/fixture_spec.rb +3 -2
- data/spec/helpers/flunk_spec.rb +4 -3
- data/spec/helpers/fs_spec.rb +35 -18
- data/spec/helpers/hash_spec.rb +3 -2
- data/spec/helpers/io_spec.rb +75 -6
- data/spec/helpers/language_version_spec.rb +3 -2
- data/spec/helpers/mock_to_path_spec.rb +3 -2
- data/spec/helpers/numeric_spec.rb +25 -0
- data/spec/helpers/ruby_exe_spec.rb +115 -29
- data/spec/helpers/scratch_spec.rb +3 -1
- data/spec/helpers/stasy_spec.rb +59 -0
- data/spec/helpers/tmp_spec.rb +21 -4
- data/spec/matchers/base_spec.rb +2 -2
- data/spec/matchers/be_an_instance_of_spec.rb +2 -2
- data/spec/matchers/be_ancestor_of_spec.rb +2 -2
- data/spec/matchers/be_close_spec.rb +2 -2
- data/spec/matchers/be_computed_by_function_spec.rb +36 -0
- data/spec/matchers/be_computed_by_spec.rb +42 -0
- data/spec/matchers/be_empty_spec.rb +2 -2
- data/spec/matchers/be_false_spec.rb +3 -3
- data/spec/matchers/be_kind_of_spec.rb +2 -2
- data/spec/matchers/be_nan_spec.rb +28 -0
- data/spec/matchers/be_nil_spec.rb +3 -3
- data/spec/matchers/be_true_spec.rb +3 -3
- data/spec/matchers/be_valid_dns_name_spec.rb +50 -0
- data/spec/matchers/complain_spec.rb +2 -2
- data/spec/matchers/eql_spec.rb +2 -2
- data/spec/matchers/equal_element_spec.rb +2 -2
- data/spec/matchers/equal_spec.rb +2 -2
- data/spec/matchers/equal_utf16_spec.rb +2 -2
- data/spec/matchers/have_class_variable_spec.rb +3 -3
- data/spec/matchers/have_constant_spec.rb +2 -2
- data/spec/matchers/have_data_spec.rb +8 -5
- data/spec/matchers/have_instance_method_spec.rb +2 -2
- data/spec/matchers/have_instance_variable_spec.rb +3 -3
- data/spec/matchers/have_method_spec.rb +2 -2
- data/spec/matchers/have_private_instance_method_spec.rb +3 -3
- data/spec/matchers/have_private_method_spec.rb +44 -0
- data/spec/matchers/have_protected_instance_method_spec.rb +2 -2
- data/spec/matchers/have_public_instance_method_spec.rb +2 -2
- data/spec/matchers/have_singleton_method_spec.rb +45 -0
- data/spec/matchers/include_spec.rb +2 -2
- data/spec/matchers/infinity_spec.rb +34 -0
- data/spec/matchers/match_yaml_spec.rb +3 -3
- data/spec/matchers/output_spec.rb +2 -2
- data/spec/matchers/output_to_fd_spec.rb +2 -2
- data/spec/matchers/raise_error_spec.rb +24 -3
- data/spec/matchers/respond_to_spec.rb +2 -2
- data/spec/matchers/signed_zero_spec.rb +32 -0
- data/spec/matchers/stringsymboladapter_spec.rb +2 -2
- data/spec/mocks/mock_spec.rb +12 -12
- data/spec/mocks/proxy_spec.rb +1 -1
- data/spec/runner/actions/gdb_spec.rb +1 -1
- data/spec/runner/actions/tag_spec.rb +1 -1
- data/spec/runner/actions/taglist_spec.rb +1 -1
- data/spec/runner/context_spec.rb +27 -27
- data/spec/runner/example_spec.rb +1 -1
- data/spec/runner/exception_spec.rb +1 -1
- data/spec/runner/filters/tag_spec.rb +2 -2
- data/spec/runner/formatters/describe_spec.rb +1 -1
- data/spec/runner/formatters/dotted_spec.rb +2 -2
- data/spec/runner/formatters/html_spec.rb +2 -2
- data/spec/runner/formatters/junit_spec.rb +147 -0
- data/spec/runner/formatters/unit_spec.rb +2 -2
- data/spec/runner/formatters/yaml_spec.rb +3 -3
- data/spec/runner/mspec_spec.rb +22 -21
- data/spec/runner/shared_spec.rb +9 -1
- data/spec/runner/tag_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -7
- data/spec/utils/name_map_spec.rb +1 -2
- data/spec/utils/options_spec.rb +58 -27
- data/spec/utils/script_spec.rb +5 -13
- data/spec/utils/version_spec.rb +1 -1
- metadata +254 -64
- data/lib/mspec/helpers/bignum.rb +0 -5
- data/lib/mspec/helpers/fmode.rb +0 -15
- data/lib/mspec/helpers/infinity.rb +0 -5
- data/lib/mspec/helpers/metaclass.rb +0 -7
- data/lib/mspec/helpers/nan.rb +0 -5
- data/lib/mspec/runner/actions/debug.rb +0 -17
- data/spec/helpers/bignum_spec.rb +0 -11
- data/spec/helpers/fmode_spec.rb +0 -14
- data/spec/helpers/infinity_spec.rb +0 -8
- data/spec/helpers/nan_spec.rb +0 -8
- data/spec/runner/actions/debug_spec.rb +0 -62
@@ -5,7 +5,7 @@ require 'mspec/runner/filters/tag'
|
|
5
5
|
|
6
6
|
describe TagFilter, "#load" do
|
7
7
|
before :each do
|
8
|
-
@match = mock("match filter"
|
8
|
+
@match = mock("match filter").as_null_object
|
9
9
|
@filter = TagFilter.new :include, "tag", "key"
|
10
10
|
@tag = SpecTag.new "tag(comment):description"
|
11
11
|
MSpec.stub!(:read_tags).and_return([@tag])
|
@@ -50,7 +50,7 @@ describe TagFilter, "#unload" do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "unregisters the MatchFilter if one was registered" do
|
53
|
-
match = mock("match filter"
|
53
|
+
match = mock("match filter").as_null_object
|
54
54
|
match.should_receive(:unregister)
|
55
55
|
MatchFilter.stub!(:new).with(:include, "description").and_return(match)
|
56
56
|
@filter.load
|
@@ -7,7 +7,7 @@ describe DescribeFormatter, "#finish" do
|
|
7
7
|
MSpec.stub!(:register)
|
8
8
|
MSpec.stub!(:unregister)
|
9
9
|
|
10
|
-
@timer = mock("timer"
|
10
|
+
@timer = mock("timer").as_null_object
|
11
11
|
TimerAction.stub!(:new).and_return(@timer)
|
12
12
|
@timer.stub!(:format).and_return("Finished in 2.0 seconds")
|
13
13
|
|
@@ -221,9 +221,9 @@ end
|
|
221
221
|
|
222
222
|
describe DottedFormatter, "#finish" do
|
223
223
|
before :each do
|
224
|
-
@tally = mock("tally"
|
224
|
+
@tally = mock("tally").as_null_object
|
225
225
|
TallyAction.stub!(:new).and_return(@tally)
|
226
|
-
@timer = mock("timer"
|
226
|
+
@timer = mock("timer").as_null_object
|
227
227
|
TimerAction.stub!(:new).and_return(@timer)
|
228
228
|
|
229
229
|
$stdout = @out = IOStub.new
|
@@ -144,9 +144,9 @@ end
|
|
144
144
|
|
145
145
|
describe HtmlFormatter, "#finish" do
|
146
146
|
before :each do
|
147
|
-
@tally = mock("tally"
|
147
|
+
@tally = mock("tally").as_null_object
|
148
148
|
TallyAction.stub!(:new).and_return(@tally)
|
149
|
-
@timer = mock("timer"
|
149
|
+
@timer = mock("timer").as_null_object
|
150
150
|
TimerAction.stub!(:new).and_return(@timer)
|
151
151
|
|
152
152
|
$stdout = @out = IOStub.new
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
3
|
+
require 'mspec/runner/formatters/junit'
|
4
|
+
require 'mspec/runner/example'
|
5
|
+
|
6
|
+
describe JUnitFormatter, "#initialize" do
|
7
|
+
it "permits zero arguments" do
|
8
|
+
lambda { JUnitFormatter.new }.should_not raise_error
|
9
|
+
end
|
10
|
+
|
11
|
+
it "accepts one argument" do
|
12
|
+
lambda { JUnitFormatter.new nil }.should_not raise_error
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe JUnitFormatter, "#print" do
|
17
|
+
before :each do
|
18
|
+
$stdout = IOStub.new
|
19
|
+
@out = IOStub.new
|
20
|
+
File.stub!(:open).and_return(@out)
|
21
|
+
@formatter = JUnitFormatter.new "some/file"
|
22
|
+
end
|
23
|
+
|
24
|
+
after :each do
|
25
|
+
$stdout = STDOUT
|
26
|
+
end
|
27
|
+
|
28
|
+
it "writes to $stdout if #switch has not been called" do
|
29
|
+
@formatter.print "begonias"
|
30
|
+
$stdout.should == "begonias"
|
31
|
+
@out.should == ""
|
32
|
+
end
|
33
|
+
|
34
|
+
it "writes to the file passed to #initialize once #switch has been called" do
|
35
|
+
@formatter.switch
|
36
|
+
@formatter.print "begonias"
|
37
|
+
$stdout.should == ""
|
38
|
+
@out.should == "begonias"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "writes to $stdout once #switch is called if no file was passed to #initialize" do
|
42
|
+
formatter = JUnitFormatter.new
|
43
|
+
formatter.switch
|
44
|
+
formatter.print "begonias"
|
45
|
+
$stdout.should == "begonias"
|
46
|
+
@out.should == ""
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe JUnitFormatter, "#finish" do
|
51
|
+
before :each do
|
52
|
+
@tally = mock("tally").as_null_object
|
53
|
+
@counter = mock("counter").as_null_object
|
54
|
+
@tally.stub!(:counter).and_return(@counter)
|
55
|
+
TallyAction.stub!(:new).and_return(@tally)
|
56
|
+
|
57
|
+
@timer = mock("timer").as_null_object
|
58
|
+
TimerAction.stub!(:new).and_return(@timer)
|
59
|
+
|
60
|
+
$stdout = IOStub.new
|
61
|
+
context = ContextState.new "describe"
|
62
|
+
@state = ExampleState.new(context, "it")
|
63
|
+
|
64
|
+
@formatter = JUnitFormatter.new
|
65
|
+
@formatter.stub!(:backtrace).and_return("")
|
66
|
+
MSpec.stub!(:register)
|
67
|
+
@formatter.register
|
68
|
+
|
69
|
+
exc = ExceptionState.new @state, nil, MSpecExampleError.new("broken")
|
70
|
+
exc.stub!(:backtrace).and_return("path/to/some/file.rb:35:in method")
|
71
|
+
@formatter.exception exc
|
72
|
+
@formatter.after @state
|
73
|
+
end
|
74
|
+
|
75
|
+
after :each do
|
76
|
+
$stdout = STDOUT
|
77
|
+
end
|
78
|
+
|
79
|
+
it "calls #switch" do
|
80
|
+
@formatter.should_receive(:switch)
|
81
|
+
@formatter.finish
|
82
|
+
end
|
83
|
+
|
84
|
+
it "outputs a failure message and backtrace" do
|
85
|
+
@formatter.finish
|
86
|
+
$stdout.should =~ /message="error in describe it" type="error"/
|
87
|
+
$stdout.should =~ /MSpecExampleError: broken\n/
|
88
|
+
$stdout.should =~ %r[path/to/some/file.rb:35:in method]
|
89
|
+
end
|
90
|
+
|
91
|
+
it "encodes message and backtrace in latin1 for jenkins" do
|
92
|
+
exc = ExceptionState.new @state, nil, MSpecExampleError.new("broken…")
|
93
|
+
exc.stub!(:backtrace).and_return("path/to/some/file.rb:35:in methød")
|
94
|
+
@formatter.exception exc
|
95
|
+
@formatter.finish
|
96
|
+
$stdout.should =~ /MSpecExampleError: broken((\.\.\.)|\?)\n/
|
97
|
+
$stdout.should =~ /path\/to\/some\/file\.rb:35:in meth(\?|o)d/
|
98
|
+
end
|
99
|
+
|
100
|
+
it "outputs an elapsed time" do
|
101
|
+
@timer.should_receive(:elapsed).and_return(4.2)
|
102
|
+
@formatter.finish
|
103
|
+
$stdout.should =~ /time="4.2"/
|
104
|
+
end
|
105
|
+
|
106
|
+
it "outputs overall elapsed time" do
|
107
|
+
@timer.should_receive(:elapsed).and_return(4.2)
|
108
|
+
@formatter.finish
|
109
|
+
$stdout.should =~ /timeCount="4.2"/
|
110
|
+
end
|
111
|
+
|
112
|
+
it "outputs the number of examples as test count" do
|
113
|
+
@counter.should_receive(:examples).and_return(9)
|
114
|
+
@formatter.finish
|
115
|
+
$stdout.should =~ /tests="9"/
|
116
|
+
end
|
117
|
+
|
118
|
+
it "outputs overall number of examples as test count" do
|
119
|
+
@counter.should_receive(:examples).and_return(9)
|
120
|
+
@formatter.finish
|
121
|
+
$stdout.should =~ /testCount="9"/
|
122
|
+
end
|
123
|
+
|
124
|
+
it "outputs a failure count" do
|
125
|
+
@counter.should_receive(:failures).and_return(2)
|
126
|
+
@formatter.finish
|
127
|
+
$stdout.should =~ /failureCount="2"/
|
128
|
+
end
|
129
|
+
|
130
|
+
it "outputs overall failure count" do
|
131
|
+
@counter.should_receive(:failures).and_return(2)
|
132
|
+
@formatter.finish
|
133
|
+
$stdout.should =~ /failures="2"/
|
134
|
+
end
|
135
|
+
|
136
|
+
it "outputs an error count" do
|
137
|
+
@counter.should_receive(:errors).and_return(1)
|
138
|
+
@formatter.finish
|
139
|
+
$stdout.should =~ /errors="1"/
|
140
|
+
end
|
141
|
+
|
142
|
+
it "outputs overall error count" do
|
143
|
+
@counter.should_receive(:errors).and_return(1)
|
144
|
+
@formatter.finish
|
145
|
+
$stdout.should =~ /errorCount="1"/
|
146
|
+
end
|
147
|
+
end
|
@@ -5,9 +5,9 @@ require 'mspec/utils/script'
|
|
5
5
|
|
6
6
|
describe UnitdiffFormatter, "#finish" do
|
7
7
|
before :each do
|
8
|
-
@tally = mock("tally"
|
8
|
+
@tally = mock("tally").as_null_object
|
9
9
|
TallyAction.stub!(:new).and_return(@tally)
|
10
|
-
@timer = mock("timer"
|
10
|
+
@timer = mock("timer").as_null_object
|
11
11
|
TimerAction.stub!(:new).and_return(@timer)
|
12
12
|
|
13
13
|
$stdout = @out = IOStub.new
|
@@ -48,12 +48,12 @@ end
|
|
48
48
|
|
49
49
|
describe YamlFormatter, "#finish" do
|
50
50
|
before :each do
|
51
|
-
@tally = mock("tally"
|
52
|
-
@counter = mock("counter"
|
51
|
+
@tally = mock("tally").as_null_object
|
52
|
+
@counter = mock("counter").as_null_object
|
53
53
|
@tally.stub!(:counter).and_return(@counter)
|
54
54
|
TallyAction.stub!(:new).and_return(@tally)
|
55
55
|
|
56
|
-
@timer = mock("timer"
|
56
|
+
@timer = mock("timer").as_null_object
|
57
57
|
TimerAction.stub!(:new).and_return(@timer)
|
58
58
|
|
59
59
|
$stdout = IOStub.new
|
data/spec/runner/mspec_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'mspec/helpers/tmp'
|
3
|
+
require 'mspec/helpers/fs'
|
3
4
|
require 'mspec/matchers/base'
|
4
5
|
require 'mspec/runner/mspec'
|
5
6
|
require 'mspec/runner/example'
|
@@ -418,12 +419,12 @@ end
|
|
418
419
|
describe MSpec, ".read_tags" do
|
419
420
|
before :each do
|
420
421
|
@tag = SpecTag.new "fails:Some#method"
|
421
|
-
File.open(tmp("tags.txt"), "w") do |f|
|
422
|
+
File.open(tmp("tags.txt", false), "w") do |f|
|
422
423
|
f.puts ""
|
423
424
|
f.puts @tag
|
424
425
|
f.puts ""
|
425
426
|
end
|
426
|
-
MSpec.stub!(:tags_file).and_return(tmp("tags.txt"))
|
427
|
+
MSpec.stub!(:tags_file).and_return(tmp("tags.txt", false))
|
427
428
|
end
|
428
429
|
|
429
430
|
it "does not return a tag object for empty lines" do
|
@@ -433,24 +434,24 @@ end
|
|
433
434
|
|
434
435
|
describe MSpec, ".write_tags" do
|
435
436
|
before :each do
|
436
|
-
FileUtils.cp File.dirname(__FILE__) + "/tags.txt", tmp("tags.txt")
|
437
|
-
MSpec.stub!(:tags_file).and_return(tmp("tags.txt"))
|
437
|
+
FileUtils.cp File.dirname(__FILE__) + "/tags.txt", tmp("tags.txt", false)
|
438
|
+
MSpec.stub!(:tags_file).and_return(tmp("tags.txt", false))
|
438
439
|
@tag1 = SpecTag.new "check(broken):Tag#rewrite works"
|
439
440
|
@tag2 = SpecTag.new "broken:Tag#write_tags fails"
|
440
441
|
end
|
441
442
|
|
442
443
|
after :all do
|
443
|
-
|
444
|
+
rm_r tmp("tags.txt", false)
|
444
445
|
end
|
445
446
|
|
446
447
|
it "overwrites the tags in the tag file" do
|
447
|
-
IO.read(tmp("tags.txt")).should == %[fail(broken):Some#method? works
|
448
|
+
IO.read(tmp("tags.txt", false)).should == %[fail(broken):Some#method? works
|
448
449
|
incomplete(20%):The#best method ever
|
449
450
|
benchmark(0.01825):The#fastest method today
|
450
451
|
extended():\"Multi-line\\ntext\\ntag\"
|
451
452
|
]
|
452
453
|
MSpec.write_tags [@tag1, @tag2]
|
453
|
-
IO.read(tmp("tags.txt")).should == %[check(broken):Tag#rewrite works
|
454
|
+
IO.read(tmp("tags.txt", false)).should == %[check(broken):Tag#rewrite works
|
454
455
|
broken:Tag#write_tags fails
|
455
456
|
]
|
456
457
|
end
|
@@ -459,40 +460,40 @@ end
|
|
459
460
|
describe MSpec, ".write_tag" do
|
460
461
|
before :each do
|
461
462
|
FileUtils.stub!(:mkdir_p)
|
462
|
-
MSpec.stub!(:tags_file).and_return(tmp("tags.txt"))
|
463
|
+
MSpec.stub!(:tags_file).and_return(tmp("tags.txt", false))
|
463
464
|
@tag = SpecTag.new "fail(broken):Some#method works"
|
464
465
|
end
|
465
466
|
|
466
467
|
after :all do
|
467
|
-
|
468
|
+
rm_r tmp("tags.txt", false)
|
468
469
|
end
|
469
470
|
|
470
471
|
it "writes a tag to the tags file for the current spec file" do
|
471
472
|
MSpec.write_tag @tag
|
472
|
-
IO.read(tmp("tags.txt")).should == "fail(broken):Some#method works\n"
|
473
|
+
IO.read(tmp("tags.txt", false)).should == "fail(broken):Some#method works\n"
|
473
474
|
end
|
474
475
|
|
475
476
|
it "does not write a duplicate tag" do
|
476
|
-
File.open(tmp("tags.txt"), "w") { |f| f.puts @tag }
|
477
|
+
File.open(tmp("tags.txt", false), "w") { |f| f.puts @tag }
|
477
478
|
MSpec.write_tag @tag
|
478
|
-
IO.read(tmp("tags.txt")).should == "fail(broken):Some#method works\n"
|
479
|
+
IO.read(tmp("tags.txt", false)).should == "fail(broken):Some#method works\n"
|
479
480
|
end
|
480
481
|
end
|
481
482
|
|
482
483
|
describe MSpec, ".delete_tag" do
|
483
484
|
before :each do
|
484
|
-
FileUtils.cp File.dirname(__FILE__) + "/tags.txt", tmp("tags.txt")
|
485
|
-
MSpec.stub!(:tags_file).and_return(tmp("tags.txt"))
|
485
|
+
FileUtils.cp File.dirname(__FILE__) + "/tags.txt", tmp("tags.txt", false)
|
486
|
+
MSpec.stub!(:tags_file).and_return(tmp("tags.txt", false))
|
486
487
|
@tag = SpecTag.new "fail(Comments don't matter):Some#method? works"
|
487
488
|
end
|
488
489
|
|
489
490
|
after :each do
|
490
|
-
|
491
|
+
rm_r tmp("tags.txt", false)
|
491
492
|
end
|
492
493
|
|
493
494
|
it "deletes the tag if it exists" do
|
494
495
|
MSpec.delete_tag(@tag).should == true
|
495
|
-
IO.read(tmp("tags.txt")).should == %[incomplete(20%):The#best method ever
|
496
|
+
IO.read(tmp("tags.txt", false)).should == %[incomplete(20%):The#best method ever
|
496
497
|
benchmark(0.01825):The#fastest method today
|
497
498
|
extended():\"Multi-line\\ntext\\ntag\"
|
498
499
|
]
|
@@ -500,7 +501,7 @@ extended():\"Multi-line\\ntext\\ntag\"
|
|
500
501
|
|
501
502
|
it "deletes a tag with escaped newlines" do
|
502
503
|
MSpec.delete_tag(SpecTag.new('extended:"Multi-line\ntext\ntag"')).should == true
|
503
|
-
IO.read(tmp("tags.txt")).should == %[fail(broken):Some#method? works
|
504
|
+
IO.read(tmp("tags.txt", false)).should == %[fail(broken):Some#method? works
|
504
505
|
incomplete(20%):The#best method ever
|
505
506
|
benchmark(0.01825):The#fastest method today
|
506
507
|
]
|
@@ -509,7 +510,7 @@ benchmark(0.01825):The#fastest method today
|
|
509
510
|
it "does not change the tags file contents if the tag doesn't exist" do
|
510
511
|
@tag.tag = "failed"
|
511
512
|
MSpec.delete_tag(@tag).should == false
|
512
|
-
IO.read(tmp("tags.txt")).should == %[fail(broken):Some#method? works
|
513
|
+
IO.read(tmp("tags.txt", false)).should == %[fail(broken):Some#method? works
|
513
514
|
incomplete(20%):The#best method ever
|
514
515
|
benchmark(0.01825):The#fastest method today
|
515
516
|
extended():\"Multi-line\\ntext\\ntag\"
|
@@ -521,13 +522,13 @@ extended():\"Multi-line\\ntext\\ntag\"
|
|
521
522
|
MSpec.delete_tag(SpecTag.new("incomplete:The#best method ever")).should == true
|
522
523
|
MSpec.delete_tag(SpecTag.new("benchmark:The#fastest method today")).should == true
|
523
524
|
MSpec.delete_tag(SpecTag.new("extended:\"Multi-line\ntext\ntag\"")).should == true
|
524
|
-
File.exist?(tmp("tags.txt")).should == false
|
525
|
+
File.exist?(tmp("tags.txt", false)).should == false
|
525
526
|
end
|
526
527
|
end
|
527
528
|
|
528
529
|
describe MSpec, ".delete_tags" do
|
529
530
|
before :each do
|
530
|
-
@tags = tmp("tags.txt")
|
531
|
+
@tags = tmp("tags.txt", false)
|
531
532
|
FileUtils.cp File.dirname(__FILE__) + "/tags.txt", @tags
|
532
533
|
MSpec.stub!(:tags_file).and_return(@tags)
|
533
534
|
end
|
data/spec/runner/shared_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'mspec/runner/shared'
|
3
3
|
require 'mspec/runner/context'
|
4
4
|
require 'mspec/runner/example'
|
@@ -29,6 +29,14 @@ describe Object, "#it_behaves_like" do
|
|
29
29
|
ScratchPad.recorded.should == object
|
30
30
|
end
|
31
31
|
|
32
|
+
it "creates @object if the passed false" do
|
33
|
+
object = false
|
34
|
+
@shared.it("an example") { ScratchPad.record @object }
|
35
|
+
@state.it_behaves_like :shared_spec, :some_method, object
|
36
|
+
@state.process
|
37
|
+
ScratchPad.recorded.should == object
|
38
|
+
end
|
39
|
+
|
32
40
|
it "sends :it_should_behave_like" do
|
33
41
|
@state.should_receive(:it_should_behave_like)
|
34
42
|
@state.it_behaves_like :shared_spec, :some_method
|
data/spec/runner/tag_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
dir_path = File.dirname(__FILE__)
|
2
|
-
lib_path = File.expand_path(dir_path + '/../lib')
|
3
|
-
bin_path = File.expand_path(dir_path + '/..')
|
4
|
-
$:.unshift lib_path unless $:.include? lib_path
|
5
|
-
$:.unshift bin_path unless $:.include? bin_path
|
6
|
-
|
7
1
|
require 'pp'
|
8
2
|
require 'mspec/helpers/io'
|
9
3
|
require 'mspec/helpers/scratch'
|
@@ -29,6 +23,7 @@ class MOSConfig < Hash
|
|
29
23
|
self[:command] = nil
|
30
24
|
self[:ltags] = []
|
31
25
|
self[:files] = []
|
26
|
+
self[:launch] = []
|
32
27
|
end
|
33
28
|
end
|
34
29
|
|
@@ -40,4 +35,3 @@ end
|
|
40
35
|
# Just to have an exception name output not be "Exception"
|
41
36
|
class MSpecExampleError < Exception
|
42
37
|
end
|
43
|
-
|
data/spec/utils/name_map_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'mspec/utils/name_map'
|
3
3
|
|
4
4
|
module NameMapSpecs
|
@@ -74,7 +74,6 @@ describe NameMap, "#class_or_module" do
|
|
74
74
|
DTracer
|
75
75
|
NameMap
|
76
76
|
OptionParser
|
77
|
-
YAML
|
78
77
|
]
|
79
78
|
|
80
79
|
excluded.each do |const|
|
data/spec/utils/options_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'mspec/utils/options'
|
3
3
|
require 'mspec/version'
|
4
4
|
require 'mspec/guards/guard'
|
@@ -544,16 +544,20 @@ describe "The -t, --target TARGET option" do
|
|
544
544
|
@options.targets
|
545
545
|
end
|
546
546
|
|
547
|
-
it "sets the target to 'ruby' and flags to verbose with TARGET 'ruby'" do
|
547
|
+
it "sets the target to 'ruby' and flags to verbose with TARGET 'r' or 'ruby'" do
|
548
548
|
["-t", "--target"].each do |opt|
|
549
|
-
|
550
|
-
|
549
|
+
["r", "ruby"].each do |t|
|
550
|
+
@config[:target] = nil
|
551
|
+
@options.parse [opt, t]
|
552
|
+
@config[:target].should == "ruby"
|
553
|
+
end
|
551
554
|
end
|
552
555
|
end
|
553
556
|
|
554
557
|
it "sets the target to 'ruby1.9' with TARGET 'r19', 'ruby19' or 'ruby1.9'" do
|
555
558
|
["-t", "--target"].each do |opt|
|
556
|
-
["r19", "ruby19"
|
559
|
+
["r19", "ruby19"].each do |t|
|
560
|
+
@config[:target] = nil
|
557
561
|
@options.parse [opt, t]
|
558
562
|
@config[:target].should == "ruby1.9"
|
559
563
|
end
|
@@ -563,6 +567,7 @@ describe "The -t, --target TARGET option" do
|
|
563
567
|
it "sets the target to 'jruby' with TARGET 'j' or 'jruby'" do
|
564
568
|
["-t", "--target"].each do |opt|
|
565
569
|
["j", "jruby"].each do |t|
|
570
|
+
@config[:target] = nil
|
566
571
|
@options.parse [opt, t]
|
567
572
|
@config[:target].should == "jruby"
|
568
573
|
end
|
@@ -572,6 +577,7 @@ describe "The -t, --target TARGET option" do
|
|
572
577
|
it "sets the target to 'shotgun/rubinius' with TARGET 'x' or 'rubinius'" do
|
573
578
|
["-t", "--target"].each do |opt|
|
574
579
|
["x", "rubinius"].each do |t|
|
580
|
+
@config[:target] = nil
|
575
581
|
@options.parse [opt, t]
|
576
582
|
@config[:target].should == "./bin/rbx"
|
577
583
|
end
|
@@ -581,6 +587,7 @@ describe "The -t, --target TARGET option" do
|
|
581
587
|
it "set the target to 'rbx' with TARGET 'rbx'" do
|
582
588
|
["-t", "--target"].each do |opt|
|
583
589
|
["X", "rbx"].each do |t|
|
590
|
+
@config[:target] = nil
|
584
591
|
@options.parse [opt, t]
|
585
592
|
@config[:target].should == "rbx"
|
586
593
|
end
|
@@ -590,14 +597,26 @@ describe "The -t, --target TARGET option" do
|
|
590
597
|
it "sets the target to 'maglev' with TARGET 'm' or 'maglev'" do
|
591
598
|
["-t", "--target"].each do |opt|
|
592
599
|
["m", "maglev"].each do |t|
|
600
|
+
@config[:target] = nil
|
593
601
|
@options.parse [opt, t]
|
594
602
|
@config[:target].should == "maglev-ruby"
|
595
603
|
end
|
596
604
|
end
|
597
605
|
end
|
598
606
|
|
607
|
+
it "sets the target to 'topaz' with TARGET 't' or 'topaz'" do
|
608
|
+
["-t", "--target"].each do |opt|
|
609
|
+
["t", "topaz"].each do |t|
|
610
|
+
@config[:target] = nil
|
611
|
+
@options.parse [opt, t]
|
612
|
+
@config[:target].should == "topaz"
|
613
|
+
end
|
614
|
+
end
|
615
|
+
end
|
616
|
+
|
599
617
|
it "sets the target to TARGET" do
|
600
618
|
["-t", "--target"].each do |opt|
|
619
|
+
@config[:target] = nil
|
601
620
|
@options.parse [opt, "whateva"]
|
602
621
|
@config[:target].should == "whateva"
|
603
622
|
end
|
@@ -782,6 +801,16 @@ describe "The -f, --format FORMAT option" do
|
|
782
801
|
end
|
783
802
|
end
|
784
803
|
end
|
804
|
+
|
805
|
+
it "sets the JUnitFormatter with FORMAT 'j' or 'junit'" do
|
806
|
+
["-f", "--format"].each do |opt|
|
807
|
+
["j", "junit"].each do |f|
|
808
|
+
@config[:formatter] = nil
|
809
|
+
@options.parse [opt, f]
|
810
|
+
@config[:formatter].should == JUnitFormatter
|
811
|
+
end
|
812
|
+
end
|
813
|
+
end
|
785
814
|
end
|
786
815
|
|
787
816
|
describe "The -o, --output FILE option" do
|
@@ -1073,6 +1102,30 @@ describe "The -H, --random option" do
|
|
1073
1102
|
end
|
1074
1103
|
end
|
1075
1104
|
|
1105
|
+
describe "The -R, --repeat option" do
|
1106
|
+
before :each do
|
1107
|
+
@options, @config = new_option
|
1108
|
+
@options.repeat
|
1109
|
+
end
|
1110
|
+
|
1111
|
+
it "is enabled with #repeat" do
|
1112
|
+
@options.should_receive(:on).with("-R", "--repeat", "NUMBER", an_instance_of(String))
|
1113
|
+
@options.repeat
|
1114
|
+
end
|
1115
|
+
|
1116
|
+
it "registers the MSpec repeat mode" do
|
1117
|
+
["-R", "--repeat"].each do |opt|
|
1118
|
+
MSpec.repeat = 1
|
1119
|
+
@options.parse [opt, "10"]
|
1120
|
+
repeat_count = 0
|
1121
|
+
MSpec.repeat do
|
1122
|
+
repeat_count += 1
|
1123
|
+
end
|
1124
|
+
repeat_count.should == 10
|
1125
|
+
end
|
1126
|
+
end
|
1127
|
+
end
|
1128
|
+
|
1076
1129
|
describe "The -V, --verbose option" do
|
1077
1130
|
before :each do
|
1078
1131
|
@options, @config = new_option
|
@@ -1256,28 +1309,6 @@ describe "The -S, --action-string STR option" do
|
|
1256
1309
|
end
|
1257
1310
|
end
|
1258
1311
|
|
1259
|
-
describe "The --spec-debug option" do
|
1260
|
-
before :each do
|
1261
|
-
@options, @config = new_option
|
1262
|
-
@options.actions
|
1263
|
-
end
|
1264
|
-
|
1265
|
-
it "is enabled with #actions" do
|
1266
|
-
@options.stub!(:on)
|
1267
|
-
@options.should_receive(:on).with("--spec-debug", an_instance_of(String))
|
1268
|
-
@options.actions
|
1269
|
-
end
|
1270
|
-
|
1271
|
-
it "enables the triggering the ruby debugger" do
|
1272
|
-
@options.action_filters
|
1273
|
-
@options.parse ["-S", "some spec"]
|
1274
|
-
|
1275
|
-
@config[:debugger] = nil
|
1276
|
-
@options.parse "--spec-debug"
|
1277
|
-
@config[:debugger].should == true
|
1278
|
-
end
|
1279
|
-
end
|
1280
|
-
|
1281
1312
|
describe "The --spec-gdb option" do
|
1282
1313
|
before :each do
|
1283
1314
|
@options, @config = new_option
|