rainbow_formatter 0.1.5
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 +7 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.rubocop.yml +11 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +6 -0
- data/LICENSE.md +22 -0
- data/README.md +117 -0
- data/Rakefile +10 -0
- data/data/car.gif +0 -0
- data/data/dog.gif +0 -0
- data/data/monkey.gif +0 -0
- data/data/tina_bike.gif +0 -0
- data/data/tina_bike.mp3 +0 -0
- data/data/tina_dream.gif +0 -0
- data/data/tina_dream.mp3 +0 -0
- data/demo.rb +24 -0
- data/lib/formatter/common.rb +249 -0
- data/lib/formatter/configuration.rb +17 -0
- data/lib/formatter/custom/car.rb +18 -0
- data/lib/formatter/custom/dog.rb +20 -0
- data/lib/formatter/custom/monkey.rb +18 -0
- data/lib/formatter/custom/tina_bike.rb +18 -0
- data/lib/formatter/custom/tina_dream.rb +26 -0
- data/lib/formatter/insta_fail.rb +12 -0
- data/lib/formatter/music.rb +79 -0
- data/lib/formatter/verbose.rb +15 -0
- data/lib/formatter/version.rb +5 -0
- data/lib/rainbow_formatter.rb +88 -0
- data/lib/rainbow_insta_fail_formatter.rb +10 -0
- data/lib/rainbow_music_formatter.rb +10 -0
- data/lib/rainbow_verbose_formatter.rb +10 -0
- data/rainbow_formatter.gemspec +26 -0
- data/spec/rainbow_formatter_spec.rb +156 -0
- data/spec/rainbow_insta_fail_formatter_spec.rb +23 -0
- data/spec/rainbow_music_formatter_spec.rb +122 -0
- data/spec/rainbow_verbose_formatter_spec.rb +20 -0
- data/spec/spec_helper.rb +5 -0
- metadata +129 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'stringio'
|
5
|
+
require 'rainbow_insta_fail_formatter'
|
6
|
+
|
7
|
+
describe RainbowInstaFailFormatter do
|
8
|
+
before(:all) do
|
9
|
+
@output = StringIO.new
|
10
|
+
@formatter = described_class.new(@output)
|
11
|
+
end
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@formatter.start(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'displays failed tests immediately' do
|
18
|
+
example = double :example
|
19
|
+
expect(example).to receive(:fully_formatted).and_return('FAIL')
|
20
|
+
@formatter.example_failed(example)
|
21
|
+
expect(@output.string).to include('FAIL')
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'stringio'
|
5
|
+
require 'fileutils'
|
6
|
+
require 'rainbow_music_formatter'
|
7
|
+
|
8
|
+
class MockKernel
|
9
|
+
def system(string)
|
10
|
+
seen << string
|
11
|
+
end
|
12
|
+
|
13
|
+
def spawn(string)
|
14
|
+
seen << string
|
15
|
+
rand(10_000)
|
16
|
+
end
|
17
|
+
|
18
|
+
def seen
|
19
|
+
@seen ||= []
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe RainbowMusicFormatter do
|
24
|
+
let(:path_to_mp3) { RainbowMusicFormatter.new(RainbowFormatter).rainbow_mp3 }
|
25
|
+
let(:stdout) { StringIO.new }
|
26
|
+
let(:formatter) { described_class.new stdout }
|
27
|
+
let(:mock_kernel) { MockKernel.new }
|
28
|
+
|
29
|
+
before { formatter.kernel = mock_kernel }
|
30
|
+
|
31
|
+
describe 'kernel' do
|
32
|
+
it 'defaults to Kernel' do
|
33
|
+
expect(described_class.new(stdout).kernel).to eq(Kernel)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'can be set' do
|
37
|
+
formatter = described_class.new stdout
|
38
|
+
formatter.kernel = 'something else'
|
39
|
+
expect(formatter.kernel).to eq('something else')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'platform' do
|
44
|
+
it 'defaults to RUBY_PLATFORM' do
|
45
|
+
expect(described_class.new(stdout).platform).to eq(RUBY_PLATFORM)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'can be set' do
|
49
|
+
formatter = described_class.new stdout
|
50
|
+
formatter.platform = 'something else'
|
51
|
+
expect(formatter.platform).to eql('something else')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'start' do
|
56
|
+
before do
|
57
|
+
allow(Process).to receive(:wait) { sleep 1 }
|
58
|
+
allow(Process).to receive(:kill).and_return(true)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'sets the total amount of specs' do
|
62
|
+
formatter.start 3
|
63
|
+
expect(formatter.example_count).to eql(3)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'sets the current to 0' do
|
67
|
+
formatter.start 3
|
68
|
+
expect(formatter.current).to eql(0)
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when on OS X' do
|
72
|
+
before { formatter.platform = 'darwin' }
|
73
|
+
|
74
|
+
it 'plays the song in the background' do
|
75
|
+
formatter.start 3
|
76
|
+
expect(mock_kernel.seen).to include("afplay #{path_to_mp3}")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'when on linux' do
|
81
|
+
before { formatter.platform = 'linux' }
|
82
|
+
|
83
|
+
it 'plays the song for linux too with mpg123 when available' do
|
84
|
+
allow(mock_kernel).to receive(:system).with(match(/which mpg123/)).and_return(true)
|
85
|
+
allow(mock_kernel).to receive(:system).with(match(/which mpg321/)).and_return(false)
|
86
|
+
formatter.start 10
|
87
|
+
expect(mock_kernel.seen.any? { |entry| entry. end_with? "mpg123 #{path_to_mp3} >/dev/null 2>&1" }).to be
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'plays the song for linux too with mpg321 when available' do
|
91
|
+
allow(mock_kernel).to receive(:system).with(match(/which mpg321/)).and_return(true)
|
92
|
+
allow(mock_kernel).to receive(:system).with(match(/which mpg123/)).and_return(false)
|
93
|
+
formatter.start 10
|
94
|
+
expect(mock_kernel.seen.any? { |entry| entry. end_with? "mpg321 #{path_to_mp3} >/dev/null 2>&1" }).to be
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'when on Windows' do
|
99
|
+
before { formatter.platform = 'windows' }
|
100
|
+
|
101
|
+
it 'does not play the song' do
|
102
|
+
formatter.start 4
|
103
|
+
expect(mock_kernel.seen).to be_empty
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'when the music file does not exist' do
|
108
|
+
before do
|
109
|
+
FileUtils.mv path_to_mp3, "#{path_to_mp3}.tmp"
|
110
|
+
end
|
111
|
+
|
112
|
+
after do
|
113
|
+
FileUtils.mv "#{path_to_mp3}.tmp", path_to_mp3
|
114
|
+
end
|
115
|
+
|
116
|
+
it "won't try to play anything" do
|
117
|
+
formatter.start 42
|
118
|
+
expect(mock_kernel.seen).to be_empty
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'stringio'
|
5
|
+
require 'rainbow_verbose_formatter'
|
6
|
+
|
7
|
+
describe RainbowVerboseFormatter do
|
8
|
+
before(:all) do
|
9
|
+
@output = StringIO.new
|
10
|
+
@formatter = described_class.new(@output)
|
11
|
+
end
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@formatter.start(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'displays "running" line with name of test on the last line' do
|
18
|
+
expect(@formatter.progress_lines.last).to include('running: ')
|
19
|
+
end
|
20
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rainbow_formatter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Federico Farina
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: pry
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
description: Customizable ascii-music RSpec formattter
|
62
|
+
email:
|
63
|
+
- federicojosefarina@gmail.com
|
64
|
+
executables: []
|
65
|
+
extensions: []
|
66
|
+
extra_rdoc_files: []
|
67
|
+
files:
|
68
|
+
- ".gitignore"
|
69
|
+
- ".rspec"
|
70
|
+
- ".rubocop.yml"
|
71
|
+
- ".ruby-version"
|
72
|
+
- CHANGELOG.md
|
73
|
+
- Gemfile
|
74
|
+
- LICENSE.md
|
75
|
+
- README.md
|
76
|
+
- Rakefile
|
77
|
+
- data/car.gif
|
78
|
+
- data/dog.gif
|
79
|
+
- data/monkey.gif
|
80
|
+
- data/tina_bike.gif
|
81
|
+
- data/tina_bike.mp3
|
82
|
+
- data/tina_dream.gif
|
83
|
+
- data/tina_dream.mp3
|
84
|
+
- demo.rb
|
85
|
+
- lib/formatter/common.rb
|
86
|
+
- lib/formatter/configuration.rb
|
87
|
+
- lib/formatter/custom/car.rb
|
88
|
+
- lib/formatter/custom/dog.rb
|
89
|
+
- lib/formatter/custom/monkey.rb
|
90
|
+
- lib/formatter/custom/tina_bike.rb
|
91
|
+
- lib/formatter/custom/tina_dream.rb
|
92
|
+
- lib/formatter/insta_fail.rb
|
93
|
+
- lib/formatter/music.rb
|
94
|
+
- lib/formatter/verbose.rb
|
95
|
+
- lib/formatter/version.rb
|
96
|
+
- lib/rainbow_formatter.rb
|
97
|
+
- lib/rainbow_insta_fail_formatter.rb
|
98
|
+
- lib/rainbow_music_formatter.rb
|
99
|
+
- lib/rainbow_verbose_formatter.rb
|
100
|
+
- rainbow_formatter.gemspec
|
101
|
+
- spec/rainbow_formatter_spec.rb
|
102
|
+
- spec/rainbow_insta_fail_formatter_spec.rb
|
103
|
+
- spec/rainbow_music_formatter_spec.rb
|
104
|
+
- spec/rainbow_verbose_formatter_spec.rb
|
105
|
+
- spec/spec_helper.rb
|
106
|
+
homepage: https://github.com/fedefa/rainbow-formatter
|
107
|
+
licenses:
|
108
|
+
- MIT
|
109
|
+
metadata: {}
|
110
|
+
post_install_message:
|
111
|
+
rdoc_options: []
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
requirements: []
|
125
|
+
rubygems_version: 3.0.3
|
126
|
+
signing_key:
|
127
|
+
specification_version: 4
|
128
|
+
summary: Customizable RSpec formatter
|
129
|
+
test_files: []
|