simplecov-small-badge 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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