slather 2.2.0 → 2.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eeb8cebaec1537b632d62c19245da2c00af5730e
4
- data.tar.gz: 0b7ca2c1e79d283e9899b969012f943d611ed0be
3
+ metadata.gz: 8096ea189a9cebaad5a72f45dce58fd1f9f6b284
4
+ data.tar.gz: 15d24647aeba911b4e194dd150ea9700335fe21c
5
5
  SHA512:
6
- metadata.gz: 81c1fd17cba7d152635a93aaf546bd1cfa9fc1040dd92da8b690486a913178e254ce28ae753200d2bc171cad0d586f2304a4b21d6683e364cc321bb77c88f0e0
7
- data.tar.gz: 3f0a80e2845b883f7ed3867a68f5717da9d85ea62bfa07442195017b735e21e667a244cf90924cb99a43193d8256d2293f48bc6f5aa9cef6570d856537c3befd
6
+ metadata.gz: 311d63ca7b84e89bbdda3f1f0a0d7063df7c2e890ca96bb9a81d3aead8263ee14a18b0264d506107600d0985cf4fa3519527d2808ea3a169b21b5d9ba4c739fc
7
+ data.tar.gz: e138521b5d249354893eb05c24a88edf245cf649d1c0338aa3e757721bd9e7127132ae5b84d456e1562b58ec7b32b1f574149763c74eb4e7b14d8d10e5cb7365
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## v2.2.1
6
+
7
+ * Make `project.coverage_files` public
8
+ * Add docs attribute reader to `project.rb`
9
+ [bootstraponline](https://github.com/bootstraponline)
10
+ [#209](https://github.com/SlatherOrg/slather/pull/209)
11
+
12
+ * Add `--decimals` flag
13
+ [bootstraponline](https://github.com/bootstraponline)
14
+ [#207](https://github.com/SlatherOrg/slather/pull/207)
15
+
16
+ * Add `slather version` command
17
+ [bootstraponline](https://github.com/bootstraponline)
18
+ [#208](https://github.com/SlatherOrg/slather/pull/208)
5
19
 
6
20
  ## v2.2.0
7
21
 
@@ -4,12 +4,14 @@ require 'yaml'
4
4
  require_relative '../lib/slather'
5
5
  require_relative '../lib/slather/command/coverage_command'
6
6
  require_relative '../lib/slather/command/setup_command'
7
+ require_relative '../lib/slather/command/version_command'
7
8
 
8
9
  class MainCommand < Clamp::Command
9
10
  self.default_subcommand = "coverage"
10
11
 
11
- subcommand "setup", "Configures a .xcodeproj for test coverage generation", SetupCommand
12
- subcommand "coverage", "Computes coverage for the supplied project", CoverageCommand
12
+ subcommand 'setup', 'Configures a .xcodeproj for test coverage generation', SetupCommand
13
+ subcommand 'coverage', 'Computes coverage for the supplied project', CoverageCommand
14
+ subcommand 'version', 'Prints slather version', VersionCommand
13
15
  end
14
16
 
15
17
  MainCommand.run
@@ -27,6 +27,7 @@ class CoverageCommand < Clamp::Command
27
27
  option ["--binary-file"], "BINARY_FILE", "The binary file against the which the coverage will be run", :multivalued => true
28
28
  option ["--binary-basename"], "BINARY_BASENAME", "Basename of the file against which the coverage will be run", :multivalued => true
29
29
  option ["--source-files"], "SOURCE_FILES", "A Dir.glob compatible pattern used to limit the lookup to specific source files. Ignored in gcov mode.", :multivalued => true
30
+ option ["--decimals"], "DECIMALS", "The amount of decimals to use for % coverage reporting"
30
31
 
31
32
  def execute
32
33
  puts "Slathering..."
@@ -44,6 +45,7 @@ class CoverageCommand < Clamp::Command
44
45
  setup_binary_file
45
46
  setup_binary_basename
46
47
  setup_source_files
48
+ setup_decimals
47
49
 
48
50
  project.configure
49
51
 
@@ -139,4 +141,8 @@ class CoverageCommand < Clamp::Command
139
141
  def setup_source_files
140
142
  project.source_files = source_files_list if !source_files_list.empty?
141
143
  end
144
+
145
+ def setup_decimals
146
+ project.decimals = decimals if decimals
147
+ end
142
148
  end
@@ -0,0 +1,6 @@
1
+ class VersionCommand < Clamp::Command
2
+
3
+ def execute
4
+ puts "slather #{Slather::VERSION}"
5
+ end
6
+ end
@@ -5,6 +5,8 @@ module Slather
5
5
  module CoverageService
6
6
  module HtmlOutput
7
7
 
8
+ attr_reader :docs
9
+
8
10
  def coverage_file_class
9
11
  if input_format == "profdata"
10
12
  Slather::ProfdataCoverageFile
@@ -79,7 +81,7 @@ module Slather
79
81
  cov.h4 {
80
82
  percentage = (total_tested_lines / total_relevant_lines.to_f) * 100.0
81
83
  cov.span "Total Coverage : "
82
- cov.span '%.2f%%' % percentage, :class => class_for_coverage_percentage(percentage), :id => "total_coverage"
84
+ cov.span decimal_f(percentage) + '%', :class => class_for_coverage_percentage(percentage), :id => "total_coverage"
83
85
  }
84
86
 
85
87
  cov.input(:class => "search", :placeholder => "Search")
@@ -105,7 +107,7 @@ module Slather
105
107
  cov.tr {
106
108
  percentage = coverage_file.percentage_lines_tested
107
109
 
108
- cov.td { cov.span '%.2f' % percentage, :class => "percentage #{class_for_coverage_percentage(percentage)} data_percentage" }
110
+ cov.td { cov.span decimal_f(percentage), :class => "percentage #{class_for_coverage_percentage(percentage)} data_percentage" }
109
111
  cov.td(:class => "data_filename") {
110
112
  cov.a filename, :href => filename_link
111
113
  }
@@ -140,7 +142,7 @@ module Slather
140
142
  builder = Nokogiri::HTML::Builder.with(template.at('#reports')) { |cov|
141
143
  cov.h2(:class => "cov_title") {
142
144
  cov.span("Coverage for \"#{filename}\"" + (!is_file_empty ? " : " : ""))
143
- cov.span("#{'%.2f' % percentage}%", :class => class_for_coverage_percentage(percentage)) unless is_file_empty
145
+ cov.span("#{decimal_f(percentage)}%", :class => class_for_coverage_percentage(percentage)) unless is_file_empty
144
146
  }
145
147
 
146
148
  cov.h4("(#{coverage_file.num_lines_tested} of #{coverage_file.num_lines_testable} relevant lines covered)", :class => "cov_subtitle")
@@ -19,7 +19,7 @@ module Slather
19
19
 
20
20
  lines_tested = coverage_file.num_lines_tested
21
21
  total_lines = coverage_file.num_lines_testable
22
- percentage = '%.2f' % [coverage_file.percentage_lines_tested]
22
+ percentage = decimal_f([coverage_file.percentage_lines_tested])
23
23
 
24
24
  total_project_lines_tested += lines_tested
25
25
  total_project_lines += total_lines
@@ -42,7 +42,7 @@ module Slather
42
42
  puts "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='%i']" % total_project_lines
43
43
  end
44
44
 
45
- total_percentage = '%.2f' % [(total_project_lines_tested / total_project_lines.to_f) * 100.0]
45
+ total_percentage = decimal_f([(total_project_lines_tested / total_project_lines.to_f) * 100.0])
46
46
  puts "Test Coverage: #{total_percentage}%"
47
47
  end
48
48
 
@@ -27,8 +27,8 @@ module Xcodeproj
27
27
 
28
28
  # Patch xcschemes too
29
29
  if format == :clang
30
- if Gem::Requirement.new('~> 0.27') =~ Gem::Version.new(Xcodeproj::VERSION)
31
- # @todo This will require to bump the xcodeproj dependency to ~> 0.27
30
+ if Gem::Requirement.new('>= 0.28.2') =~ Gem::Version.new(Xcodeproj::VERSION)
31
+ # @todo This will require to bump the xcodeproj dependency to >= 0.28.2
32
32
  # (which would require to bump cocoapods too)
33
33
  schemes_path = Xcodeproj::XCScheme.shared_data_dir(self.path)
34
34
  Xcodeproj::Project.schemes(self.path).each do |scheme_name|
@@ -51,7 +51,8 @@ module Slather
51
51
  class Project < Xcodeproj::Project
52
52
 
53
53
  attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :coverage_access_token, :source_directory,
54
- :output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :source_files
54
+ :output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :source_files,
55
+ :decimals
55
56
 
56
57
  alias_method :setup_for_coverage, :slather_setup_for_coverage
57
58
 
@@ -106,7 +107,6 @@ module Slather
106
107
  gcov_coverage_files
107
108
  end
108
109
  end
109
- private :coverage_files
110
110
 
111
111
  def gcov_coverage_files
112
112
  coverage_files = Dir["#{build_directory}/**/*.gcno"].map do |file|
@@ -238,6 +238,7 @@ module Slather
238
238
  configure_output_directory
239
239
  configure_input_format
240
240
  configure_binary_file
241
+ configure_decimals
241
242
  rescue => e
242
243
  puts e.message
243
244
  puts failure_help_string
@@ -295,6 +296,12 @@ module Slather
295
296
  self.scheme ||= self.class.yml["scheme"] if self.class.yml["scheme"]
296
297
  end
297
298
 
299
+ def configure_decimals
300
+ return if self.decimals
301
+ self.decimals ||= self.class.yml["decimals"] if self.class.yml["decimals"]
302
+ self.decimals = self.decimals ? Integer(self.decimals) : 2
303
+ end
304
+
298
305
  def configure_workspace
299
306
  self.workspace ||= self.class.yml["workspace"] if self.class.yml["workspace"]
300
307
  end
@@ -338,6 +345,13 @@ module Slather
338
345
  end
339
346
  end
340
347
 
348
+ def decimal_f decimal_arg
349
+ configure_decimals unless decimals
350
+ decimal = "%.#{decimals}f" % decimal_arg
351
+ return decimal if decimals == 2 # special case 2 for backwards compatibility
352
+ decimal.to_f.to_s
353
+ end
354
+
341
355
  def find_binary_file_in_bundle(bundle_file)
342
356
  if File.directory? bundle_file
343
357
  bundle_file_noext = File.basename(bundle_file, File.extname(bundle_file))
@@ -1,3 +1,3 @@
1
1
  module Slather
2
- VERSION = "2.2.0"
2
+ VERSION = '2.2.1' unless defined?(Slather::VERSION)
3
3
  end
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake", "~> 10.4"
24
24
  spec.add_development_dependency "rspec", "~> 3.4"
25
25
  spec.add_development_dependency "pry", "~> 0.9"
26
- spec.add_development_dependency "cocoapods", ">= 0.39.0", "< 1.1.0"
26
+ spec.add_development_dependency "cocoapods", "~> 1.0"
27
27
  spec.add_development_dependency "json_spec", "~> 1.1.4"
28
28
  spec.add_development_dependency "equivalent-xml", "~> 0.5.1"
29
29
 
30
30
  spec.add_dependency "clamp", "~> 0.6"
31
- spec.add_dependency "xcodeproj", ">= 0.28.2", "< 1.1.0"
31
+ spec.add_dependency "xcodeproj", "~> 1.1"
32
32
  spec.add_dependency "nokogiri", "~> 1.6.3"
33
33
  end
@@ -11,7 +11,7 @@ describe Slather::CoverageFile do
11
11
  end
12
12
 
13
13
  let(:coverage_file) do
14
- fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == "fixtures.m" }
14
+ fixtures_project.coverage_files.detect { |cf| cf.source_file_pathname.basename.to_s == "fixtures.m" }
15
15
  end
16
16
 
17
17
  describe "#initialize" do
@@ -42,7 +42,7 @@ describe Slather::CoverageFile do
42
42
  ["cpp", "mm", "m"].each do |file_ext|
43
43
  it "should work for #{file_ext} files" do
44
44
  file_name = "fixtures_#{file_ext}.#{file_ext}"
45
- coverage_file = fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == file_name }
45
+ coverage_file = fixtures_project.coverage_files.detect { |cf| cf.source_file_pathname.basename.to_s == file_name }
46
46
  expect(coverage_file.source_file_pathname).to eq(fixtures_project["fixtures/#{file_name}"].real_path)
47
47
  end
48
48
  end
@@ -124,7 +124,7 @@ OBJC
124
124
  }
125
125
 
126
126
  let(:line_coverage_file) do
127
- fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == "fixtures.m" }
127
+ fixtures_project.coverage_files.detect { |cf| cf.source_file_pathname.basename.to_s == "fixtures.m" }
128
128
  end
129
129
 
130
130
  describe "#coverage_for_line" do
@@ -166,7 +166,7 @@ OBJC
166
166
  describe "branch coverage" do
167
167
 
168
168
  let(:branch_coverage_file) do
169
- fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == "Branches.m" }
169
+ fixtures_project.coverage_files.detect { |cf| cf.source_file_pathname.basename.to_s == "Branches.m" }
170
170
  end
171
171
 
172
172
  describe "branch_coverage_data" do
@@ -281,7 +281,7 @@ OBJC
281
281
  describe "empty coverage data" do
282
282
 
283
283
  let(:empty_file) do
284
- fixtures_project.send(:coverage_files).detect { |cf| cf.source_file_pathname.basename.to_s == "Empty.m" }
284
+ fixtures_project.coverage_files.detect { |cf| cf.source_file_pathname.basename.to_s == "Empty.m" }
285
285
  end
286
286
 
287
287
  describe "gcov_data" do
@@ -34,7 +34,7 @@ describe Slather::CoverageService::Coveralls do
34
34
  it "should return valid json for coveralls coverage gcov data" do
35
35
  allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
36
36
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\"}").excluding("source_files")
37
- expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
37
+ expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.coverage_files.map(&:as_json).to_json).at_path("source_files")
38
38
  end
39
39
 
40
40
  it "should raise an error if there is no TRAVIS_JOB_ID" do
@@ -50,7 +50,7 @@ describe Slather::CoverageService::Coveralls do
50
50
  allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
51
51
  allow(fixtures_project).to receive(:coverage_access_token).and_return("abc123")
52
52
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-pro\",\"repo_token\":\"abc123\"}").excluding("source_files")
53
- expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
53
+ expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.coverage_files.map(&:as_json).to_json).at_path("source_files")
54
54
  end
55
55
 
56
56
  it "should raise an error if there is no TRAVIS_JOB_ID" do
@@ -69,7 +69,7 @@ describe Slather::CoverageService::Coveralls do
69
69
  allow(fixtures_project).to receive(:circleci_build_url).and_return("https://circleci.com/gh/Bruce/Wayne/1")
70
70
  allow(fixtures_project).to receive(:circleci_git_info).and_return({ :head => { :id => "ababa123", :author_name => "bwayne", :message => "hello" }, :branch => "master" })
71
71
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"circleci\",\"repo_token\":\"abc123\",\"service_pull_request\":\"1\",\"service_build_url\":\"https://circleci.com/gh/Bruce/Wayne/1\",\"git\":{\"head\":{\"id\":\"ababa123\",\"author_name\":\"bwayne\",\"message\":\"hello\"},\"branch\":\"master\"}}").excluding("source_files")
72
- expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
72
+ expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.coverage_files.map(&:as_json).to_json).at_path("source_files")
73
73
  end
74
74
 
75
75
  it "should raise an error if there is no CIRCLE_BUILD_NUM" do
@@ -87,7 +87,7 @@ describe Slather::CoverageService::Coveralls do
87
87
  allow(fixtures_project).to receive(:jenkins_git_info).and_return({head: {id: "master", author_name: "author", message: "pull title" }, branch: "branch"})
88
88
  allow(fixtures_project).to receive(:jenkins_branch_name).and_return('master')
89
89
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"jenkins\",\"repo_token\":\"abc123\",\"git\":{\"head\":{\"id\":\"master\",\"author_name\":\"author\",\"message\":\"pull title\"},\"branch\":\"branch\"}}").excluding("source_files")
90
- expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
90
+ expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.coverage_files.map(&:as_json).to_json).at_path("source_files")
91
91
  end
92
92
 
93
93
  it "should raise an error if there is no BUILD_ID" do
@@ -156,7 +156,7 @@ describe Slather::CoverageService::Coveralls do
156
156
  it "should return valid json for coveralls coverage profdata data" do
157
157
  allow(fixtures_project).to receive(:travis_job_id).and_return("9182")
158
158
  expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql("{\"service_job_id\":\"9182\",\"service_name\":\"travis-ci\"}").excluding("source_files")
159
- expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.send(:coverage_files).map(&:as_json).to_json).at_path("source_files")
159
+ expect(fixtures_project.send(:coveralls_coverage_data)).to be_json_eql(fixtures_project.coverage_files.map(&:as_json).to_json).at_path("source_files")
160
160
  end
161
161
  end
162
162
  end
@@ -26,6 +26,10 @@ describe Slather::CoverageService::HtmlOutput do
26
26
  it "should return CoverageFile" do
27
27
  expect(fixtures_project.send(:coverage_file_class)).to eq(Slather::ProfdataCoverageFile)
28
28
  end
29
+
30
+ it "should allow accessing docs via attribute" do
31
+ expect(fixtures_project.docs).to eq(nil)
32
+ end
29
33
  end
30
34
 
31
35
  describe '#post' do
@@ -53,14 +53,14 @@ describe Slather::Project do
53
53
  it "should return coverage file objects of type coverage_file_class for unignored project files" do
54
54
  fixtures_project.ignore_list = ["*fixturesTests*"]
55
55
  allow(fixtures_project).to receive(:dedupe) { |coverage_files| coverage_files }
56
- coverage_files = fixtures_project.send(:coverage_files)
56
+ coverage_files = fixtures_project.coverage_files
57
57
  coverage_files.each { |cf| expect(cf.kind_of?(SpecCoverageFile)).to be_truthy }
58
58
  expect(coverage_files.map { |cf| cf.source_file_pathname.basename.to_s }).to eq(["fixtures.m", "peekaview.m"])
59
59
  end
60
60
 
61
61
  it "should raise an exception if no unignored project coverage file files were found" do
62
62
  fixtures_project.ignore_list = ["*fixturesTests*", "*fixtures*"]
63
- expect {fixtures_project.send(:coverage_files)}.to raise_error(StandardError)
63
+ expect {fixtures_project.coverage_files}.to raise_error(StandardError)
64
64
  end
65
65
  end
66
66
 
@@ -503,4 +503,20 @@ describe Slather::Project do
503
503
  end
504
504
  end
505
505
 
506
+ def decimal_f *args
507
+ fixtures_project.decimal_f *args
508
+ end
509
+
510
+ describe '#decimal_f' do
511
+ it 'should preserve length 2 decimals for backwards compatibility' do
512
+ expect(decimal_f('100.00')).to eq('100.00')
513
+ expect(decimal_f('50.00')).to eq('50.00')
514
+ end
515
+
516
+ it 'should convert length >= 3 decimals to floats' do
517
+ fixtures_project.decimals = 3
518
+ expect(decimal_f('100.000')).to eq('100.0')
519
+ expect(decimal_f('50.00000')).to eq('50.0')
520
+ end
521
+ end
506
522
  end
@@ -1,7 +1,7 @@
1
1
  if ENV['SIMPLECOV']
2
2
  require 'simplecov'
3
3
  SimpleCov.start
4
- else
4
+ elsif ENV['TRAVIS']
5
5
  require 'coveralls'
6
6
  Coveralls.wear!
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slather
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Larsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-08 00:00:00.000000000 Z
11
+ date: 2016-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,22 +98,16 @@ dependencies:
98
98
  name: cocoapods
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: 0.39.0
104
- - - <
101
+ - - ~>
105
102
  - !ruby/object:Gem::Version
106
- version: 1.1.0
103
+ version: '1.0'
107
104
  type: :development
108
105
  prerelease: false
109
106
  version_requirements: !ruby/object:Gem::Requirement
110
107
  requirements:
111
- - - '>='
112
- - !ruby/object:Gem::Version
113
- version: 0.39.0
114
- - - <
108
+ - - ~>
115
109
  - !ruby/object:Gem::Version
116
- version: 1.1.0
110
+ version: '1.0'
117
111
  - !ruby/object:Gem::Dependency
118
112
  name: json_spec
119
113
  requirement: !ruby/object:Gem::Requirement
@@ -160,22 +154,16 @@ dependencies:
160
154
  name: xcodeproj
161
155
  requirement: !ruby/object:Gem::Requirement
162
156
  requirements:
163
- - - '>='
164
- - !ruby/object:Gem::Version
165
- version: 0.28.2
166
- - - <
157
+ - - ~>
167
158
  - !ruby/object:Gem::Version
168
- version: 1.1.0
159
+ version: '1.1'
169
160
  type: :runtime
170
161
  prerelease: false
171
162
  version_requirements: !ruby/object:Gem::Requirement
172
163
  requirements:
173
- - - '>='
174
- - !ruby/object:Gem::Version
175
- version: 0.28.2
176
- - - <
164
+ - - ~>
177
165
  - !ruby/object:Gem::Version
178
- version: 1.1.0
166
+ version: '1.1'
179
167
  - !ruby/object:Gem::Dependency
180
168
  name: nokogiri
181
169
  requirement: !ruby/object:Gem::Requirement
@@ -216,6 +204,7 @@ files:
216
204
  - lib/slather.rb
217
205
  - lib/slather/command/coverage_command.rb
218
206
  - lib/slather/command/setup_command.rb
207
+ - lib/slather/command/version_command.rb
219
208
  - lib/slather/coverage_file.rb
220
209
  - lib/slather/coverage_info.rb
221
210
  - lib/slather/coverage_service/cobertura_xml_output.rb