infinity_test 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.infinity_test +30 -2
- data/.rspec +2 -0
- data/.rvmrc +1 -1
- data/Gemfile +10 -2
- data/Gemfile.lock +52 -12
- data/History.markdown +86 -2
- data/LICENSE.txt +22 -0
- data/Rakefile +25 -9
- data/Readme.markdown +47 -23
- data/TODO.markdown +12 -0
- data/Tasks +2 -3
- data/VERSION.yml +2 -2
- data/bin/infinity_test +1 -1
- data/features/heuristics.feature +23 -0
- data/features/support/env.rb +2 -0
- data/images/fuuu/failure.png +0 -0
- data/images/fuuu/pending.png +0 -0
- data/images/fuuu/sucess.png +0 -0
- data/infinity_test.gemspec +62 -29
- data/lib/infinity_test.rb +29 -9
- data/lib/infinity_test/application.rb +222 -68
- data/lib/infinity_test/application_library/rails.rb +94 -0
- data/lib/infinity_test/application_library/rubygems.rb +43 -0
- data/lib/infinity_test/binary_path.rb +30 -8
- data/lib/infinity_test/builder.rb +56 -0
- data/lib/infinity_test/command.rb +18 -24
- data/lib/infinity_test/configuration.rb +96 -44
- data/lib/infinity_test/continuous_testing.rb +17 -39
- data/lib/infinity_test/dependencies.rb +76 -41
- data/lib/infinity_test/environment.rb +15 -0
- data/lib/infinity_test/heuristics.rb +36 -0
- data/lib/infinity_test/heuristics_helper.rb +9 -0
- data/lib/infinity_test/options.rb +56 -19
- data/lib/infinity_test/runner.rb +25 -17
- data/lib/infinity_test/test_framework.rb +109 -0
- data/lib/infinity_test/test_library/bacon.rb +55 -0
- data/lib/infinity_test/test_library/cucumber.rb +22 -0
- data/lib/infinity_test/test_library/rspec.rb +58 -0
- data/lib/infinity_test/test_library/test_unit.rb +46 -0
- data/spec/factories/company/Gemfile +0 -0
- data/spec/factories/infinity_test_example +2 -2
- data/spec/infinity_test/application_library/rails_spec.rb +140 -0
- data/spec/infinity_test/application_library/rubygems_spec.rb +52 -0
- data/spec/infinity_test/application_spec.rb +274 -50
- data/spec/infinity_test/binary_path_spec.rb +72 -0
- data/spec/infinity_test/builder_spec.rb +7 -0
- data/spec/infinity_test/command_spec.rb +13 -14
- data/spec/infinity_test/configuration_spec.rb +183 -57
- data/spec/infinity_test/continuous_testing_spec.rb +19 -1
- data/spec/infinity_test/environment_spec.rb +23 -0
- data/spec/infinity_test/heuristics_helper_spec.rb +15 -0
- data/spec/infinity_test/heuristics_spec.rb +127 -0
- data/spec/infinity_test/options_spec.rb +48 -26
- data/spec/infinity_test/runner_spec.rb +37 -29
- data/spec/infinity_test/test_framework_spec.rb +127 -0
- data/spec/infinity_test/test_library/bacon_spec.rb +150 -0
- data/spec/infinity_test/test_library/cucumber_spec.rb +8 -0
- data/spec/infinity_test/test_library/rspec_spec.rb +185 -0
- data/spec/infinity_test/test_library/test_unit_spec.rb +184 -0
- data/spec/infinity_test_spec.rb +23 -12
- data/spec/spec_helper.rb +86 -30
- metadata +62 -32
- data/lib/infinity_test/notifications/growl.rb +0 -15
- data/lib/infinity_test/notifications/lib_notify.rb +0 -11
- data/lib/infinity_test/rspec.rb +0 -87
- data/lib/infinity_test/test_unit.rb +0 -74
- data/spec/infinity_test/notifications/growl_spec.rb +0 -9
- data/spec/infinity_test/notifications/lib_notify_spec.rb +0 -9
- data/spec/infinity_test/rspec_spec.rb +0 -189
- data/spec/infinity_test/test_unit_spec.rb +0 -182
- data/spec/spec.opts +0 -1
@@ -2,6 +2,24 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module InfinityTest
|
4
4
|
describe ContinuousTesting do
|
5
|
+
let(:continuous_testing) { ContinuousTesting.new }
|
6
|
+
it "should keep the application object" do
|
7
|
+
continuous_testing.application.should equal InfinityTest.application
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should keep the watchr object" do
|
11
|
+
continuous_testing.watchr.should equal InfinityTest.watchr
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#initialize_watchr!' do
|
15
|
+
|
16
|
+
it "should call add_signal and run_with_watchr!" do
|
17
|
+
continuous_testing.should_receive(:add_signal)
|
18
|
+
continuous_testing.should_receive(:run_with_watchr!)
|
19
|
+
continuous_testing.initialize_watchr!
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
5
23
|
|
6
24
|
end
|
7
|
-
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module InfinityTest
|
4
|
+
describe Environment do
|
5
|
+
include Environment
|
6
|
+
describe '#environments' do
|
7
|
+
it "should raise a exception if not passed a block" do
|
8
|
+
expect { environments }.should raise_exception
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should run in the scope of RVM environment" do
|
12
|
+
pending
|
13
|
+
expect {
|
14
|
+
environments do |environment, ruby_version|
|
15
|
+
environment.should be_instance_of(RVM::Environment)
|
16
|
+
end
|
17
|
+
}.to_not raise_exception
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module InfinityTest
|
4
|
+
describe HeuristicsHelper do
|
5
|
+
include HeuristicsHelper
|
6
|
+
|
7
|
+
describe '#heuristics' do
|
8
|
+
it "should be instance of InfinityTest Heuristics" do
|
9
|
+
heuristics do
|
10
|
+
end.should be_instance_of(InfinityTest::Heuristics)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module InfinityTest
|
4
|
+
describe Heuristics do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@application = application_with_rspec
|
8
|
+
InfinityTest.stub!(:watchr).and_return(Watchr::Script.new)
|
9
|
+
InfinityTest.stub!(:application).and_return(@application)
|
10
|
+
@heuristics = Heuristics.new
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#initialize' do
|
14
|
+
|
15
|
+
it "should create the patterns instance of Hash" do
|
16
|
+
@heuristics.patterns.should be_instance_of(Hash)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should create the script instance variable" do
|
20
|
+
@heuristics.script.should be_instance_of(Watchr::Script)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have empty rules" do
|
24
|
+
@heuristics.script.rules.should be_empty
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#add' do
|
30
|
+
|
31
|
+
it "should add the watch method and persist the pattern" do
|
32
|
+
@heuristics.add("^lib/*/(.*)\.rb")
|
33
|
+
@heuristics.script.rules.should have(1).items
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should add the pattern to #patterns instance" do
|
37
|
+
@heuristics.add(/^(test|spec)\/fixtures\/(.*).yml$/)
|
38
|
+
@heuristics.should have_pattern(/^(test|spec)\/fixtures\/(.*).yml$/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should add other pattern to #patterns instance" do
|
42
|
+
@heuristics.add("^lib/*/(.*)\.rb")
|
43
|
+
@heuristics.should have_pattern("^lib/*/(.*)\.rb")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should add the block object to #patterns instance" do
|
47
|
+
proc = Proc.new { 'a' }
|
48
|
+
@heuristics.add("^lib/*/(.*)\.rb", &proc)
|
49
|
+
@heuristics.patterns.should have_value(proc)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#all' do
|
55
|
+
|
56
|
+
it "should return all the patterns" do
|
57
|
+
@heuristics.add('^lib/*_spec.rb')
|
58
|
+
@heuristics.all.should eql ['^lib/*_spec.rb']
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should return all the patterns the InfinityTest will watch" do
|
62
|
+
@heuristics.add('^config/application.rb')
|
63
|
+
@heuristics.add('^spec/spec_helper.rb')
|
64
|
+
@heuristics.all.should have(2).items
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should include all the patterns the InfinityTest will watch each" do
|
68
|
+
@heuristics.add '^config/application.rb'
|
69
|
+
@heuristics.add '^spec/spec_helper.rb'
|
70
|
+
all = @heuristics.all
|
71
|
+
all.should include '^config/application.rb'
|
72
|
+
all.should include '^spec/spec_helper.rb'
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#run' do
|
78
|
+
|
79
|
+
let(:binary_path_match_data) { match_data = /(infinity_test\/binary_path)/.match('infinity_test/binary_path') }
|
80
|
+
|
81
|
+
it "should call the contruct commands for test file" do
|
82
|
+
@application.should_receive(:run_commands_for_file).with('spec/infinity_test/binary_path_spec.rb')
|
83
|
+
@heuristics.run(:test_for => binary_path_match_data)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should run all the test files" do
|
87
|
+
@application.should_receive(:run_commands_for_file).with(@application.all_test_files.join(' '))
|
88
|
+
@heuristics.run(:all => :files)
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#remove' do
|
94
|
+
|
95
|
+
before do
|
96
|
+
@heuristics.add('^lib/*/(.*)_spec.rb')
|
97
|
+
@heuristics.add('^spec/*/(.*)_spec.rb')
|
98
|
+
end
|
99
|
+
|
100
|
+
it { @heuristics.patterns.should have(2).items }
|
101
|
+
|
102
|
+
it { @heuristics.script.rules.should have(2).items }
|
103
|
+
|
104
|
+
it "should remove the pattern from patterns" do
|
105
|
+
@heuristics.remove('^lib/*/(.*)_spec.rb')
|
106
|
+
@heuristics.should_not have_pattern('^lib/*/(.*)_spec.rb')
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should remove the rules from watchr" do
|
110
|
+
@heuristics.remove('^lib/*/(.*)_spec.rb')
|
111
|
+
@heuristics.script.rules.should have(1).items
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should remove all the rules from watchr" do
|
115
|
+
@heuristics.remove :all
|
116
|
+
@heuristics.script.rules.should be_empty
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should remove all the patterns" do
|
120
|
+
@heuristics.remove :all
|
121
|
+
@heuristics.patterns.should be_empty
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
@@ -2,68 +2,90 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module InfinityTest
|
4
4
|
describe Options do
|
5
|
-
|
5
|
+
|
6
6
|
context "when parsing" do
|
7
|
-
|
7
|
+
|
8
8
|
it "should parse --rspec and return rspec" do
|
9
9
|
parse_options('--rspec')
|
10
10
|
@options[:test_framework].should equal :rspec
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should not return rspec as test framework when not parse rspec" do
|
14
14
|
parse_options('--test-unit')
|
15
15
|
@options[:test_framework].should_not equal :rspec
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
|
+
it "should parse --bacon and return bacon" do
|
19
|
+
parse_options('--bacon')
|
20
|
+
@options[:test_framework].should equal :bacon
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not parse --test-unit" do
|
24
|
+
parse_options('--rspec')
|
25
|
+
@options[:test_framework].should_not equal :bacon
|
26
|
+
end
|
27
|
+
|
18
28
|
it "should parse --test-unit and return test_unit" do
|
19
29
|
parse_options('--test-unit')
|
20
30
|
@options[:test_framework].should equal :test_unit
|
21
31
|
end
|
22
|
-
|
32
|
+
|
23
33
|
it "should not parse --test-unit" do
|
24
34
|
parse_options('--rspec')
|
25
35
|
@options[:test_framework].should_not equal :test_unit
|
26
36
|
end
|
27
|
-
|
37
|
+
|
28
38
|
it "should parse --rvm-versions and return an array" do
|
29
39
|
parse_options('--rubies=1.8.6,1.8.7')
|
30
40
|
@options[:rubies].should eql '1.8.6,1.8.7'
|
31
41
|
end
|
32
|
-
|
42
|
+
|
33
43
|
it "should parse --rvm-versions with dashes" do
|
34
44
|
parse_options('--rubies=1.8.7-p249,1.9.1-p378')
|
35
45
|
@options[:rubies].should eql '1.8.7-p249,1.9.1-p378'
|
36
46
|
end
|
37
|
-
|
47
|
+
|
38
48
|
it "should parse --verbose" do
|
39
49
|
parse_options('--verbose')
|
40
50
|
@options[:verbose].should be_true
|
41
51
|
end
|
42
|
-
|
43
|
-
end
|
44
52
|
|
45
|
-
|
53
|
+
it "should parse --skip-bundler" do
|
54
|
+
parse_options('--skip-bundler')
|
55
|
+
@options[:skip_bundler?].should be_true
|
56
|
+
end
|
46
57
|
|
47
|
-
it "should return
|
48
|
-
parse_options('--
|
49
|
-
@options.
|
58
|
+
it "should return false for --skip-bundler option" do
|
59
|
+
parse_options('--rails')
|
60
|
+
@options[:skip_bundler?].should be_false
|
50
61
|
end
|
51
|
-
|
52
|
-
it "should
|
53
|
-
parse_options('--
|
54
|
-
@options.
|
62
|
+
|
63
|
+
it "should return rails as app framework when parse rails" do
|
64
|
+
parse_options('--rails')
|
65
|
+
@options[:app_framework].should equal :rails
|
55
66
|
end
|
56
|
-
|
57
|
-
it "should
|
58
|
-
parse_options('--
|
59
|
-
@options.
|
67
|
+
|
68
|
+
it "should return rubygems as app framework when parse rubygems" do
|
69
|
+
parse_options('--rubygems')
|
70
|
+
@options[:app_framework].should equal :rubygems
|
60
71
|
end
|
61
|
-
|
72
|
+
|
73
|
+
it "should parse the cucumber option" do
|
74
|
+
pending
|
75
|
+
parse_options('--cucumber')
|
76
|
+
@options[:cucumber].should be_true
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should parse the patterns options" do
|
80
|
+
parse_options('--heuristics')
|
81
|
+
@options[:show_heuristics?].should be_true
|
82
|
+
end
|
83
|
+
|
62
84
|
end
|
63
|
-
|
85
|
+
|
64
86
|
def parse_options(*arguments)
|
65
87
|
@options = InfinityTest::Options.new(arguments)
|
66
88
|
end
|
67
|
-
|
89
|
+
|
68
90
|
end
|
69
|
-
end
|
91
|
+
end
|
@@ -1,34 +1,42 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
3
|
+
describe InfinityTest::Runner do
|
4
|
+
|
5
|
+
let(:runner_class) { InfinityTest::Runner }
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
|
9
|
+
it "should set the application object" do
|
10
|
+
runner_class.new(['--test-unit']).application.should be_instance_of(InfinityTest::Application)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should set the Option Object" do
|
14
|
+
runner_class.new(['--rspec']).options.should be_instance_of(InfinityTest::Options)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#run!' do
|
20
|
+
let(:heuristics_runner) { runner_class.new(['--heuristics']) }
|
21
|
+
|
22
|
+
it "should call list heuristics" do
|
23
|
+
heuristics_runner.should_receive(:list_heuristics!)
|
24
|
+
heuristics_runner.run!
|
18
25
|
end
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#start_continuous_testing!" do
|
30
|
+
let(:empty_runner) { InfinityTest::Runner.new([]) }
|
31
|
+
let(:mock_continuous_testing) { @mock ||= mock(InfinityTest::ContinuousTesting) }
|
32
|
+
|
33
|
+
it "should call start for Continuous Testing" do
|
34
|
+
application = application_with_rspec
|
35
|
+
InfinityTest::ContinuousTesting.should_receive(:new).and_return(mock_continuous_testing)
|
36
|
+
mock_continuous_testing.should_receive(:start!)
|
37
|
+
empty_runner.start_continuous_testing!
|
31
38
|
end
|
32
|
-
|
39
|
+
|
33
40
|
end
|
34
|
-
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module InfinityTest
|
4
|
+
|
5
|
+
class SomeFramework < TestFramework
|
6
|
+
parse_results :examples => /(\d+) example/, :failures => /(\d+) failure/, :pending => /(\d+) pending/
|
7
|
+
end
|
8
|
+
|
9
|
+
class OtherFramework < TestFramework
|
10
|
+
parse_results :tests => /(\d+) tests/, :assertions => /(\d+) assertions/, :failures => /(\d+) failures/, :errors => /(\d+) errors/
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "Test Framework" do
|
14
|
+
|
15
|
+
let(:some_framework) { SomeFramework.new }
|
16
|
+
let(:other_framework) { OtherFramework.new }
|
17
|
+
|
18
|
+
describe '#application' do
|
19
|
+
it { some_framework.application.should equal InfinityTest.application}
|
20
|
+
it { other_framework.application.should equal InfinityTest.application}
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#parse_results' do
|
24
|
+
|
25
|
+
it "should create the examples instance variable" do
|
26
|
+
some_framework.parse_results("0 examples, 0 failures, 0 pending")
|
27
|
+
some_framework.examples.should == 0
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should create the tests instance variable" do
|
31
|
+
other_framework.parse_results("120 tests, 200 assertions, 0 failures, 0 errors")
|
32
|
+
other_framework.tests.should == 120
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should create the assertions instance variable" do
|
36
|
+
other_framework.parse_results("120 tests, 200 assertions, 0 failures, 0 errors")
|
37
|
+
other_framework.assertions.should == 200
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should create the failures instance variable" do
|
41
|
+
some_framework.parse_results("0 examples, 1 failures, 0 pending")
|
42
|
+
some_framework.failures.should == 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should create the failures instance variable" do
|
46
|
+
other_framework.parse_results("120 tests, 200 assertions, 10 failures, 0 errors")
|
47
|
+
other_framework.failures.should == 10
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should create the pending instance variable" do
|
51
|
+
some_framework.parse_results("0 examples, 0 failures, 1 pending")
|
52
|
+
some_framework.pending.should == 1
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should create the example instance variable" do
|
56
|
+
some_framework.parse_results(" ..... \n10 examples, 0 failures, 0 pending")
|
57
|
+
some_framework.examples.should == 10
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should create a message based in the keys of framework" do
|
61
|
+
some_framework.parse_results(".....\n200 examples, 0 failures, 1 pending")
|
62
|
+
some_framework.message.should == "200 examples, 0 failures, 1 pending"
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should create a error message to runtime errors and similars" do
|
66
|
+
some_framework.parse_results("RunTimeError: undefined method 'my_method' ...")
|
67
|
+
some_framework.message.should == "An exception occurred"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should parse the results correctly(when not have in last line)" do
|
71
|
+
other_framework.parse_results("....\n10 tests, 35 assertions, 0 failures, 0 errors\nTest run options: --seed 18841")
|
72
|
+
other_framework.tests.should == 10
|
73
|
+
other_framework.assertions.should == 35
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should clear the term ansi colors strings" do
|
77
|
+
other_framework.parse_results("seconds\n\e[33m406 tests, 34 assertions, 0 failures, 2 errors\e[0m\n")
|
78
|
+
other_framework.message.should == "406 tests, 34 assertions, 0 failures, 2 errors"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should clear the term ansi colors strings" do
|
82
|
+
some_framework.parse_results("seconds\n\e[33m406 examples, 0 failures, 2 pending\e[0m\n")
|
83
|
+
some_framework.message.should == "406 examples, 0 failures, 2 pending"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should accept other formats (like Fuubar)" do
|
87
|
+
some_framework.parse_results("299 examples: 99% |ooooooooooooooooooooooooooooooooooooooooo | ETA: 00:00:00\r\e[0m\e[31m\e[0m\e[31m297/298: 100% |oooooooooooooooooooooooooooooooooooooooooo| ETA: 00:00:00\r\e[0m\e[31m298/298: 100% |oooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:00\n\e[0m\nPending:\n\e[33m InfinityTest::Environment#environments should run in the scope of RVM environment\e[0m\n\e[90m # No reason given\e[0m\n\e[90m # \e[0m\n\nFinished in 0.43473 seconds\n\e[31m298 examples, 1 failure, 1 pending\e[0m\n")
|
88
|
+
some_framework.message.should == "298 examples, 1 failure, 1 pending"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should raise error when not have patterns" do
|
92
|
+
lambda {
|
93
|
+
class Abc < TestFramework
|
94
|
+
parse_results({})
|
95
|
+
end
|
96
|
+
}.should raise_exception(ArgumentError, 'patterns should not be empty')
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#test_message' do
|
102
|
+
|
103
|
+
it "should parse the message in the tests results" do
|
104
|
+
some_framework.test_message("\n880 examples, 0 failures, 3 pending\n", { :example => /(\d+) example/}).should eql '880 examples, 0 failures, 3 pending'
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should parse the message in the tests results" do
|
108
|
+
some_framework.test_message("\n880 examples, 0 failures", { :pending => /(\d+) pending/, :example => /(\d+) example/ }).should eql '880 examples, 0 failures'
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should parse the message in the tests results" do
|
112
|
+
some_framework.test_message("\n880 examples, 0 failures", { :pending => /(\d+) pending/, :example => /(\d+) example/, :errors => /(\d+) errors/ }).should eql '880 examples, 0 failures'
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should parse message when ==== is the last line" do
|
116
|
+
some_framework.test_message("\n880 examples, 0 failures\n============", { :example => /(\d+) example/}).should == '880 examples, 0 failures'
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should return nil when not have any patterns" do
|
120
|
+
other_framework.test_message("NameError: You fail!! by Chuck Norris", { :pending => /(\d+) pending/, :example => /(\d+) example/ }).should be_nil
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|