rspec-tap-formatters 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RSpec::TAP::Formatters::TestStats do
4
+ subject(:test_stats) { described_class.new }
5
+
6
+ let(:index) { (1..3).to_a.sample }
7
+ let(:example) { OpenStruct.new(metadata: metadata) }
8
+ let(:notification) { OpenStruct.new(example: example) }
9
+
10
+ before do
11
+ test_stats.instance_variable_set(:@data, {})
12
+ end
13
+
14
+ describe '#populate' do
15
+ context 'when root level test' do
16
+ let(:line_number) { 1 + SecureRandom.random_number(5) }
17
+ let(:metadata) do
18
+ {
19
+ example_group: {
20
+ line_number: line_number
21
+ }
22
+ }
23
+ end
24
+
25
+ it 'creates one data point' do
26
+ expect { test_stats.populate(notification, index) }
27
+ .to change { test_stats.data.size }
28
+ .from(0)
29
+ .to(1)
30
+ end
31
+
32
+ it 'updates total tests count' do
33
+ test_stats.populate(notification, index)
34
+
35
+ expect(test_stats.data[line_number][0]).to eq(1)
36
+ end
37
+
38
+ it 'updates tests status count' do
39
+ test_stats.populate(notification, index)
40
+
41
+ expect(test_stats.data[line_number][index]).to eq(1)
42
+ end
43
+ end
44
+
45
+ context 'when non-root level test' do
46
+ let(:line_numbers) do
47
+ numbers = Set.new
48
+ numbers << 1 + SecureRandom.random_number(100) while numbers.size != 4
49
+ numbers.sort
50
+ end
51
+ let(:metadata) do
52
+ {
53
+ example_group: {
54
+ line_number: line_numbers[3],
55
+ parent_example_group: {
56
+ line_number: line_numbers[2],
57
+ parent_example_group: {
58
+ line_number: line_numbers[1],
59
+ parent_example_group: {
60
+ line_number: line_numbers[0]
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ end
67
+
68
+ it 'creates four data points' do
69
+ expect { test_stats.populate(notification, index) }
70
+ .to change { test_stats.data.size }
71
+ .from(0)
72
+ .to(4)
73
+ end
74
+
75
+ it 'updates total tests count' do
76
+ test_stats.populate(notification, index)
77
+
78
+ line_numbers.each do |line_number|
79
+ expect(test_stats.data[line_number][0]).to eq(1)
80
+ end
81
+ end
82
+
83
+ it 'updates tests status count' do
84
+ test_stats.populate(notification, index)
85
+
86
+ line_numbers.each do |line_number|
87
+ expect(test_stats.data[line_number][index]).to eq(1)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-tap-formatters
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Abhimanyu Singh
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-11-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: psych
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec-core
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '4.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '3.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '4.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.15.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.15.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '3.0'
73
+ description: |-
74
+ Formats RSpec-3 test report in TAP format with a proper nested display of
75
+ example groups and includes stats for the total number of passed,
76
+ failed, and pending tests per example group. It supports four different
77
+ TAP format styles.
78
+ email: abhisinghabhimanyu@gmail.com
79
+ executables: []
80
+ extensions: []
81
+ extra_rdoc_files: []
82
+ files:
83
+ - ".document"
84
+ - ".yardopts"
85
+ - CHANGELOG.md
86
+ - LICENSE.md
87
+ - README.md
88
+ - lib/rspec/tap/formatters.rb
89
+ - lib/rspec/tap/formatters/compact.rb
90
+ - lib/rspec/tap/formatters/core_ext/hash.rb
91
+ - lib/rspec/tap/formatters/core_ext/string.rb
92
+ - lib/rspec/tap/formatters/default.rb
93
+ - lib/rspec/tap/formatters/flat.rb
94
+ - lib/rspec/tap/formatters/flat_compact.rb
95
+ - lib/rspec/tap/formatters/printer.rb
96
+ - lib/rspec/tap/formatters/test_stats.rb
97
+ - lib/rspec/tap/formatters/version.rb
98
+ - spec/rspec/tap/formatters/compact_spec.rb
99
+ - spec/rspec/tap/formatters/default_spec.rb
100
+ - spec/rspec/tap/formatters/flat_compact_spec.rb
101
+ - spec/rspec/tap/formatters/flat_spec.rb
102
+ - spec/rspec/tap/formatters/printer_spec.rb
103
+ - spec/rspec/tap/formatters/test_stats_spec.rb
104
+ homepage: https://www.github.com/avmnu-sng/rspec-tap-formatters
105
+ licenses:
106
+ - MIT
107
+ metadata:
108
+ homepage_uri: https://www.github.com/avmnu-sng/rspec-tap-formatters
109
+ changelog_uri: https://www.github.com/avmnu-sng/rspec-tap-formatters/blob/master/CHANGELOG.md
110
+ source_code_uri: https://www.github.com/avmnu-sng/rspec-tap-formatters
111
+ documentation_uri: https://rspec-tap-formatters.readthedocs.io/en/latest
112
+ bug_tracker_uri: https://github.com/avmnu-sng/rspec-tap-formatters/issues
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 2.3.0
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 2.0.0
127
+ requirements: []
128
+ rubygems_version: 3.0.6
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: TAP Formatters for RSpec 3
132
+ test_files:
133
+ - spec/rspec/tap/formatters/compact_spec.rb
134
+ - spec/rspec/tap/formatters/default_spec.rb
135
+ - spec/rspec/tap/formatters/flat_compact_spec.rb
136
+ - spec/rspec/tap/formatters/flat_spec.rb
137
+ - spec/rspec/tap/formatters/printer_spec.rb
138
+ - spec/rspec/tap/formatters/test_stats_spec.rb