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 +4 -4
- data/CHANGELOG.md +14 -0
- data/bin/slather +4 -2
- data/lib/slather/command/coverage_command.rb +6 -0
- data/lib/slather/command/version_command.rb +6 -0
- data/lib/slather/coverage_service/html_output.rb +5 -3
- data/lib/slather/coverage_service/simple_output.rb +2 -2
- data/lib/slather/project.rb +18 -4
- data/lib/slather/version.rb +1 -1
- data/slather.gemspec +2 -2
- data/spec/slather/coverage_file_spec.rb +5 -5
- data/spec/slather/coverage_service/coveralls_spec.rb +5 -5
- data/spec/slather/coverage_service/html_output_spec.rb +4 -0
- data/spec/slather/project_spec.rb +18 -2
- data/spec/spec_helper.rb +1 -1
- metadata +11 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8096ea189a9cebaad5a72f45dce58fd1f9f6b284
|
|
4
|
+
data.tar.gz: 15d24647aeba911b4e194dd150ea9700335fe21c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 311d63ca7b84e89bbdda3f1f0a0d7063df7c2e890ca96bb9a81d3aead8263ee14a18b0264d506107600d0985cf4fa3519527d2808ea3a169b21b5d9ba4c739fc
|
|
7
|
+
data.tar.gz: e138521b5d249354893eb05c24a88edf245cf649d1c0338aa3e757721bd9e7127132ae5b84d456e1562b58ec7b32b1f574149763c74eb4e7b14d8d10e5cb7365
|
data/CHANGELOG.md
CHANGED
|
@@ -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
|
|
data/bin/slather
CHANGED
|
@@ -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
|
|
12
|
-
subcommand
|
|
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
|
|
@@ -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 '
|
|
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
|
|
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("#{
|
|
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 =
|
|
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 =
|
|
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
|
|
data/lib/slather/project.rb
CHANGED
|
@@ -27,8 +27,8 @@ module Xcodeproj
|
|
|
27
27
|
|
|
28
28
|
# Patch xcschemes too
|
|
29
29
|
if format == :clang
|
|
30
|
-
if Gem::Requirement.new('
|
|
31
|
-
# @todo This will require to bump the xcodeproj dependency to
|
|
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))
|
data/lib/slather/version.rb
CHANGED
data/slather.gemspec
CHANGED
|
@@ -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", "
|
|
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", "
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
data/spec/spec_helper.rb
CHANGED
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.
|
|
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-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|