rspec 0.7.5.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +60 -1
- data/EXAMPLES.rd +38 -19
- data/MIT-LICENSE +1 -1
- data/README +24 -17
- data/RELEASE-PLAN +117 -0
- data/Rakefile +24 -18
- data/TODO.0.8.0 +5 -0
- data/examples/auto_spec_name_generation_example.rb +18 -0
- data/examples/custom_expectation_matchers.rb +53 -0
- data/examples/dynamic_spec.rb +9 -0
- data/examples/io_processor_spec.rb +2 -2
- data/examples/mocking_example.rb +4 -4
- data/examples/partial_mock_example.rb +2 -2
- data/examples/predicate_example.rb +2 -2
- data/examples/stack_spec.rb +32 -36
- data/examples/stubbing_example.rb +19 -19
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +3 -0
- data/lib/spec/callback.rb +8 -0
- data/lib/spec/callback/extensions/object.rb +4 -0
- data/lib/spec/deprecated.rb +3 -0
- data/lib/spec/expectations.rb +44 -17
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/extensions/object.rb +78 -130
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/handler.rb +47 -0
- data/lib/spec/expectations/should/base.rb +32 -29
- data/lib/spec/expectations/should/change.rb +1 -1
- data/lib/spec/expectations/should/have.rb +9 -17
- data/lib/spec/expectations/should/not.rb +54 -56
- data/lib/spec/expectations/should/should.rb +59 -65
- data/lib/spec/expectations/sugar.rb +27 -4
- data/lib/spec/matchers.rb +160 -0
- data/lib/spec/matchers/be.rb +161 -0
- data/lib/spec/matchers/be_close.rb +37 -0
- data/lib/spec/matchers/change.rb +120 -0
- data/lib/spec/matchers/eql.rb +43 -0
- data/lib/spec/matchers/equal.rb +43 -0
- data/lib/spec/matchers/has.rb +44 -0
- data/lib/spec/matchers/have.rb +140 -0
- data/lib/spec/matchers/include.rb +50 -0
- data/lib/spec/matchers/match.rb +41 -0
- data/lib/spec/matchers/raise_error.rb +100 -0
- data/lib/spec/matchers/respond_to.rb +35 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/throw_symbol.rb +75 -0
- data/lib/spec/mocks.rb +224 -1
- data/lib/spec/mocks/argument_expectation.rb +16 -2
- data/lib/spec/mocks/error_generator.rb +5 -3
- data/lib/spec/mocks/errors.rb +2 -2
- data/lib/spec/mocks/extensions/object.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +29 -19
- data/lib/spec/mocks/{mock_methods.rb → methods.rb} +5 -5
- data/lib/spec/mocks/mock.rb +2 -2
- data/lib/spec/mocks/mock_handler.rb +81 -68
- data/lib/spec/rake/spectask.rb +7 -12
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +117 -0
- data/lib/spec/runner/command_line.rb +8 -5
- data/lib/spec/runner/context.rb +13 -37
- data/lib/spec/runner/context_eval.rb +4 -3
- data/lib/spec/runner/context_runner.rb +7 -4
- data/lib/spec/runner/drb_command_line.rb +1 -1
- data/lib/spec/runner/execution_context.rb +3 -11
- data/lib/spec/runner/extensions/kernel.rb +7 -5
- data/lib/spec/runner/extensions/object.rb +4 -1
- data/lib/spec/runner/formatter/base_text_formatter.rb +11 -3
- data/lib/spec/runner/formatter/html_formatter.rb +21 -10
- data/lib/spec/runner/heckle_runner.rb +24 -8
- data/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/lib/spec/runner/option_parser.rb +58 -13
- data/lib/spec/runner/spec_matcher.rb +22 -29
- data/lib/spec/runner/spec_parser.rb +1 -0
- data/lib/spec/runner/specification.rb +36 -22
- data/lib/spec/translator.rb +87 -0
- data/lib/spec/version.rb +16 -7
- data/spec/spec/callback/callback_container_spec.rb +27 -0
- data/spec/spec/callback/module_spec.rb +37 -0
- data/spec/spec/callback/object_spec.rb +90 -0
- data/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
- data/spec/spec/expectations/differs/default_spec.rb +107 -0
- data/spec/spec/expectations/extensions/object_spec.rb +46 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/expectations/should/should_==_spec.rb +19 -0
- data/spec/spec/expectations/should/should_=~_spec.rb +13 -0
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
- data/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
- data/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
- data/spec/spec/expectations/should/should_be_spec.rb +11 -0
- data/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
- data/spec/spec/expectations/should/should_change_spec.rb +184 -0
- data/spec/spec/expectations/should/should_eql_spec.rb +11 -0
- data/spec/spec/expectations/should/should_equal_spec.rb +11 -0
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
- data/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
- data/spec/spec/expectations/should/should_have_spec.rb +64 -0
- data/spec/spec/expectations/should/should_include_spec.rb +59 -0
- data/spec/spec/expectations/should/should_match_spec.rb +25 -0
- data/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
- data/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
- data/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
- data/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
- data/spec/spec/expectations/should/should_raise_spec.rb +66 -0
- data/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
- data/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
- data/spec/spec/expectations/should/should_throw_spec.rb +27 -0
- data/spec/spec/matchers/be_close_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +182 -0
- data/spec/spec/matchers/change_spec.rb +232 -0
- data/spec/spec/matchers/description_generation_spec.rb +147 -0
- data/spec/spec/matchers/eql_spec.rb +41 -0
- data/spec/spec/matchers/equal_spec.rb +41 -0
- data/spec/spec/matchers/handler_spec.rb +75 -0
- data/spec/spec/matchers/has_spec.rb +37 -0
- data/spec/spec/matchers/have_spec.rb +259 -0
- data/spec/spec/matchers/include_spec.rb +33 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +85 -0
- data/spec/spec/matchers/raise_error_spec.rb +147 -0
- data/spec/spec/matchers/respond_to_spec.rb +30 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +59 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +97 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +80 -0
- data/spec/spec/mocks/mock_spec.rb +407 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/spec/spec/mocks/once_counts_spec.rb +56 -0
- data/spec/spec/mocks/options_hash_spec.rb +31 -0
- data/spec/spec/mocks/partial_mock_spec.rb +52 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
- data/spec/spec/mocks/precise_counts_spec.rb +56 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +159 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/runner/command_line_spec.rb +32 -0
- data/spec/spec/runner/context_matching_spec.rb +28 -0
- data/spec/spec/runner/context_runner_spec.rb +100 -0
- data/spec/spec/runner/context_spec.rb +405 -0
- data/spec/spec/runner/drb_command_line_spec.rb +74 -0
- data/spec/spec/runner/execution_context_spec.rb +52 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
- data/spec/spec/runner/heckle_runner_spec.rb +63 -0
- data/spec/spec/runner/heckler_spec.rb +14 -0
- data/spec/spec/runner/kernel_ext_spec.rb +16 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/object_ext_spec.rb +11 -0
- data/spec/spec/runner/option_parser_spec.rb +269 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
- data/spec/spec/runner/reporter_spec.rb +126 -0
- data/spec/spec/runner/spec_matcher_spec.rb +107 -0
- data/spec/spec/runner/spec_name_generation_spec.rb +102 -0
- data/spec/spec/runner/spec_parser_spec.rb +37 -0
- data/spec/spec/runner/specification_class_spec.rb +72 -0
- data/spec/spec/runner/specification_instance_spec.rb +160 -0
- data/spec/spec/runner/specification_should_raise_spec.rb +136 -0
- data/spec/spec/spec_classes.rb +102 -0
- data/spec/spec/translator_spec.rb +79 -0
- data/spec/spec_helper.rb +35 -0
- metadata +141 -9
- data/bin/drbspec +0 -3
- data/lib/spec/expectations/diff.rb +0 -28
- data/lib/spec/expectations/extensions/numeric.rb +0 -19
- data/lib/spec/expectations/extensions/string.rb +0 -22
- data/lib/spec/expectations/message_builder.rb +0 -13
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
context "DrbCommandLine without running local server" do
|
5
|
+
|
6
|
+
unless Config::CONFIG['ruby_install_name'] == 'jruby'
|
7
|
+
specify "should print error when there is no running local server" do
|
8
|
+
err = StringIO.new
|
9
|
+
out = StringIO.new
|
10
|
+
Spec::Runner::DrbCommandLine.run(['--version'], err, out, false)
|
11
|
+
|
12
|
+
err.rewind
|
13
|
+
err.read.should =~ /No server is running/
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "DrbCommandLine with local server" do
|
19
|
+
|
20
|
+
unless Config::CONFIG['ruby_install_name'] == 'jruby'
|
21
|
+
context_setup do
|
22
|
+
create_dummy_spec_file
|
23
|
+
DRb.start_service("druby://localhost:8989", Spec::Runner::CommandLine)
|
24
|
+
end
|
25
|
+
|
26
|
+
context_teardown do
|
27
|
+
DRb.stop_service
|
28
|
+
File.delete(@dummy_spec_filename)
|
29
|
+
end
|
30
|
+
|
31
|
+
specify "should run against local server" do
|
32
|
+
out = run_spec_via_druby(['--version'])
|
33
|
+
out.should =~ /RSpec/n
|
34
|
+
end
|
35
|
+
|
36
|
+
specify "should output green colorized text when running with --colour option" do
|
37
|
+
out = run_spec_via_druby(["--colour", @dummy_spec_filename])
|
38
|
+
out.should =~ /\e\[32m/n
|
39
|
+
end
|
40
|
+
|
41
|
+
specify "should output red colorized text when running with -c option" do
|
42
|
+
out = run_spec_via_druby(["-c", @dummy_spec_filename])
|
43
|
+
out.should =~ /\e\[31m/n
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_dummy_spec_file
|
47
|
+
@dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + '/_dummy_spec.rb'
|
48
|
+
File.open(@dummy_spec_filename, 'w') do |f|
|
49
|
+
f.write %{
|
50
|
+
context "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
|
51
|
+
specify "should be output with green bar" do
|
52
|
+
true.should be(true)
|
53
|
+
end
|
54
|
+
|
55
|
+
specify "should be output with red bar" do
|
56
|
+
violated("I wan to see a red bar!")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def run_spec_via_druby(args)
|
64
|
+
err, out = StringIO.new, StringIO.new
|
65
|
+
out.instance_eval do
|
66
|
+
def tty?; true end
|
67
|
+
end
|
68
|
+
Spec::Runner::DrbCommandLine.run(args, err, out, false, true)
|
69
|
+
out.rewind; out.read
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "ExecutionContext" do
|
4
|
+
|
5
|
+
specify "should provide duck type" do
|
6
|
+
dt = duck_type(:length)
|
7
|
+
dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
|
8
|
+
dt.matches?([]).should be_true
|
9
|
+
end
|
10
|
+
|
11
|
+
specify "should violate on :violated" do
|
12
|
+
lambda do
|
13
|
+
Spec::Runner::ExecutionContext.new(nil).violated
|
14
|
+
end.should raise_error(Spec::Expectations::ExpectationNotMetError)
|
15
|
+
end
|
16
|
+
|
17
|
+
specify "should provide mock" do
|
18
|
+
mock("thing").should be_an_instance_of(Spec::Mocks::Mock)
|
19
|
+
end
|
20
|
+
|
21
|
+
# TODO - the following two specs don't work when combined:
|
22
|
+
# specify "should provide stub" do
|
23
|
+
# thing_stub = stub("thing", :a => "A", :b => "B").should be_an_instance_of(Spec::Mocks::Mock)
|
24
|
+
# thing_stub.a.should == "A"
|
25
|
+
# thing_stub.b.should == "B"
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# TypeError in 'ExecutionContext should provide stub'
|
29
|
+
# ["a?", "as?"] is not a symbol
|
30
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/expectations/should/should.rb:66:in `send'
|
31
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/expectations/should/should.rb:66:in `__delegate_method_missing_to_target'
|
32
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/expectations/should/base.rb:53:in `method_missing'
|
33
|
+
# ./spec/spec/runner/execution_context_spec.rb:27:
|
34
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/specification.rb:55:in `execute_spec'
|
35
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/specification.rb:30:in `run'
|
36
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/context.rb:57:in `run'
|
37
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/context.rb:54:in `run'
|
38
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/context_runner.rb:23:in `run'
|
39
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/context_runner.rb:22:in `run'
|
40
|
+
# /Users/david/projects/ruby/rspec/trunk/rspec/lib/spec/runner/command_line.rb:27:in `run'
|
41
|
+
# bin/spec:4:
|
42
|
+
specify "should provide stub" do
|
43
|
+
thing_stub = stub("thing", :a => "A", :b => "B").should be_an_instance_of(Spec::Mocks::Mock)
|
44
|
+
end
|
45
|
+
|
46
|
+
specify "should add method stubs to stub" do
|
47
|
+
thing_stub = stub("thing", :a => "A", :b => "B")
|
48
|
+
thing_stub.a.should == "A"
|
49
|
+
thing_stub.b.should == "B"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
context "HtmlFormatter" do
|
5
|
+
specify "should produce HTML identical to the one we designed manually" do
|
6
|
+
root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
|
7
|
+
expected_file = File.dirname(__FILE__) + "/html_formatted-#{VERSION}.html"
|
8
|
+
expected_html = File.read(expected_file)
|
9
|
+
raise "There should be no absolute paths in html_formatted.html!!" if expected_html =~ /\/Users/n
|
10
|
+
|
11
|
+
['--diff', '--dry-run'].each do |opt|
|
12
|
+
Dir.chdir(root) do
|
13
|
+
args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/stubbing_example.rb', '--format', 'html', opt]
|
14
|
+
err = StringIO.new
|
15
|
+
out = StringIO.new
|
16
|
+
Spec::Runner::CommandLine.run(
|
17
|
+
args,
|
18
|
+
err,
|
19
|
+
out,
|
20
|
+
false
|
21
|
+
)
|
22
|
+
|
23
|
+
seconds = /\d+\.\d+ seconds/
|
24
|
+
html = out.string.gsub seconds, 'x seconds'
|
25
|
+
expected_html.gsub! seconds, 'x seconds'
|
26
|
+
|
27
|
+
if opt == '--diff'
|
28
|
+
# Uncomment this line temporarily in order to overwrite the expected with actual.
|
29
|
+
# Use with care!!!
|
30
|
+
# File.open(expected_file, 'w') {|io| io.write(html)}
|
31
|
+
|
32
|
+
html.should == expected_html
|
33
|
+
else
|
34
|
+
html.should =~ /This was a dry-run/m
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "ProgressBarFormatterDryRun" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = ProgressBarFormatter.new(@io, true)
|
10
|
+
|
11
|
+
end
|
12
|
+
specify "should not produce summary on dry run" do
|
13
|
+
@formatter.dump_summary(3, 2, 1)
|
14
|
+
@io.string.should_eql("")
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "ProgressBarFormatter failure dump with NoisyBacktraceTweaker" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@reporter = Reporter.new(ProgressBarFormatter.new(@io), NoisyBacktraceTweaker.new)
|
10
|
+
@reporter.add_context("context")
|
11
|
+
end
|
12
|
+
|
13
|
+
specify "should end with line break" do
|
14
|
+
error=Spec::Expectations::ExpectationNotMetError.new("message")
|
15
|
+
set_backtrace(error)
|
16
|
+
@reporter.spec_finished("spec", error, "spec")
|
17
|
+
@reporter.dump
|
18
|
+
@io.string.should_match(/\n\z/)
|
19
|
+
end
|
20
|
+
|
21
|
+
specify "should include context and spec name in backtrace if error in spec" do
|
22
|
+
error=RuntimeError.new("message")
|
23
|
+
set_backtrace(error)
|
24
|
+
@reporter.spec_finished("spec", error, "spec")
|
25
|
+
@reporter.dump
|
26
|
+
@io.string.should_match(/RuntimeError in 'context spec'/)
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_backtrace(error)
|
30
|
+
error.set_backtrace(["/a/b/c/d/e.rb:34:in `whatever'"])
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "ProgressBarFormatter" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = ProgressBarFormatter.new(@io)
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "should produce line break on start dump" do
|
13
|
+
@formatter.start_dump
|
14
|
+
@io.string.should_eql("\n")
|
15
|
+
end
|
16
|
+
|
17
|
+
specify "should produce standard summary" do
|
18
|
+
@formatter.dump_summary(3, 2, 1)
|
19
|
+
@io.string.should_eql("\nFinished in 3 seconds\n\n2 specifications, 1 failure\n")
|
20
|
+
end
|
21
|
+
|
22
|
+
specify "should push F for failing spec" do
|
23
|
+
@formatter.spec_failed("spec", 98, Reporter::Failure.new("c", "s", RuntimeError.new))
|
24
|
+
@io.string.should_eql("F")
|
25
|
+
end
|
26
|
+
|
27
|
+
specify "should push dot for passing spec" do
|
28
|
+
@formatter.spec_passed("spec")
|
29
|
+
@io.string.should_eql(".")
|
30
|
+
end
|
31
|
+
|
32
|
+
specify "should push line break for context" do
|
33
|
+
@formatter.add_context("context", :ignored)
|
34
|
+
@io.string.should_eql("\n")
|
35
|
+
end
|
36
|
+
|
37
|
+
specify "should push nothing on start" do
|
38
|
+
@formatter.start(4)
|
39
|
+
@io.string.should_eql("")
|
40
|
+
end
|
41
|
+
|
42
|
+
specify "should ensure two ':' in the first backtrace" do
|
43
|
+
backtrace = ["/tmp/x.rb:1", "/tmp/x.rb:2", "/tmp/x.rb:3"]
|
44
|
+
@formatter.format_backtrace(backtrace).should_eql(<<-EOE.rstrip)
|
45
|
+
/tmp/x.rb:1:
|
46
|
+
/tmp/x.rb:2:
|
47
|
+
/tmp/x.rb:3:
|
48
|
+
EOE
|
49
|
+
|
50
|
+
backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
|
51
|
+
@formatter.format_backtrace(backtrace).should_eql(<<-EOE.rstrip)
|
52
|
+
/tmp/x.rb:1: message
|
53
|
+
/tmp/x.rb:2:
|
54
|
+
/tmp/x.rb:3:
|
55
|
+
EOE
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "ProgressBarFormatter outputting to custom out" do
|
60
|
+
setup do
|
61
|
+
@out = mock("out")
|
62
|
+
@out.stub!(:puts)
|
63
|
+
@formatter = ProgressBarFormatter.new(@out)
|
64
|
+
@formatter.class.send :public, :output_to_tty?
|
65
|
+
end
|
66
|
+
|
67
|
+
teardown do
|
68
|
+
@formatter.class.send :protected, :output_to_tty?
|
69
|
+
end
|
70
|
+
|
71
|
+
specify "should not throw NoMethodError on output_to_tty?" do
|
72
|
+
@out.should_receive(:tty?).and_raise(NoMethodError)
|
73
|
+
@formatter.output_to_tty?.should be(false)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "RdocFormatterDryRun" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = RdocFormatter.new(@io, true)
|
10
|
+
end
|
11
|
+
specify "should not produce summary on dry run" do
|
12
|
+
@formatter.dump_summary(3, 2, 1)
|
13
|
+
@io.string.should_eql ""
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "RdocFormatter" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = RdocFormatter.new(@io, true)
|
10
|
+
|
11
|
+
end
|
12
|
+
specify "should produce no summary" do
|
13
|
+
@formatter.dump_summary(nil, nil, nil)
|
14
|
+
@io.string.should_be_empty
|
15
|
+
|
16
|
+
end
|
17
|
+
specify "should produce nothing on start dump" do
|
18
|
+
@formatter.start_dump
|
19
|
+
@io.string.should_be_empty
|
20
|
+
|
21
|
+
end
|
22
|
+
specify "should push out context" do
|
23
|
+
@formatter.add_context("context", :ignored)
|
24
|
+
@io.string.should_eql("# context\n")
|
25
|
+
|
26
|
+
end
|
27
|
+
specify "should push out failed spec" do
|
28
|
+
@formatter.spec_failed("spec", 98, nil)
|
29
|
+
@io.string.should_eql("# * spec [98 - FAILED]\n")
|
30
|
+
|
31
|
+
end
|
32
|
+
specify "should push out spec" do
|
33
|
+
@formatter.spec_passed("spec")
|
34
|
+
@io.string.should_eql("# * spec\n")
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "SpecdocFormatterDryRun" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = SpecdocFormatter.new(@io, true)
|
10
|
+
|
11
|
+
end
|
12
|
+
specify "should not produce summary on dry run" do
|
13
|
+
@formatter.dump_summary(3, 2, 1)
|
14
|
+
@io.string.should_eql("")
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
module Formatter
|
6
|
+
context "SpecdocFormatter" do
|
7
|
+
setup do
|
8
|
+
@io = StringIO.new
|
9
|
+
@formatter = SpecdocFormatter.new(@io)
|
10
|
+
|
11
|
+
end
|
12
|
+
specify "should produce standard summary" do
|
13
|
+
@formatter.dump_summary(3, 2, 1)
|
14
|
+
@io.string.should_eql("\nFinished in 3 seconds\n\n2 specifications, 1 failure\n")
|
15
|
+
|
16
|
+
end
|
17
|
+
specify "should push context name" do
|
18
|
+
@formatter.add_context("context", :ignored)
|
19
|
+
@io.string.should_eql("\ncontext\n")
|
20
|
+
|
21
|
+
end
|
22
|
+
specify "should push failing spec name and failure number" do
|
23
|
+
@formatter.spec_failed("spec", 98, Reporter::Failure.new("c", "s", RuntimeError.new))
|
24
|
+
@io.string.should_eql("- spec (ERROR - 98)\n")
|
25
|
+
|
26
|
+
end
|
27
|
+
specify "should push nothing on start" do
|
28
|
+
@formatter.start(5)
|
29
|
+
@io.string.should_eql("")
|
30
|
+
|
31
|
+
end
|
32
|
+
specify "should push nothing on start dump" do
|
33
|
+
@formatter.start_dump
|
34
|
+
@io.string.should_eql("")
|
35
|
+
|
36
|
+
end
|
37
|
+
specify "should push passing spec name" do
|
38
|
+
@formatter.spec_passed("spec")
|
39
|
+
@io.string.should_eql("- spec\n")
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
unless ['i386-mswin32', 'java'].index(PLATFORM)
|
3
|
+
require 'spec/runner/heckle_runner'
|
4
|
+
|
5
|
+
module Foo
|
6
|
+
class Bar
|
7
|
+
def one; end
|
8
|
+
def two; end
|
9
|
+
end
|
10
|
+
|
11
|
+
class Zap
|
12
|
+
def three; end
|
13
|
+
def four; end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "HeckleRunner" do
|
18
|
+
setup do
|
19
|
+
@heckle = mock("heckle", :null_object => true)
|
20
|
+
@context_runner = mock("context_runner")
|
21
|
+
@heckle_class = mock("heckle_class")
|
22
|
+
end
|
23
|
+
|
24
|
+
specify "should heckle all methods in all classes in a module" do
|
25
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "one", context_runner).and_return(@heckle)
|
26
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", context_runner).and_return(@heckle)
|
27
|
+
@heckle_class.should_receive(:new).with("Foo::Zap", "three", context_runner).and_return(@heckle)
|
28
|
+
@heckle_class.should_receive(:new).with("Foo::Zap", "four", context_runner).and_return(@heckle)
|
29
|
+
|
30
|
+
heckle_runner = Spec::Runner::HeckleRunner.new("Foo", @heckle_class)
|
31
|
+
heckle_runner.heckle_with(context_runner)
|
32
|
+
end
|
33
|
+
|
34
|
+
specify "should heckle all methods in a class" do
|
35
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "one", context_runner).and_return(@heckle)
|
36
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", context_runner).and_return(@heckle)
|
37
|
+
|
38
|
+
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar", @heckle_class)
|
39
|
+
heckle_runner.heckle_with(context_runner)
|
40
|
+
end
|
41
|
+
|
42
|
+
specify "should fail heckling when the class is not found" do
|
43
|
+
lambda do
|
44
|
+
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bob", @heckle_class)
|
45
|
+
heckle_runner.heckle_with(context_runner)
|
46
|
+
end.should raise_error(StandardError, "Heckling failed - \"Foo::Bob\" is not a known class or module")
|
47
|
+
end
|
48
|
+
|
49
|
+
specify "should heckle specific method in a class (with #)" do
|
50
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", context_runner).and_return(@heckle)
|
51
|
+
|
52
|
+
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
|
53
|
+
heckle_runner.heckle_with(context_runner)
|
54
|
+
end
|
55
|
+
|
56
|
+
specify "should heckle specific method in a class (with .)" do
|
57
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", context_runner).and_return(@heckle)
|
58
|
+
|
59
|
+
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar.two", @heckle_class)
|
60
|
+
heckle_runner.heckle_with(context_runner)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|