simplecov 0.3.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/.document +5 -0
- data/.gitignore +24 -0
- data/LICENSE +20 -0
- data/README.rdoc +43 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/simplecov.rb +107 -0
- data/lib/simplecov/adapters.rb +47 -0
- data/lib/simplecov/configuration.rb +174 -0
- data/lib/simplecov/filter.rb +35 -0
- data/lib/simplecov/formatter.rb +7 -0
- data/lib/simplecov/formatter/simple_formatter.rb +15 -0
- data/lib/simplecov/merge_helpers.rb +37 -0
- data/lib/simplecov/result.rb +73 -0
- data/lib/simplecov/result_merger.rb +46 -0
- data/lib/simplecov/source_file.rb +68 -0
- data/simple_cov.gemspec +81 -0
- data/simplecov.gemspec +82 -0
- data/test/fixtures/app/controllers/sample_controller.rb +10 -0
- data/test/fixtures/app/models/user.rb +10 -0
- data/test/fixtures/resultset1.rb +4 -0
- data/test/fixtures/resultset2.rb +5 -0
- data/test/fixtures/sample.rb +10 -0
- data/test/helper.rb +14 -0
- data/test/test_filters.rb +73 -0
- data/test/test_merge_helpers.rb +92 -0
- data/test/test_result.rb +133 -0
- data/test/test_source_file.rb +49 -0
- data/test/test_source_file_line.rb +110 -0
- metadata +117 -0
data/test/helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
require 'simplecov'
|
8
|
+
SimpleCov.coverage_dir('tmp/coverage')
|
9
|
+
|
10
|
+
class Test::Unit::TestCase
|
11
|
+
def source_fixture(filename)
|
12
|
+
File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', filename))
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestFilters < Test::Unit::TestCase
|
4
|
+
context "A source file initialized with some coverage data" do
|
5
|
+
setup do
|
6
|
+
@source_file = SimpleCov::SourceFile.new(source_fixture('sample.rb'), [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil])
|
7
|
+
end
|
8
|
+
|
9
|
+
should "pass a new SimpleCov::StringFilter 'foobar'" do
|
10
|
+
assert SimpleCov::StringFilter.new('foobar').passes?(@source_file)
|
11
|
+
end
|
12
|
+
|
13
|
+
should "pass a new SimpleCov::StringFilter 'some/path'" do
|
14
|
+
assert SimpleCov::StringFilter.new('some/path').passes?(@source_file)
|
15
|
+
end
|
16
|
+
|
17
|
+
should "not pass a new SimpleCov::StringFilter 'test/fixtures'" do
|
18
|
+
assert !SimpleCov::StringFilter.new('test/fixtures').passes?(@source_file)
|
19
|
+
end
|
20
|
+
|
21
|
+
should "not pass a new SimpleCov::StringFilter 'test/fixtures/sample.rb'" do
|
22
|
+
assert !SimpleCov::StringFilter.new('test/fixtures/sample.rb').passes?(@source_file)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "not pass a new SimpleCov::StringFilter 'sample.rb'" do
|
26
|
+
assert !SimpleCov::StringFilter.new('sample.rb').passes?(@source_file)
|
27
|
+
end
|
28
|
+
|
29
|
+
should "pass a new SimpleCov::BlockFilter that is not applicable" do
|
30
|
+
assert SimpleCov::BlockFilter.new(Proc.new {|s| File.basename(s.filename) == 'foo.rb'}).passes?(@source_file)
|
31
|
+
end
|
32
|
+
|
33
|
+
should "not pass a new SimpleCov::BlockFilter that is applicable" do
|
34
|
+
assert !SimpleCov::BlockFilter.new(Proc.new {|s| File.basename(s.filename) == 'sample.rb'}).passes?(@source_file)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "with no filters set up and a basic source file in an array" do
|
39
|
+
setup do
|
40
|
+
SimpleCov.filters = []
|
41
|
+
@files = [SimpleCov::SourceFile.new(source_fixture('sample.rb'), [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil])]
|
42
|
+
end
|
43
|
+
|
44
|
+
should "return 0 items after executing SimpleCov.filtered on files when using a 'sample' string filter" do
|
45
|
+
SimpleCov.add_filter "sample"
|
46
|
+
assert_equal 0, SimpleCov.filtered(@files).count
|
47
|
+
end
|
48
|
+
|
49
|
+
should "return 0 items after executing SimpleCov.filtered on files when using a 'test/fixtures/' string filter" do
|
50
|
+
SimpleCov.add_filter "test/fixtures"
|
51
|
+
assert_equal 0, SimpleCov.filtered(@files).count
|
52
|
+
end
|
53
|
+
|
54
|
+
should "return 1 item after executing SimpleCov.filtered on files when using a 'fooo' string filter" do
|
55
|
+
SimpleCov.add_filter "fooo"
|
56
|
+
assert_equal 1, SimpleCov.filtered(@files).count
|
57
|
+
end
|
58
|
+
|
59
|
+
should "return 0 items after executing SimpleCov.filtered on files when using a block filter that returns true" do
|
60
|
+
SimpleCov.add_filter do |src_file|
|
61
|
+
true
|
62
|
+
end
|
63
|
+
assert_equal 0, SimpleCov.filtered(@files).count
|
64
|
+
end
|
65
|
+
|
66
|
+
should "return 1 item after executing SimpleCov.filtered on files when using an always-false block filter" do
|
67
|
+
SimpleCov.add_filter do |src_file|
|
68
|
+
false
|
69
|
+
end
|
70
|
+
assert_equal 1, SimpleCov.filtered(@files).count
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestMergeHelpers < Test::Unit::TestCase
|
4
|
+
context "With two faked coverage resultsets" do
|
5
|
+
setup do
|
6
|
+
SimpleCov.use_merging true
|
7
|
+
@resultset1 = {source_fixture('sample.rb') => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
|
8
|
+
source_fixture('app/models/user.rb') => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
|
9
|
+
source_fixture('app/controllers/sample_controller.rb') => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
|
10
|
+
source_fixture('resultset1.rb') => [1, 1, 1, 1]}
|
11
|
+
|
12
|
+
@resultset2 = {source_fixture('sample.rb') => [1, nil, 1, 1, nil, nil, 1, 1, nil, nil],
|
13
|
+
source_fixture('app/models/user.rb') => [nil, 1, 5, 1, nil, nil, 1, 0, nil, nil],
|
14
|
+
source_fixture('app/controllers/sample_controller.rb') => [nil, 3, 1, nil, nil, nil, 1, 0, nil, nil],
|
15
|
+
source_fixture('resultset2.rb') => [nil, 1, 1, nil]}
|
16
|
+
end
|
17
|
+
|
18
|
+
context "a merge" do
|
19
|
+
setup do
|
20
|
+
assert @merged = @resultset1.merge_resultset(@resultset2)
|
21
|
+
end
|
22
|
+
|
23
|
+
should "have proper results for sample.rb" do
|
24
|
+
assert_equal [1, 1, 2, 2, nil, nil, 2, 2, nil, nil], @merged[source_fixture('sample.rb')]
|
25
|
+
end
|
26
|
+
|
27
|
+
should "have proper results for user.rb" do
|
28
|
+
assert_equal [nil, 2, 6, 2, nil, nil, 2, 0, nil, nil], @merged[source_fixture('app/models/user.rb')]
|
29
|
+
end
|
30
|
+
|
31
|
+
should "have proper results for sample_controller.rb" do
|
32
|
+
assert_equal [nil, 4, 2, 1, nil, nil, 2, 0, nil, nil], @merged[source_fixture('app/controllers/sample_controller.rb')]
|
33
|
+
end
|
34
|
+
|
35
|
+
should "have proper results for resultset1.rb" do
|
36
|
+
assert_equal [1, 1, 1, 1], @merged[source_fixture('resultset1.rb')]
|
37
|
+
end
|
38
|
+
|
39
|
+
should "have proper results for resultset2.rb" do
|
40
|
+
assert_equal [nil, 1, 1, nil], @merged[source_fixture('resultset2.rb')]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "and results generated from those" do
|
45
|
+
setup do
|
46
|
+
system "rm #{SimpleCov::ResultMerger.resultset_path}" if File.exist?(SimpleCov::ResultMerger.resultset_path)
|
47
|
+
@result1 = SimpleCov::Result.new(@resultset1)
|
48
|
+
@result1.command_name = "result1"
|
49
|
+
@result2 = SimpleCov::Result.new(@resultset2)
|
50
|
+
@result2.command_name = "result2"
|
51
|
+
end
|
52
|
+
|
53
|
+
context "with stored results" do
|
54
|
+
setup do
|
55
|
+
assert SimpleCov::ResultMerger.store_result(@result1)
|
56
|
+
assert SimpleCov::ResultMerger.store_result(@result2)
|
57
|
+
end
|
58
|
+
|
59
|
+
should "have stored data in resultset_path yaml file" do
|
60
|
+
assert File.readlines(SimpleCov::ResultMerger.resultset_path).length > 50
|
61
|
+
end
|
62
|
+
|
63
|
+
should "return a hash containing keys ['result1' and 'result2'] for resultset" do
|
64
|
+
assert_equal ['result1', 'result2'], SimpleCov::ResultMerger.resultset.keys.sort
|
65
|
+
end
|
66
|
+
|
67
|
+
should "return proper values for merged_result" do
|
68
|
+
assert_equal [nil, 2, 6, 2, nil, nil, 2, 0, nil, nil], SimpleCov::ResultMerger.merged_result.source_files.find {|s| s.filename =~ /user/}.lines.map(&:coverage)
|
69
|
+
end
|
70
|
+
|
71
|
+
context "with second result way above the merge_timeout" do
|
72
|
+
setup do
|
73
|
+
@result2.created_at = Time.mktime(Time.now.year, Time.now.month, Time.now.day-2)
|
74
|
+
assert SimpleCov::ResultMerger.store_result(@result2)
|
75
|
+
end
|
76
|
+
|
77
|
+
should "have only one result in SimpleCov::ResultMerger.results" do
|
78
|
+
assert_equal 1, SimpleCov::ResultMerger.results.length
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "with merging disabled" do
|
83
|
+
setup { SimpleCov.use_merging false }
|
84
|
+
|
85
|
+
should "return nil for SimpleCov.result" do
|
86
|
+
assert_nil SimpleCov.result
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/test/test_result.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestResult < Test::Unit::TestCase
|
4
|
+
context "With a (mocked) Coverage.result" do
|
5
|
+
setup do
|
6
|
+
SimpleCov.filters = []
|
7
|
+
SimpleCov.groups = {}
|
8
|
+
SimpleCov.formatter = nil
|
9
|
+
@original_result = {source_fixture('sample.rb') => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
|
10
|
+
source_fixture('app/models/user.rb') => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
|
11
|
+
source_fixture('app/controllers/sample_controller.rb') => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil]}
|
12
|
+
end
|
13
|
+
|
14
|
+
context "a simple cov result initialized from that" do
|
15
|
+
setup { @result = SimpleCov::Result.new(@original_result) }
|
16
|
+
|
17
|
+
should "have 3 filenames" do
|
18
|
+
assert_equal 3, @result.filenames.count
|
19
|
+
end
|
20
|
+
|
21
|
+
should "have 3 source files" do
|
22
|
+
assert_equal 3, @result.source_files.count
|
23
|
+
assert @result.source_files.all? {|s| s.instance_of?(SimpleCov::SourceFile)}, "Not alL instances are of SimpleCov::SourceFile type"
|
24
|
+
end
|
25
|
+
|
26
|
+
should "have files equal to source_files" do
|
27
|
+
assert_equal @result.files, @result.source_files
|
28
|
+
end
|
29
|
+
|
30
|
+
should "have 86.7 covered percent" do
|
31
|
+
assert_equal 86.7, @result.covered_percent.round(1)
|
32
|
+
end
|
33
|
+
|
34
|
+
context "dumped with to_yaml" do
|
35
|
+
setup { @yaml = @result.to_yaml }
|
36
|
+
should("be a string") { assert_equal String, @yaml.class }
|
37
|
+
|
38
|
+
context "loaded back with from_yaml" do
|
39
|
+
setup { @dumped_result = SimpleCov::Result.from_yaml(@yaml) }
|
40
|
+
|
41
|
+
should "have 3 source files" do
|
42
|
+
assert_equal @result.source_files.count, @dumped_result.source_files.count
|
43
|
+
end
|
44
|
+
|
45
|
+
should "have the same covered_percent" do
|
46
|
+
assert_equal @result.covered_percent, @dumped_result.covered_percent
|
47
|
+
end
|
48
|
+
|
49
|
+
should "have the same created_at" do
|
50
|
+
assert_equal @result.created_at, @dumped_result.created_at
|
51
|
+
end
|
52
|
+
|
53
|
+
should "have the same command_name" do
|
54
|
+
assert_equal @result.command_name, @dumped_result.command_name
|
55
|
+
end
|
56
|
+
|
57
|
+
should "have the same original_result" do
|
58
|
+
assert_equal @result.original_result, @dumped_result.original_result
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with some filters set up" do
|
65
|
+
setup do
|
66
|
+
SimpleCov.add_filter 'sample.rb'
|
67
|
+
end
|
68
|
+
|
69
|
+
should "have 2 files in a new simple cov result" do
|
70
|
+
assert_equal 2, SimpleCov::Result.new(@original_result).source_files.length
|
71
|
+
end
|
72
|
+
|
73
|
+
should "have 80 covered percent" do
|
74
|
+
assert_equal 80, SimpleCov::Result.new(@original_result).covered_percent
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "with groups set up for all files" do
|
79
|
+
setup do
|
80
|
+
SimpleCov.add_group 'Models', 'app/models'
|
81
|
+
SimpleCov.add_group 'Controllers', 'app/controllers'
|
82
|
+
SimpleCov.add_group 'Other' do |src_file|
|
83
|
+
File.basename(src_file.filename) == 'sample.rb'
|
84
|
+
end
|
85
|
+
@result = SimpleCov::Result.new(@original_result)
|
86
|
+
end
|
87
|
+
|
88
|
+
should "have 3 groups" do
|
89
|
+
assert_equal 3, @result.groups.length
|
90
|
+
end
|
91
|
+
|
92
|
+
should "have user.rb in 'Models' group" do
|
93
|
+
assert_equal 'user.rb', File.basename(@result.groups['Models'].first.filename)
|
94
|
+
end
|
95
|
+
|
96
|
+
should "have sample_controller.rb in 'Controllers' group" do
|
97
|
+
assert_equal 'sample_controller.rb', File.basename(@result.groups['Controllers'].first.filename)
|
98
|
+
end
|
99
|
+
|
100
|
+
context "and simple formatter being used" do
|
101
|
+
setup {SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter}
|
102
|
+
|
103
|
+
should "return a formatted string with result.format!" do
|
104
|
+
assert_equal String, @result.format!.class
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "with groups set up that do not match all files" do
|
110
|
+
setup do
|
111
|
+
SimpleCov.configure do
|
112
|
+
add_group 'Models', 'app/models'
|
113
|
+
add_group 'Controllers', 'app/controllers'
|
114
|
+
end
|
115
|
+
@result = SimpleCov::Result.new(@original_result)
|
116
|
+
end
|
117
|
+
|
118
|
+
should "have 3 groups" do
|
119
|
+
assert_equal 3, @result.groups.length
|
120
|
+
end
|
121
|
+
|
122
|
+
should "have 1 item per group" do
|
123
|
+
@result.groups.each do |name, files|
|
124
|
+
assert_equal 1, files.length, "Group #{name} should have 1 file"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
should "have sample.rb in 'Ungrouped' group" do
|
129
|
+
assert_equal 'sample.rb', File.basename(@result.groups['Ungrouped'].first.filename)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSourceFile < Test::Unit::TestCase
|
4
|
+
context "A source file initialized with some coverage data" do
|
5
|
+
setup do
|
6
|
+
@source_file = SimpleCov::SourceFile.new(source_fixture('sample.rb'), [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil])
|
7
|
+
end
|
8
|
+
|
9
|
+
should "have a filename" do
|
10
|
+
assert @source_file.filename
|
11
|
+
end
|
12
|
+
|
13
|
+
should "have source equal to src" do
|
14
|
+
assert_equal @source_file.source, @source_file.src
|
15
|
+
end
|
16
|
+
|
17
|
+
should "have source_lines equal to lines" do
|
18
|
+
assert_equal @source_file.source_lines, @source_file.lines
|
19
|
+
end
|
20
|
+
|
21
|
+
should "have 10 source lines" do
|
22
|
+
assert_equal 10, @source_file.lines.count
|
23
|
+
end
|
24
|
+
|
25
|
+
should "have all source lines of type SimpleCov::SourceFile::Line" do
|
26
|
+
assert @source_file.lines.all? {|l| l.instance_of?(SimpleCov::SourceFile::Line)}
|
27
|
+
end
|
28
|
+
|
29
|
+
should "have 'class Foo' as line(2).source" do
|
30
|
+
assert_equal "class Foo\n", @source_file.line(2).source
|
31
|
+
end
|
32
|
+
|
33
|
+
should "return lines number 2, 3, 4, 7 for covered_lines" do
|
34
|
+
assert_equal [2, 3, 4, 7], @source_file.covered_lines.map(&:line)
|
35
|
+
end
|
36
|
+
|
37
|
+
should "return lines number 8 for missed_lines" do
|
38
|
+
assert_equal [8], @source_file.missed_lines.map(&:line)
|
39
|
+
end
|
40
|
+
|
41
|
+
should "return lines number 1, 5, 6, 9, 10 for never_lines" do
|
42
|
+
assert_equal [1, 5, 6, 9, 10], @source_file.never_lines.map(&:line)
|
43
|
+
end
|
44
|
+
|
45
|
+
should "have 80% covered_percent" do
|
46
|
+
assert_equal 80.0, @source_file.covered_percent
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSourceFileLine < Test::Unit::TestCase
|
4
|
+
context "A source line" do
|
5
|
+
setup do
|
6
|
+
@line = SimpleCov::SourceFile::Line.new('# the ruby source', 5, 3)
|
7
|
+
end
|
8
|
+
|
9
|
+
should 'return "# the ruby source" as src' do
|
10
|
+
assert_equal '# the ruby source', @line.src
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'return the same for source as for src' do
|
14
|
+
assert_equal @line.src, @line.source
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'have line number 5' do
|
18
|
+
assert_equal 5, @line.line_number
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'have equal line_number, line and number' do
|
22
|
+
assert_equal @line.line_number, @line.line
|
23
|
+
assert_equal @line.line_number, @line.number
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "A source line with coverage" do
|
28
|
+
setup do
|
29
|
+
@line = SimpleCov::SourceFile::Line.new('# the ruby source', 5, 3)
|
30
|
+
end
|
31
|
+
|
32
|
+
should "have coverage of 3" do
|
33
|
+
assert_equal 3, @line.coverage
|
34
|
+
end
|
35
|
+
|
36
|
+
should "be covered?" do
|
37
|
+
assert @line.covered?
|
38
|
+
end
|
39
|
+
|
40
|
+
should "not be never?" do
|
41
|
+
assert !@line.never?
|
42
|
+
end
|
43
|
+
|
44
|
+
should "not be missed?" do
|
45
|
+
assert !@line.missed?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "A source line without coverage" do
|
50
|
+
setup do
|
51
|
+
@line = SimpleCov::SourceFile::Line.new('# the ruby source', 5, 0)
|
52
|
+
end
|
53
|
+
|
54
|
+
should "have coverage of 0" do
|
55
|
+
assert_equal 0, @line.coverage
|
56
|
+
end
|
57
|
+
|
58
|
+
should "not be covered?" do
|
59
|
+
assert !@line.covered?
|
60
|
+
end
|
61
|
+
|
62
|
+
should "not be never?" do
|
63
|
+
assert !@line.never?
|
64
|
+
end
|
65
|
+
|
66
|
+
should "be missed?" do
|
67
|
+
assert @line.missed?
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "A source line with no code" do
|
72
|
+
setup do
|
73
|
+
@line = SimpleCov::SourceFile::Line.new('# the ruby source', 5, nil)
|
74
|
+
end
|
75
|
+
|
76
|
+
should "have nil coverage" do
|
77
|
+
assert_nil @line.coverage
|
78
|
+
end
|
79
|
+
|
80
|
+
should "not be covered?" do
|
81
|
+
assert !@line.covered?
|
82
|
+
end
|
83
|
+
|
84
|
+
should "be never?" do
|
85
|
+
assert @line.never?
|
86
|
+
end
|
87
|
+
|
88
|
+
should "not be missed?" do
|
89
|
+
assert !@line.missed?
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
should "raise ArgumentError when initialized with invalid src" do
|
94
|
+
assert_raise ArgumentError do
|
95
|
+
SimpleCov::SourceFile::Line.new(:symbol, 5, 3)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
should "raise ArgumentError when initialized with invalid line_number" do
|
100
|
+
assert_raise ArgumentError do
|
101
|
+
SimpleCov::SourceFile::Line.new("some source", "five", 3)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
should "raise ArgumentError when initialized with invalid coverage" do
|
106
|
+
assert_raise ArgumentError do
|
107
|
+
SimpleCov::SourceFile::Line.new("some source", 5, "three")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|