rspec 0.7.5.1 → 0.8.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/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
|