simplecov-small-badge 0.1 → 0.2

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
  SHA256:
3
- metadata.gz: 6cda28fa5acf4a144d0c11620b9bf580154e9229401a79bddb78f15930cefe81
4
- data.tar.gz: 4792e1b6e9bbac3887e9e97ed4e1a1eaddb405c736b5af87dfe19cb33b3da91b
3
+ metadata.gz: 0b77c22bed299dc020a8aaf8969d02fa5e4aec211fdf2a1e383bba0b3c8086b4
4
+ data.tar.gz: bad90c04e8c9d4b132b5404cb97b553b28a45b9d455c228fb101b31808e9fd68
5
5
  SHA512:
6
- metadata.gz: 6bf1b6d227a5e57356c4a1d1ea7df521c7118f91f0f37d53e06cd0a9160b53280c163a185469fc23473bb67d6728500aa85eaed7886558ed09f6144cdf31a032
7
- data.tar.gz: 29c7c74b841243ba08e8c724d0dac233e795ad30f4e168e6a3d42ed5171597aa4ba0e00f913cb8e951e1b495cbc2d89647d06366866197785dffd6592a2757a3
6
+ metadata.gz: 6a152639aba57094258da3921d7d5d6a984209c5b9a6456bbae45fef5e58db43469365b4e7e0eac87af6363c28d68057f7c6f4a887d5018886d36a6b9713936e
7
+ data.tar.gz: bf3853ad9dfc1a89a486a810cda5fb3596cf17ad2a456928680fc5ff8c183186b8f9eb5d682ccf982b16950126ae8dc6307824f8f48f8844753f8b94b91707b7
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # SimpleCovSmallBadge
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/simplecov-small-badge.svg)](https://badge.fury.io/rb/simplecov-small-badge)
3
4
  [![Build Status](https://api.travis-ci.org/MarcGrimme/simplecov-small-badge.svg?branch=master)](https://secure.travis-ci.org/MarcGrimme/simplecov-small-badge)
4
5
  [![Depfu](https://badges.depfu.com/badges/48a6c1c7c649f62eede6ffa2be843180/count.svg)](https://depfu.com/github/MarcGrimme/simplecov-small-badge?project_id=6900)
5
- ![Coverage](https://marcgrimme.github.io/simplecov-small-badge/badges/coverage_badge_total.png)
6
+ ![Coverage](https://marcgrimme.github.io/simplecov-small-badge/badges/coverage_badge_total.svg)
6
7
 
7
8
  *SimpleCovBadge* is a gem that can be added to the `Gemfile` and will produce a file called `coverage_badge.png` in the `coverage` directory.
8
9
  It could be looking as follows dependent on how it is configured.
@@ -8,26 +8,28 @@ module SimpleCovSmallBadge
8
8
  # rubocop:disable Metrics/MethodLength
9
9
  def self.options
10
10
  {
11
- format: 'png',
11
+ format: 'svg',
12
12
  with_groups: false,
13
- background: 'transparent',
13
+ background: '#fff',
14
14
  title_prefix: 'scov',
15
- title_background: '#595959',
16
- title_font: 'Helvetica',
17
- title_font_size: 16,
18
- title_font_color: 'white',
19
- coverage_background_bad: 'red',
20
- coverage_background_unknown: 'yellow',
15
+ title_background: '#555',
16
+ font: 'Helvetica',
17
+ font_size: 16,
18
+ title_color: '#fff',
19
+ coverage_background_bad: '#ff0000',
20
+ coverage_background_unknown: '#cccc00',
21
21
  coverage_background_good: '#4dc71f',
22
22
  coverage_font: 'Helvetica-Narrow-Bold',
23
- coverage_font_color: 'white',
23
+ coverage_font_color: '#fff',
24
24
  coverage_font_size: 16,
25
- badge_height: 30,
25
+ badge_height: 20,
26
+ badge_width: 200,
26
27
  filename_prefix: 'coverage_badge',
27
28
  output_path: SimpleCov.coverage_path,
28
29
  log_level: 'info',
29
30
  rounded_border: true,
30
- rounded_edge_radius: 3
31
+ rounded_edge_radius: 3,
32
+ percent_sign: '%'
31
33
  }
32
34
  end
33
35
  # rubocop:enable Metrics/MethodLength
@@ -9,20 +9,29 @@ module SimpleCovSmallBadge
9
9
  def initialize(output = nil)
10
10
  @output = output || STDOUT
11
11
  @config = SimpleCovSmallBadge.config
12
- @image = RepoSmallBadge::Image.new(map_image_config)
13
12
  end
14
13
 
15
14
  def format(result)
16
- covered_percent = result.source_files.covered_percent.round(0)
17
- @image.badge('total', 'total', covered_percent,
18
- state(covered_percent))
19
- group_percent_from_result(result) do |name, title, percent|
20
- @image.badge(name, title, percent, state(percent))
15
+ percent = result.source_files.covered_percent.round(0)
16
+ @image = RepoSmallBadge::Image.new(map_image_config(state(percent)))
17
+ badge('total', 'total', percent)
18
+ group_percent_from_result(result) do |name, title, cov_percent|
19
+ badge(name, title, cov_percent.round(0))
21
20
  end
22
21
  end
23
22
 
24
23
  private
25
24
 
25
+ def badge(name, title, percent)
26
+ percent_txt = percent_text(percent)
27
+ @image.config_merge(map_image_config(state(percent)))
28
+ @image.badge(name, title, percent_txt)
29
+ end
30
+
31
+ def percent_text(percent)
32
+ "#{percent}#{@config.percent_sign}"
33
+ end
34
+
26
35
  def state(covered_percent)
27
36
  if SimpleCov.minimum_coverage&.positive?
28
37
  if covered_percent >= SimpleCov.minimum_coverage
@@ -35,9 +44,12 @@ module SimpleCovSmallBadge
35
44
  end
36
45
  end
37
46
 
38
- def map_image_config
47
+ def map_image_config(state)
39
48
  hash = {}
40
49
  @config.to_hash.map do |key, value|
50
+ key = key
51
+ .to_s.sub(/^coverage_background_#{state}/, 'value_background')
52
+ .to_sym
41
53
  key = key.to_s.sub(/^coverage_/, 'value_').to_sym
42
54
  hash[key] = value
43
55
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleCovSmallBadge
4
- VERSION = '0.1'
4
+ VERSION = '0.2'
5
5
  end
data/script/travis.sh CHANGED
@@ -8,5 +8,5 @@ gem install bundler-audit && bundle-audit update && bundle-audit check
8
8
  gem install rubycritic && rubycritic app lib config ${RUBYCRITICPARAMS} --format console --minimum-score ${RUBYCRITICLIMIT}
9
9
  echo "Pushing badges upstream"
10
10
  [ -d badges ] || mkdir badges
11
- cp coverage/*.png badges/
11
+ cp coverage/coverage_badge* badges/
12
12
  ls badges
@@ -16,12 +16,11 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.rubyforge_project = 'simplecov-small-badge'
18
18
 
19
- s.add_dependency 'mini_magick'
20
- s.add_dependency 'repo-small-badge'
21
- s.add_dependency 'simplecov'
22
- s.add_development_dependency 'rake'
23
- s.add_development_dependency 'rspec'
24
- s.add_development_dependency 'rubocop'
19
+ s.add_dependency 'repo-small-badge', '~> 0.2.1'
20
+ s.add_dependency 'simplecov', '~> 0.16'
21
+ s.add_development_dependency 'rake', '~> 12'
22
+ s.add_development_dependency 'rspec', '~> 3.8'
23
+ s.add_development_dependency 'rubocop', '~> 0.63'
25
24
 
26
25
  s.files = `git ls-files`.split("\n")
27
26
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -10,35 +10,30 @@ describe SimpleCovSmallBadge::Formatter do
10
10
  context 'bad result' do
11
11
  it do
12
12
  allow(SimpleCov).to receive(:minimum_coverage).and_return(90)
13
- mock_mini_magick(name: 'total', title: 'scov total',
14
- color: 'red', coverage: '50',
15
- stack: stack)
13
+ mock_repo_badge_image(cov: '50%', state: 'bad')
16
14
  result = mock_result(50)
17
15
  expect(subject.format(result)).to be_truthy
18
16
  end
19
17
  end
18
+
20
19
  context 'good result' do
21
20
  it do
22
21
  allow(SimpleCov).to receive(:minimum_coverage).and_return(100)
23
- mock_mini_magick(name: 'library', title: 'scov library',
24
- color: '#4dc71f', coverage: '100',
25
- stack: stack, convert:
26
- mock_mini_magick(name: 'total', title: 'scov total',
27
- color: '#4dc71f', coverage: '100',
28
- stack: stack))
29
- result = mock_result(100, 'library': mock_result_group(100))
22
+ image_mock = mock_repo_badge_image(title: 'total', name: 'total',
23
+ cov: '100%')
24
+ mock_repo_badge_image(title: 'library', name: 'library',
25
+ cov: '100%', mock: image_mock)
26
+ result = mock_result(100, 'library' => mock_result_group(100))
30
27
  expect(subject.format(result)).to be_truthy
31
28
  end
32
29
 
33
30
  it do
34
31
  allow(SimpleCov).to receive(:minimum_coverage).and_return(90)
35
- mock_mini_magick(name: 'library', title: 'scov library',
36
- color: '#4dc71f', coverage: '90',
37
- stack: stack, convert:
38
- mock_mini_magick(name: 'total', title: 'scov total',
39
- color: '#4dc71f', coverage: '90',
40
- stack: stack))
41
- result = mock_result(90, 'library': mock_result_group(90))
32
+ image_mock = mock_repo_badge_image(title: 'total', name: 'total',
33
+ cov: '90%')
34
+ mock_repo_badge_image(title: 'library', name: 'library',
35
+ cov: '90%', mock: image_mock)
36
+ result = mock_result(90, 'library' => mock_result_group(90))
42
37
  expect(subject.format(result)).to be_truthy
43
38
  end
44
39
  end
@@ -46,13 +41,11 @@ describe SimpleCovSmallBadge::Formatter do
46
41
  context 'bad result' do
47
42
  it do
48
43
  allow(SimpleCov).to receive(:minimum_coverage).and_return(91)
49
- mock_mini_magick(name: 'library', title: 'scov library',
50
- color: 'red', coverage: '90',
51
- stack: stack, convert:
52
- mock_mini_magick(name: 'total', title: 'scov total',
53
- color: 'red', coverage: '90',
54
- stack: stack))
55
- result = mock_result(90, 'library': mock_result_group(90))
44
+ image_mock = mock_repo_badge_image(title: 'total', name: 'total',
45
+ cov: '90%', state: 'bad')
46
+ mock_repo_badge_image(title: 'library', name: 'library',
47
+ cov: '90%', state: 'bad', mock: image_mock)
48
+ result = mock_result(90, 'library' => mock_result_group(90))
56
49
  expect(subject.format(result)).to be_truthy
57
50
  end
58
51
  end
@@ -60,13 +53,11 @@ describe SimpleCovSmallBadge::Formatter do
60
53
  context 'unknown result' do
61
54
  it do
62
55
  allow(SimpleCov).to receive(:minimum_coverage).and_return(nil)
63
- mock_mini_magick(name: 'library', title: 'scov library',
64
- color: 'yellow', coverage: '90',
65
- stack: stack, convert:
66
- mock_mini_magick(name: 'total', title: 'scov total',
67
- color: 'yellow', coverage: '90',
68
- stack: stack))
69
- result = mock_result(90, 'library': mock_result_group(90))
56
+ image_mock = mock_repo_badge_image(title: 'total', name: 'total',
57
+ cov: '90%', state: 'unknown')
58
+ mock_repo_badge_image(title: 'library', name: 'library',
59
+ cov: '90%', state: 'unknown', mock: image_mock)
60
+ result = mock_result(90, 'library' => mock_result_group(90))
70
61
  expect(subject.format(result)).to be_truthy
71
62
  end
72
63
  end
@@ -74,13 +65,11 @@ describe SimpleCovSmallBadge::Formatter do
74
65
  context 'mixed result' do
75
66
  it do
76
67
  allow(SimpleCov).to receive(:minimum_coverage).and_return(90)
77
- mock_mini_magick(name: 'library', title: 'scov library',
78
- color: '#4dc71f', coverage: '90',
79
- stack: stack, convert:
80
- mock_mini_magick(name: 'total', title: 'scov total',
81
- color: 'red', coverage: '89',
82
- stack: stack))
83
- result = mock_result(89, 'library': mock_result_group(90))
68
+ image_mock = mock_repo_badge_image(title: 'total', name: 'total',
69
+ cov: '89%', state: 'bad')
70
+ mock_repo_badge_image(title: 'library', name: 'library',
71
+ cov: '90%', state: 'good', mock: image_mock)
72
+ result = mock_result(89, 'library' => mock_result_group(90))
84
73
  expect(subject.format(result)).to be_truthy
85
74
  end
86
75
  end
@@ -2,50 +2,33 @@
2
2
 
3
3
  module TestSimpleCovSmallBadge
4
4
  module Mocks
5
- # rubocop:disable Metrics/LineLength
6
- def pango_text_match(title = 'scov total', color = 'green', cov = '100%')
7
- %(<span foreground="white"
8
- background="#595959" size="16000" font="Helvetica" > #{title} </span><span foreground="white"
9
- background="#{color}" size="16000" font="Helvetica-Narrow-Bold" > #{cov} </span>)
5
+ # rubocop:disable Metrics/ParameterLists, Metrics/AbcSize
6
+ def mock_repo_badge_image(cov: 100, name: 'total',
7
+ title: 'total',
8
+ state: 'good',
9
+ config: {},
10
+ mock: instance_double('Image'))
11
+ config = map_config_options(config, state)
12
+ allow(RepoSmallBadge::Image).to receive(:new)
13
+ .with(config).and_return(mock)
14
+ allow(mock).to receive(:config_merge).with(config).and_return(config)
15
+ allow(mock).to receive(:badge).with(name, title, cov)
16
+ mock
10
17
  end
11
- # rubocop:enable Metrics/LineLength
18
+ # rubocop:enable Metrics/ParameterLists, Metrics/AbcSize
12
19
 
13
- # rubocop:disable Metrics/LineLength, Metrics/AbcSize
14
- def mock_mini_magick_stack(stack = instance_double('Stack'))
15
- allow(stack).to receive_message_chain('clone.+')
16
- allow(stack).to receive(:alpha).with('extract')
17
- allow(stack).to receive(:draw).with('fill black polygon 0,0 0,3 3,0 fill white circle 3,3 3,0')
18
- allow(stack).to receive(:flip)
19
- allow(stack).to receive(:flop)
20
- allow(stack).to receive(:compose).with('Multiply')
21
- allow(stack).to receive(:composite)
22
- allow(stack).to receive(:stack).and_yield(stack)
23
- stack
24
- end
25
- # rubocop:enable Metrics/LineLength, Metrics/AbcSize
26
-
27
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
28
- def mock_mini_magick(**keys)
29
- keys[:convert] ||= instance_double('Convert')
30
- convert = keys[:convert]
31
- pango_text = pango_text_match(keys[:title], keys[:color], keys[:coverage])
32
- allow(MiniMagick::Tool::Convert)
33
- .to receive(:new).and_yield(keys[:convert])
34
- allow(convert).to receive(:gravity).with('center')
35
- allow(convert).to receive(:background).with('transparent')
36
- allow(convert).to receive(:pango).with(pango_text)
37
-
38
- if keys.fetch(:rounded_border, true)
39
- allow(convert).to receive(:stack).and_yield(keys[:stack])
40
- allow(convert).to receive(:compose).with('CopyOpacity')
41
- allow(convert).to receive(:alpha).with('off')
42
- allow(convert).to receive(:composite)
20
+ def map_config_options(config_hash, state)
21
+ hash = {}
22
+ SimpleCovSmallBadge::Configuration.options.merge(config_hash)
23
+ .map do |key, value|
24
+ key = key.to_s
25
+ .sub(/^coverage_background_#{state}/, 'value_background')
26
+ .to_sym
27
+ key = key.to_s.sub(/^coverage_/, 'value_').to_sym
28
+ hash[key] = value
43
29
  end
44
- allow(convert).to receive(:<<)
45
- .with("#{SimpleCov.coverage_path}/coverage_badge_#{keys[:name]}.png")
46
- convert
30
+ hash
47
31
  end
48
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
49
32
 
50
33
  def mock_result(total_cov, groups_hash = {})
51
34
  result_double = instance_double('Result')
metadata CHANGED
@@ -1,99 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov-small-badge
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Grimme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-11 00:00:00.000000000 Z
11
+ date: 2019-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: mini_magick
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: repo-small-badge
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ">="
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '0'
19
+ version: 0.2.1
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ">="
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: 0.2.1
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: simplecov
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ">="
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '0'
33
+ version: '0.16'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ">="
38
+ - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: '0.16'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ">="
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0'
47
+ version: '12'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ">="
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0'
54
+ version: '12'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ">="
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '0'
61
+ version: '3.8'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ">="
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: '3.8'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rubocop
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ">="
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: '0.63'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ">="
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: '0.63'
97
83
  description: Small Badge generator for SimpleCov coverage tool for ruby
98
84
  email:
99
85
  - marc.grimme at gmail dot com