simplecov 0.10.0 → 0.11.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.
Files changed (75) hide show
  1. checksums.yaml +7 -7
  2. data/.rspec +3 -1
  3. data/.rubocop.yml +6 -5
  4. data/CHANGELOG.md +16 -2
  5. data/Gemfile +14 -14
  6. data/README.md +28 -12
  7. data/Rakefile +5 -8
  8. data/features/config_formatters.feature +1 -1
  9. data/features/config_tracked_files.feature +29 -0
  10. data/features/step_definitions/transformers.rb +1 -1
  11. data/features/support/env.rb +6 -3
  12. data/lib/simplecov.rb +19 -2
  13. data/lib/simplecov/configuration.rb +24 -4
  14. data/lib/simplecov/defaults.rb +28 -5
  15. data/lib/simplecov/file_list.rb +11 -0
  16. data/lib/simplecov/filter.rb +1 -1
  17. data/lib/simplecov/formatter/multi_formatter.rb +17 -13
  18. data/lib/simplecov/result.rb +1 -1
  19. data/lib/simplecov/source_file.rb +6 -3
  20. data/lib/simplecov/version.rb +1 -1
  21. data/spec/1_8_fallbacks_spec.rb +29 -0
  22. data/spec/command_guesser_spec.rb +46 -0
  23. data/spec/deleted_source_spec.rb +12 -0
  24. data/{test → spec}/faked_project/Gemfile +0 -0
  25. data/{test → spec}/faked_project/Rakefile +0 -0
  26. data/{test → spec}/faked_project/cucumber.yml +0 -0
  27. data/{test → spec}/faked_project/features/step_definitions/my_steps.rb +0 -0
  28. data/{test → spec}/faked_project/features/support/env.rb +0 -0
  29. data/{test → spec}/faked_project/features/test_stuff.feature +0 -0
  30. data/{test → spec}/faked_project/lib/faked_project.rb +1 -1
  31. data/{test → spec}/faked_project/lib/faked_project/framework_specific.rb +0 -0
  32. data/{test → spec}/faked_project/lib/faked_project/meta_magic.rb +0 -0
  33. data/{test → spec}/faked_project/lib/faked_project/some_class.rb +0 -0
  34. data/spec/faked_project/lib/faked_project/untested_class.rb +11 -0
  35. data/{test → spec}/faked_project/spec/faked_spec.rb +0 -0
  36. data/{test → spec}/faked_project/spec/forking_spec.rb +0 -0
  37. data/{test → spec}/faked_project/spec/meta_magic_spec.rb +0 -0
  38. data/{test → spec}/faked_project/spec/some_class_spec.rb +0 -0
  39. data/{test → spec}/faked_project/spec/spec_helper.rb +0 -0
  40. data/{test → spec}/faked_project/test/faked_test.rb +0 -0
  41. data/{test → spec}/faked_project/test/meta_magic_test.rb +0 -0
  42. data/{test → spec}/faked_project/test/some_class_test.rb +0 -0
  43. data/{test → spec}/faked_project/test/test_helper.rb +0 -0
  44. data/spec/file_list_spec.rb +48 -0
  45. data/spec/filters_spec.rb +96 -0
  46. data/{test → spec}/fixtures/app/controllers/sample_controller.rb +0 -0
  47. data/{test → spec}/fixtures/app/models/user.rb +0 -0
  48. data/{test → spec}/fixtures/deleted_source_sample.rb +0 -0
  49. data/{test → spec}/fixtures/frameworks/rspec_bad.rb +0 -0
  50. data/{test → spec}/fixtures/frameworks/rspec_good.rb +0 -0
  51. data/{test → spec}/fixtures/frameworks/testunit_bad.rb +0 -0
  52. data/{test → spec}/fixtures/frameworks/testunit_good.rb +0 -0
  53. data/{test → spec}/fixtures/iso-8859.rb +0 -0
  54. data/{test → spec}/fixtures/resultset1.rb +0 -0
  55. data/{test → spec}/fixtures/resultset2.rb +0 -0
  56. data/{test → spec}/fixtures/sample.rb +0 -0
  57. data/{test → spec}/fixtures/utf-8.rb +0 -0
  58. data/{test → spec}/helper.rb +3 -7
  59. data/spec/merge_helpers_spec.rb +108 -0
  60. data/spec/result_spec.rb +207 -0
  61. data/spec/return_codes_spec.rb +37 -0
  62. data/spec/source_file_line_spec.rb +153 -0
  63. data/spec/source_file_spec.rb +75 -0
  64. metadata +163 -149
  65. data/test/shoulda_macros.rb +0 -19
  66. data/test/test_1_8_fallbacks.rb +0 -31
  67. data/test/test_command_guesser.rb +0 -19
  68. data/test/test_deleted_source.rb +0 -14
  69. data/test/test_file_list.rb +0 -23
  70. data/test/test_filters.rb +0 -94
  71. data/test/test_merge_helpers.rb +0 -112
  72. data/test/test_result.rb +0 -175
  73. data/test/test_return_codes.rb +0 -41
  74. data/test/test_source_file.rb +0 -73
  75. data/test/test_source_file_line.rb +0 -106
@@ -1,31 +0,0 @@
1
- require "helper"
2
-
3
- # Tests that verify that on 1.8 versions of ruby, simplecov simply
4
- # does not launch and does not cause errors on the way
5
- #
6
- # TODO: This should be expanded upon all methods that could potentially
7
- # be called in a test/spec-helper simplecov config block
8
- #
9
- class Test18FallBacks < Minitest::Test
10
- should "return false when calling SimpleCov.start" do
11
- assert_equal false, SimpleCov.start
12
- end
13
-
14
- should "return false when calling SimpleCov.start with a block" do
15
- assert_equal false, SimpleCov.start { fail "Shouldn't reach this!?" }
16
- end
17
-
18
- should "return false when calling SimpleCov.configure with a block" do
19
- assert_equal false, SimpleCov.configure { fail "Shouldn't reach this!?" }
20
- end
21
-
22
- should "allow to define a profile" do
23
- begin
24
- SimpleCov.profiles.define "testprofile" do
25
- add_filter "/config/"
26
- end
27
- rescue => err
28
- assert false, "Profile definition should have been fine, but raised #{err}"
29
- end
30
- end
31
- end if RUBY_VERSION.start_with? "1.8"
@@ -1,19 +0,0 @@
1
- require "helper"
2
-
3
- class TestCommandGuesser < Minitest::Test
4
- def self.should_guess_command_name(expectation, *argv)
5
- argv.each do |args|
6
- should "return '#{expectation}' for '#{args}'" do
7
- SimpleCov::CommandGuesser.original_run_command = args
8
- assert_equal expectation, SimpleCov::CommandGuesser.guess
9
- end
10
- end
11
- end
12
-
13
- should_guess_command_name "Unit Tests", "/some/path/test/units/foo_bar_test.rb", "test/units/foo.rb", "test/foo.rb", "test/{models,helpers,unit}/**/*_test.rb"
14
- should_guess_command_name "Functional Tests", "/some/path/test/functional/foo_bar_controller_test.rb", "test/{controllers,mailers,functional}/**/*_test.rb"
15
- should_guess_command_name "Integration Tests", "/some/path/test/integration/foo_bar_controller_test.rb", "test/integration/**/*_test.rb"
16
- should_guess_command_name "Cucumber Features", "features", "cucumber", "cucumber features"
17
- should_guess_command_name "RSpec", "/some/path/spec/foo.rb"
18
- should_guess_command_name "Unit Tests", "some_arbitrary_command with arguments" # Because Test::Unit const is defined!
19
- end if SimpleCov.usable?
@@ -1,14 +0,0 @@
1
- require "helper"
2
-
3
- # Test to verify correct handling of deleted files,
4
- # see issue #9 on github
5
- class TestDeletedSource < Minitest::Test
6
- context "A source file which is subsequently deleted" do
7
- should "not cause an error" do
8
- Dir.chdir(File.join(File.dirname(__FILE__), "fixtures")) do
9
- `ruby deleted_source_sample.rb`
10
- assert_equal 0, $?.exitstatus
11
- end
12
- end
13
- end
14
- end
@@ -1,23 +0,0 @@
1
- require "helper"
2
-
3
- class TestFileList < Minitest::Test
4
- context "With a file list from a result" do
5
- setup do
6
- original_result = {
7
- 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, 2, 2, 0, nil, nil, 0, nil, nil, nil],
10
- }
11
- @file_list = SimpleCov::Result.new(original_result).files
12
- end
13
-
14
- should("have 11 covered_lines") { assert_equal 11, @file_list.covered_lines }
15
- should("have 3 missed_lines") { assert_equal 3, @file_list.missed_lines }
16
- should("have 19 never_lines") { assert_equal 19, @file_list.never_lines }
17
- should("have 14 lines_of_code") { assert_equal 14, @file_list.lines_of_code }
18
- should("have 3 skipped_lines") { assert_equal 3, @file_list.skipped_lines }
19
-
20
- should("have correct covered_percent") { assert_equal 100.0 * 11 / 14, @file_list.covered_percent }
21
- should("have correct covered_strength") { assert_equal 13.to_f / 14, @file_list.covered_strength }
22
- end
23
- end if SimpleCov.usable?
@@ -1,94 +0,0 @@
1
- require "helper"
2
-
3
- class TestFilters < Minitest::Test
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 "not match a new SimpleCov::StringFilter 'foobar'" do
10
- assert !SimpleCov::StringFilter.new("foobar").matches?(@source_file)
11
- end
12
-
13
- should "not match a new SimpleCov::StringFilter 'some/path'" do
14
- assert !SimpleCov::StringFilter.new("some/path").matches?(@source_file)
15
- end
16
-
17
- should "match a new SimpleCov::StringFilter 'test/fixtures'" do
18
- assert SimpleCov::StringFilter.new("test/fixtures").matches?(@source_file)
19
- end
20
-
21
- should "match a new SimpleCov::StringFilter 'test/fixtures/sample.rb'" do
22
- assert SimpleCov::StringFilter.new("test/fixtures/sample.rb").matches?(@source_file)
23
- end
24
-
25
- should "match a new SimpleCov::StringFilter 'sample.rb'" do
26
- assert SimpleCov::StringFilter.new("sample.rb").matches?(@source_file)
27
- end
28
-
29
- should "not match a new SimpleCov::BlockFilter that is not applicable" do
30
- assert !SimpleCov::BlockFilter.new(proc { |s| File.basename(s.filename) == "foo.rb" }).matches?(@source_file)
31
- end
32
-
33
- should "match a new SimpleCov::BlockFilter that is applicable" do
34
- assert SimpleCov::BlockFilter.new(proc { |s| File.basename(s.filename) == "sample.rb" }).matches?(@source_file)
35
- end
36
-
37
- should "match a new SimpleCov::ArrayFilter when 'sample.rb' is passed as array" do
38
- assert SimpleCov::ArrayFilter.new(["sample.rb"]).matches?(@source_file)
39
- end
40
-
41
- should "not match a new SimpleCov::ArrayFilter when a file path different than 'sample.rb' is passed as array" do
42
- assert !SimpleCov::ArrayFilter.new(["other_file.rb"]).matches?(@source_file)
43
- end
44
-
45
- should "match a new SimpleCov::ArrayFilter when two file paths including 'sample.rb' are passed as array" do
46
- assert SimpleCov::ArrayFilter.new(["sample.rb", "other_file.rb"]).matches?(@source_file)
47
- end
48
- end
49
-
50
- context "with no filters set up and a basic source file in an array" do
51
- setup do
52
- @prev_filters, SimpleCov.filters = SimpleCov.filters, []
53
- @files = [SimpleCov::SourceFile.new(source_fixture("sample.rb"), [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil])]
54
- end
55
-
56
- teardown do
57
- SimpleCov.filters = @prev_filters
58
- end
59
-
60
- should "return 0 items after executing SimpleCov.filtered on files when using a 'sample' string filter" do
61
- SimpleCov.add_filter "sample"
62
- assert_equal 0, SimpleCov.filtered(@files).count
63
- end
64
-
65
- should "return 0 items after executing SimpleCov.filtered on files when using a 'test/fixtures/' string filter" do
66
- SimpleCov.add_filter "test/fixtures"
67
- assert_equal 0, SimpleCov.filtered(@files).count
68
- end
69
-
70
- should "return 1 item after executing SimpleCov.filtered on files when using a 'fooo' string filter" do
71
- SimpleCov.add_filter "fooo"
72
- assert_equal 1, SimpleCov.filtered(@files).count
73
- end
74
-
75
- should "return 0 items after executing SimpleCov.filtered on files when using a block filter that returns true" do
76
- SimpleCov.add_filter do
77
- true
78
- end
79
- assert_equal 0, SimpleCov.filtered(@files).count
80
- end
81
-
82
- should "return 1 item after executing SimpleCov.filtered on files when using an always-false block filter" do
83
- SimpleCov.add_filter do
84
- false
85
- end
86
- assert_equal 1, SimpleCov.filtered(@files).count
87
- end
88
-
89
- should "return a FileList after filtering" do
90
- SimpleCov.add_filter "fooo"
91
- assert_equal SimpleCov::FileList, SimpleCov.filtered(@files).class
92
- end
93
- end
94
- end if SimpleCov.usable?
@@ -1,112 +0,0 @@
1
- require "helper"
2
-
3
- class TestMergeHelpers < Minitest::Test
4
- def self.test_order
5
- :alpha
6
- end
7
-
8
- context "With two faked coverage resultsets" do
9
- setup do
10
- SimpleCov.use_merging true
11
- @resultset1 = {
12
- source_fixture("sample.rb") => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
13
- source_fixture("app/models/user.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
14
- source_fixture("app/controllers/sample_controller.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
15
- source_fixture("resultset1.rb") => [1, 1, 1, 1],
16
- }
17
-
18
- @resultset2 = {
19
- source_fixture("sample.rb") => [1, nil, 1, 1, nil, nil, 1, 1, nil, nil],
20
- source_fixture("app/models/user.rb") => [nil, 1, 5, 1, nil, nil, 1, 0, nil, nil],
21
- source_fixture("app/controllers/sample_controller.rb") => [nil, 3, 1, nil, nil, nil, 1, 0, nil, nil],
22
- source_fixture("resultset2.rb") => [nil, 1, 1, nil],
23
- }
24
- end
25
-
26
- context "a merge" do
27
- setup do
28
- assert @merged = @resultset1.merge_resultset(@resultset2)
29
- end
30
-
31
- should "have proper results for sample.rb" do
32
- assert_equal [1, 1, 2, 2, nil, nil, 2, 2, nil, nil], @merged[source_fixture("sample.rb")]
33
- end
34
-
35
- should "have proper results for user.rb" do
36
- assert_equal [nil, 2, 6, 2, nil, nil, 2, 0, nil, nil], @merged[source_fixture("app/models/user.rb")]
37
- end
38
-
39
- should "have proper results for sample_controller.rb" do
40
- assert_equal [nil, 4, 2, 1, nil, nil, 2, 0, nil, nil], @merged[source_fixture("app/controllers/sample_controller.rb")]
41
- end
42
-
43
- should "have proper results for resultset1.rb" do
44
- assert_equal [1, 1, 1, 1], @merged[source_fixture("resultset1.rb")]
45
- end
46
-
47
- should "have proper results for resultset2.rb" do
48
- assert_equal [nil, 1, 1, nil], @merged[source_fixture("resultset2.rb")]
49
- end
50
- end
51
-
52
- # See Github issue #6
53
- should "return an empty hash when the resultset cache file is empty" do
54
- File.open(SimpleCov::ResultMerger.resultset_path, "w+") { |f| f.puts "" }
55
- assert_empty SimpleCov::ResultMerger.resultset
56
- end
57
-
58
- # See Github issue #6
59
- should "return an empty hash when the resultset cache file is not present" do
60
- system "rm #{SimpleCov::ResultMerger.resultset_path}" if File.exist?(SimpleCov::ResultMerger.resultset_path)
61
- assert_empty SimpleCov::ResultMerger.resultset
62
- end
63
-
64
- context "and results generated from those" do
65
- setup do
66
- system "rm #{SimpleCov::ResultMerger.resultset_path}" if File.exist?(SimpleCov::ResultMerger.resultset_path)
67
- @result1 = SimpleCov::Result.new(@resultset1)
68
- @result1.command_name = "result1"
69
- @result2 = SimpleCov::Result.new(@resultset2)
70
- @result2.command_name = "result2"
71
- end
72
-
73
- context "with stored results" do
74
- setup do
75
- assert SimpleCov::ResultMerger.store_result(@result1)
76
- assert SimpleCov::ResultMerger.store_result(@result2)
77
- end
78
-
79
- should "have stored data in resultset_path JSON file" do
80
- assert File.readlines(SimpleCov::ResultMerger.resultset_path).length > 50
81
- end
82
-
83
- should "return a hash containing keys ['result1' and 'result2'] for resultset" do
84
- assert_equal %w(result1 result2), SimpleCov::ResultMerger.resultset.keys.sort
85
- end
86
-
87
- should "return proper values for merged_result" do
88
- 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)
89
- end
90
-
91
- context "with second result way above the merge_timeout" do
92
- setup do
93
- @result2.created_at = Time.now - 172_800 # two days ago
94
- assert SimpleCov::ResultMerger.store_result(@result2)
95
- end
96
-
97
- should "have only one result in SimpleCov::ResultMerger.results" do
98
- assert_equal 1, SimpleCov::ResultMerger.results.length
99
- end
100
- end
101
-
102
- context "with merging disabled" do
103
- setup { SimpleCov.use_merging false }
104
-
105
- should "return nil for SimpleCov.result" do
106
- assert_nil SimpleCov.result
107
- end
108
- end
109
- end
110
- end
111
- end
112
- end if SimpleCov.usable?
@@ -1,175 +0,0 @@
1
- require "helper"
2
-
3
- class TestResult < Minitest::Test # rubocop:disable Metrics/ClassLength
4
- context "With a (mocked) Coverage.result" do
5
- setup do
6
- @prev_filters, SimpleCov.filters = SimpleCov.filters, []
7
- @prev_groups, SimpleCov.groups = SimpleCov.groups, {}
8
- @prev_formatter, SimpleCov.formatter = SimpleCov.formatter, nil
9
-
10
- @original_result = {
11
- source_fixture("sample.rb") => [nil, 1, 1, 1, nil, nil, 1, 1, nil, nil],
12
- source_fixture("app/models/user.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
13
- source_fixture("app/controllers/sample_controller.rb") => [nil, 1, 1, 1, nil, nil, 1, 0, nil, nil],
14
- }
15
- end
16
-
17
- teardown do
18
- SimpleCov.filters = @prev_filters
19
- SimpleCov.groups = @prev_groups
20
- SimpleCov.formatter = @prev_formatter
21
- end
22
-
23
- context "a simple cov result initialized from that" do
24
- setup { @result = SimpleCov::Result.new(@original_result) }
25
-
26
- should "have 3 filenames" do
27
- assert_equal 3, @result.filenames.count
28
- end
29
-
30
- should "have 3 source files" do
31
- assert_equal 3, @result.source_files.count
32
- assert @result.source_files.all? { |s| s.instance_of?(SimpleCov::SourceFile) }, "Not all instances are of SimpleCov::SourceFile type"
33
- end
34
-
35
- should "return an instance of SimpleCov::FileList for source_files and files" do
36
- assert_equal SimpleCov::FileList, @result.source_files.class
37
- assert_equal SimpleCov::FileList, @result.files.class
38
- end
39
-
40
- should "have files equal to source_files" do
41
- assert_equal @result.files, @result.source_files
42
- end
43
-
44
- should "have accurate covered percent" do
45
- # in our fixture, there are 13 covered line (result in 1) in all 15 relevant line (result in non-nil)
46
- assert_equal 100.0 * 13 / 15, @result.covered_percent
47
- end
48
-
49
- [:covered_percent, :covered_strength, :covered_lines, :missed_lines, :total_lines].each do |msg|
50
- should "respond to #{msg}" do
51
- assert @result.respond_to? msg
52
- end
53
- end
54
-
55
- context "dumped with to_hash" do
56
- setup { @hash = @result.to_hash }
57
- should("be a hash") { assert_equal Hash, @hash.class }
58
-
59
- context "loaded back with from_hash" do
60
- setup { @dumped_result = SimpleCov::Result.from_hash(@hash) }
61
-
62
- should "have 3 source files" do
63
- assert_equal @result.source_files.count, @dumped_result.source_files.count
64
- end
65
-
66
- should "have the same covered_percent" do
67
- assert_equal @result.covered_percent, @dumped_result.covered_percent
68
- end
69
-
70
- should "have the same timestamp" do
71
- assert_equal @result.created_at.to_i, @dumped_result.created_at.to_i
72
- end
73
-
74
- should "have the same command_name" do
75
- assert_equal @result.command_name, @dumped_result.command_name
76
- end
77
-
78
- should "have the same original_result" do
79
- assert_equal @result.original_result, @dumped_result.original_result
80
- end
81
- end
82
- end
83
- end
84
-
85
- context "with some filters set up" do
86
- setup do
87
- SimpleCov.add_filter "sample.rb"
88
- end
89
-
90
- should "have 2 files in a new simple cov result" do
91
- assert_equal 2, SimpleCov::Result.new(@original_result).source_files.length
92
- end
93
-
94
- should "have 80 covered percent" do
95
- assert_equal 80, SimpleCov::Result.new(@original_result).covered_percent
96
- end
97
- end
98
-
99
- context "with groups set up for all files" do
100
- setup do
101
- SimpleCov.add_group "Models", "app/models"
102
- SimpleCov.add_group "Controllers", ["app/controllers"]
103
- SimpleCov.add_group "Other" do |src_file|
104
- File.basename(src_file.filename) == "sample.rb"
105
- end
106
- @result = SimpleCov::Result.new(@original_result)
107
- end
108
-
109
- should "have 3 groups" do
110
- assert_equal 3, @result.groups.length
111
- end
112
-
113
- should "have user.rb in 'Models' group" do
114
- assert_equal "user.rb", File.basename(@result.groups["Models"].first.filename)
115
- end
116
-
117
- should "have sample_controller.rb in 'Controllers' group" do
118
- assert_equal "sample_controller.rb", File.basename(@result.groups["Controllers"].first.filename)
119
- end
120
-
121
- context "and simple formatter being used" do
122
- setup { SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter }
123
-
124
- should "return a formatted string with result.format!" do
125
- assert_equal String, @result.format!.class
126
- end
127
- end
128
-
129
- context "and multi formatter being used" do
130
- setup do
131
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
132
- SimpleCov::Formatter::SimpleFormatter,
133
- SimpleCov::Formatter::SimpleFormatter,
134
- ]
135
- end
136
-
137
- should "return an array containing formatted string with result.format!" do
138
- formated = @result.format!
139
- assert_equal 2, formated.count
140
- assert_equal String, formated.first.class
141
- end
142
- end
143
- end
144
-
145
- context "with groups set up that do not match all files" do
146
- setup do
147
- SimpleCov.configure do
148
- add_group "Models", "app/models"
149
- add_group "Controllers", "app/controllers"
150
- end
151
- @result = SimpleCov::Result.new(@original_result)
152
- end
153
-
154
- should "have 3 groups" do
155
- assert_equal 3, @result.groups.length
156
- end
157
-
158
- should "have 1 item per group" do
159
- @result.groups.each do |name, files|
160
- assert_equal 1, files.length, "Group #{name} should have 1 file"
161
- end
162
- end
163
-
164
- should "have sample.rb in 'Ungrouped' group" do
165
- assert_equal "sample.rb", File.basename(@result.groups["Ungrouped"].first.filename)
166
- end
167
-
168
- should "return all groups as instances of SimpleCov::FileList" do
169
- @result.groups.each_value do |files|
170
- assert_equal SimpleCov::FileList, files.class
171
- end
172
- end
173
- end
174
- end
175
- end if SimpleCov.usable?