turnip_formatter 0.2.11 → 0.3.0

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/README.md +18 -22
  4. data/example/README.md +6 -8
  5. data/example/images/background.png +0 -0
  6. data/example/images/basic_step.png +0 -0
  7. data/example/images/failed_step.png +0 -0
  8. data/example/images/multiline.png +0 -0
  9. data/example/images/outline.png +0 -0
  10. data/example/images/pending_step.png +0 -0
  11. data/example/spec/bar.js +1 -0
  12. data/example/spec/foo.css +3 -0
  13. data/example/spec/spec_helper.rb +7 -2
  14. data/lib/rspec/core/formatters/turnip_formatter.rb +32 -19
  15. data/lib/turnip_formatter/printer/index.rb +6 -9
  16. data/lib/turnip_formatter/printer/scenario.rb +4 -2
  17. data/lib/turnip_formatter/printer/step.rb +16 -14
  18. data/lib/turnip_formatter/printer/step_extra_args.rb +2 -0
  19. data/lib/turnip_formatter/printer/tab_speed_statistics.rb +2 -1
  20. data/lib/turnip_formatter/printer/tab_tag_statistics.rb +5 -6
  21. data/lib/turnip_formatter/printer.rb +6 -11
  22. data/lib/turnip_formatter/scenario/base.rb +98 -0
  23. data/lib/turnip_formatter/scenario/failure.rb +19 -21
  24. data/lib/turnip_formatter/scenario/pass.rb +2 -13
  25. data/lib/turnip_formatter/scenario/pending.rb +19 -25
  26. data/lib/turnip_formatter/step.rb +8 -38
  27. data/lib/turnip_formatter/step_template/base.rb +34 -0
  28. data/lib/turnip_formatter/step_template/exception.rb +59 -50
  29. data/lib/turnip_formatter/step_template/source.rb +36 -34
  30. data/lib/turnip_formatter/template/exception.haml +8 -0
  31. data/lib/turnip_formatter/template/index.haml +88 -0
  32. data/lib/turnip_formatter/template/runtime_exception.haml +13 -0
  33. data/lib/turnip_formatter/template/scenario.haml +14 -0
  34. data/lib/turnip_formatter/template/step.haml +6 -0
  35. data/lib/turnip_formatter/template/step_multiline.haml +1 -0
  36. data/lib/turnip_formatter/template/step_outline.haml +6 -0
  37. data/lib/turnip_formatter/template/tab_feature_statistics.haml +18 -0
  38. data/lib/turnip_formatter/template/tab_speed_statistics.haml +16 -0
  39. data/lib/turnip_formatter/template/tab_tag_statistics.haml +18 -0
  40. data/lib/turnip_formatter/template/turnip_formatter.js +8 -25
  41. data/lib/turnip_formatter/template/turnip_formatter.scss +102 -174
  42. data/lib/turnip_formatter/template.rb +65 -39
  43. data/lib/turnip_formatter/version.rb +1 -1
  44. data/lib/turnip_formatter.rb +45 -7
  45. data/spec/spec_helper.rb +6 -1
  46. data/spec/support/example_helper.rb +36 -0
  47. data/spec/support/step_helper.rb +27 -0
  48. data/spec/turnip_formatter/printer/index_spec.rb +10 -10
  49. data/spec/turnip_formatter/printer/scenario_spec.rb +29 -23
  50. data/spec/turnip_formatter/printer/step_extra_args_spec.rb +6 -6
  51. data/spec/turnip_formatter/printer/step_spec.rb +36 -69
  52. data/spec/turnip_formatter/printer/tab_feature_statistics_spec.rb +1 -4
  53. data/spec/turnip_formatter/printer/tab_speed_statistics_spec.rb +1 -4
  54. data/spec/turnip_formatter/printer/tab_tag_statistics_spec.rb +1 -4
  55. data/spec/turnip_formatter/scenario/base_spec.rb +67 -0
  56. data/spec/turnip_formatter/scenario/failure_spec.rb +16 -38
  57. data/spec/turnip_formatter/scenario/pending_spec.rb +16 -39
  58. data/spec/turnip_formatter/step_template/base_spec.rb +82 -0
  59. data/spec/turnip_formatter/step_template/exception_spec.rb +25 -17
  60. data/spec/turnip_formatter/step_template/source_spec.rb +10 -13
  61. data/turnip_formatter.gemspec +15 -11
  62. metadata +83 -41
  63. data/example/images/tag_step.png +0 -0
  64. data/images/tab_feature_statistics.png +0 -0
  65. data/images/tab_speed_statistics.png +0 -0
  66. data/images/tab_steps.png +0 -0
  67. data/images/tab_steps_expanding.png +0 -0
  68. data/images/tab_tag_statistics.png +0 -0
  69. data/lib/turnip_formatter/ext/turnip/builder.rb +0 -47
  70. data/lib/turnip_formatter/scenario.rb +0 -89
  71. data/lib/turnip_formatter/step/dsl.rb +0 -33
  72. data/lib/turnip_formatter/step/failure.rb +0 -19
  73. data/lib/turnip_formatter/step/pending.rb +0 -19
  74. data/lib/turnip_formatter/step_template.rb +0 -8
  75. data/lib/turnip_formatter/template/exception.erb +0 -10
  76. data/lib/turnip_formatter/template/exception_backtrace.erb +0 -7
  77. data/lib/turnip_formatter/template/index.erb +0 -70
  78. data/lib/turnip_formatter/template/runtime_exception.erb +0 -16
  79. data/lib/turnip_formatter/template/scenario.erb +0 -25
  80. data/lib/turnip_formatter/template/section_report.erb +0 -15
  81. data/lib/turnip_formatter/template/step.erb +0 -4
  82. data/lib/turnip_formatter/template/step_multiline.erb +0 -1
  83. data/lib/turnip_formatter/template/step_outline.erb +0 -9
  84. data/lib/turnip_formatter/template/tab_feature_statistics.erb +0 -24
  85. data/lib/turnip_formatter/template/tab_speed_statistics.erb +0 -18
  86. data/lib/turnip_formatter/template/tab_tag_statistics.erb +0 -24
  87. data/spec/rspec/core/formatters/turnip_formatter_spec.rb +0 -78
  88. data/spec/support/shared_context_examples.rb +0 -39
  89. data/spec/turnip_formatter/scenario/pass_spec.rb +0 -54
  90. data/spec/turnip_formatter/step/failure_spec.rb +0 -64
  91. data/spec/turnip_formatter/step/pending_spec.rb +0 -63
  92. data/spec/turnip_formatter/step_spec.rb +0 -86
@@ -1,24 +0,0 @@
1
- <table>
2
- <thead>
3
- <tr>
4
- <th>Tag</th>
5
- <th>Scearios</th>
6
- <th>passed</th>
7
- <th>failed</th>
8
- <th>pending</th>
9
- <th>status</th>
10
- </tr>
11
- </thead>
12
- <tbody>
13
- <% analysis_results.each do |info| %>
14
- <tr>
15
- <td><%= info.name %></td>
16
- <td><%= info.scenario_count %></td>
17
- <td><%= info.passed_count %></td>
18
- <td><%= info.failed_count %></td>
19
- <td><%= info.pending_count %></td>
20
- <td class="<%= info.status %>"><%= info.status %></td>
21
- </tr>
22
- <% end %>
23
- </tbody>
24
- </table>
@@ -1,78 +0,0 @@
1
- require 'spec_helper'
2
- require 'stringio'
3
-
4
- module RSpec::Core::Formatters
5
- describe TurnipFormatter do
6
- include_context 'turnip_formatter standard scenario metadata'
7
-
8
- let(:feature) { RSpec::Core::ExampleGroup.describe('Feature') }
9
- let(:scenario) { feature.describe('Scenario') }
10
- let(:output) { StringIO.new }
11
- let(:formatter) { TurnipFormatter.new(output) }
12
-
13
- describe '#example_passed' do
14
- before do
15
- scenario.example('passed', metadata) { expect(true).to be true }
16
- feature.run(formatter)
17
- end
18
-
19
- it 'should get passed scenario count' do
20
- expect(formatter.passed_scenarios.size).to eq 1
21
- expect(formatter.failed_scenarios.size).to eq 0
22
- expect(formatter.pending_scenarios.size).to eq 0
23
- expect(formatter.scenarios.size).to eq 1
24
- end
25
- end
26
-
27
- describe '#example_failed' do
28
- before do
29
- scenario.example('failed', metadata) do
30
- begin
31
- expect(true).to be false
32
- rescue => e
33
- e.backtrace.push ":in step:0 `"
34
- raise e
35
- end
36
- end
37
- feature.run(formatter)
38
- end
39
-
40
- it 'should get failed scenario count' do
41
- expect(formatter.passed_scenarios.size).to eq 0
42
- expect(formatter.failed_scenarios.size).to eq 1
43
- expect(formatter.pending_scenarios.size).to eq 0
44
- expect(formatter.scenarios.size).to eq 1
45
- end
46
- end
47
-
48
- describe '#example_pending' do
49
- before do
50
- scenario.example('pending', metadata) do
51
- pending("No such step(0): 'this step is unimplement'")
52
- end
53
- feature.run(formatter)
54
- end
55
-
56
- it 'should get pending scenario count' do
57
- expect(formatter.passed_scenarios.size).to eq 0
58
- expect(formatter.failed_scenarios.size).to eq 0
59
- expect(formatter.pending_scenarios.size).to eq 1
60
- expect(formatter.scenarios.size).to eq 1
61
- end
62
- end
63
-
64
- describe '#dump_summary' do
65
- before do
66
- formatter.dump_summary(0.0, 3, 2, 1)
67
- end
68
-
69
- subject { output.string }
70
-
71
- it 'should be output summary section' do
72
- should include '(<span id="failed_count">2</span> failed'
73
- should include '<span id="pending_count">1</span> pending)'
74
- should include '<span id="total_time">0.0</span>'
75
- end
76
- end
77
- end
78
- end
@@ -1,39 +0,0 @@
1
- shared_context "turnip_formatter scenario setup" do |assertion|
2
- let(:example) do
3
- assertion ||= proc { expect(true).to be true }
4
- group = ::RSpec::Core::ExampleGroup.describe('Feature').describe('Scenario')
5
- example = group.example('example', metadata, &assertion)
6
- group.run(NoopObject.new)
7
- example
8
- end
9
- end
10
-
11
- shared_context "turnip_formatter failure scenario setup" do |assertion|
12
- include_context 'turnip_formatter scenario setup', proc {
13
- expect(true).to be false
14
- }
15
- end
16
-
17
- shared_context "turnip_formatter pending scenario setup" do |assertion|
18
- include_context 'turnip_formatter scenario setup', proc {
19
- pending('Pending')
20
- }
21
- end
22
-
23
- shared_context 'turnip_formatter standard scenario metadata' do
24
- let(:metadata) do
25
- {
26
- turnip_formatter: {
27
- steps: [ { name: 'Step 1', extra_args: [], keyword: 'When' } ],
28
- tags: []
29
- },
30
- file_path: '/path/to/hoge.feature'
31
- }
32
- end
33
- end
34
-
35
- shared_context 'turnip_formatter standard step parameters' do
36
- let(:description) do
37
- { name: 'StepName', keyword: 'Keyword', extra_args: ['Docstring'] }
38
- end
39
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TurnipFormatter::Scenario
4
- describe Pass do
5
- let(:scenario) { ::TurnipFormatter::Scenario::Pass.new(example) }
6
-
7
- include_context 'turnip_formatter scenario setup'
8
- include_context 'turnip_formatter standard scenario metadata'
9
-
10
- context 'Turnip example' do
11
- describe '#validation' do
12
- it 'should not raise exception' do
13
- expect { scenario.validation }.not_to raise_error
14
- end
15
- end
16
- end
17
-
18
- context 'Not Turnip example' do
19
- context 'Not passed example' do
20
- include_context 'turnip_formatter failure scenario setup'
21
-
22
- describe '#validation' do
23
- it 'should raise exception' do
24
- expect { scenario.validation }.to raise_error NotPassedScenarioError
25
- end
26
- end
27
- end
28
-
29
- context 'not exist feature file' do
30
- let(:metadata) do
31
- metadata = super()
32
- metadata[:file_path] = '/path/to/hoge.rb'
33
- metadata
34
- end
35
-
36
- describe '#validation' do
37
- it 'should raise exception' do
38
- expect { scenario.validation }.to raise_error NoFeatureFileError
39
- end
40
- end
41
- end
42
-
43
- context 'not exist step information' do
44
- let(:metadata) { { file_path: '/path/to/hoge.rb' } }
45
-
46
- describe '#validation' do
47
- it 'should raise exception' do
48
- expect { scenario.validation }.to raise_error NotExistStepsInformationError
49
- end
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TurnipFormatter
4
- class Step
5
- describe Failure do
6
- include_context 'turnip_formatter standard step parameters'
7
- include_context 'turnip_formatter failure scenario setup'
8
- include_context 'turnip_formatter standard scenario metadata'
9
-
10
- let(:step) do
11
- step = ::TurnipFormatter::Step.new(example, description)
12
- step.extend TurnipFormatter::Step::Failure
13
- step
14
- end
15
-
16
- let(:klasses) do
17
- builtin_klass1 = ::TurnipFormatter::StepTemplate::Source
18
- builtin_klass2 = ::TurnipFormatter::StepTemplate::Exception
19
- [builtin_klass1, builtin_klass2]
20
- end
21
-
22
- it 'exists built-in step template' do
23
- templates = TurnipFormatter::Step::Failure.templates
24
- expect(templates.keys).to include(*klasses)
25
- end
26
-
27
- context 'add custom step template' do
28
- let :custom_template do
29
- Module.new do
30
- def self.build(message)
31
- '[error] ' + message
32
- end
33
- end
34
- end
35
-
36
- before do
37
- TurnipFormatter::Step::Failure.add_template(custom_template) do
38
- example.example_group.description
39
- end
40
- end
41
-
42
- after do
43
- TurnipFormatter::Step::Failure.remove_template(custom_template)
44
- end
45
-
46
- it 'should get custom step template' do
47
- templates = TurnipFormatter::Step::Failure.templates
48
- klasses << custom_template
49
- expect(templates.keys).to include(*klasses)
50
- end
51
- end
52
-
53
- describe '#attention?' do
54
- subject { step.attention? }
55
- it { should be true }
56
- end
57
-
58
- describe '#status' do
59
- subject { step.status }
60
- it { should eq :failure }
61
- end
62
- end
63
- end
64
- end
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TurnipFormatter
4
- class Step
5
- describe Failure do
6
- include_context 'turnip_formatter standard step parameters'
7
- include_context 'turnip_formatter pending scenario setup'
8
- include_context 'turnip_formatter standard scenario metadata'
9
-
10
- let(:step) do
11
- step = ::TurnipFormatter::Step.new(example, description)
12
- step.extend TurnipFormatter::Step::Pending
13
- step
14
- end
15
-
16
- let(:klasses) do
17
- builtin_klass = ::TurnipFormatter::StepTemplate::Exception
18
- [builtin_klass]
19
- end
20
-
21
- it 'exists built-in step template' do
22
- templates = TurnipFormatter::Step::Pending.templates
23
- expect(templates.keys).to include(*klasses)
24
- end
25
-
26
- context 'add custom step template' do
27
- let :custom_template do
28
- Module.new do
29
- def self.build(message)
30
- '[pending] ' + message
31
- end
32
- end
33
- end
34
-
35
- before do
36
- TurnipFormatter::Step::Pending.add_template custom_template do
37
- example.example_group.description
38
- end
39
- end
40
-
41
- after do
42
- TurnipFormatter::Step::Failure.remove_template custom_template
43
- end
44
-
45
- it 'should get custom step template' do
46
- templates = TurnipFormatter::Step::Pending.templates
47
- klasses << custom_template
48
- expect(templates.keys).to include(*klasses)
49
- end
50
- end
51
-
52
- describe '#attention?' do
53
- subject { step.attention? }
54
- it { should be true }
55
- end
56
-
57
- describe '#status' do
58
- subject { step.status }
59
- it { should eq :pending }
60
- end
61
- end
62
- end
63
- end
@@ -1,86 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TurnipFormatter
4
- describe Step do
5
- include_context 'turnip_formatter standard step parameters'
6
- include_context 'turnip_formatter scenario setup'
7
- include_context 'turnip_formatter standard scenario metadata'
8
- let(:step) { ::TurnipFormatter::Step.new(example, description) }
9
-
10
- describe '#attention?' do
11
- subject { step.attention? }
12
- it { should be false }
13
- end
14
-
15
- describe '#name' do
16
- subject { step.name }
17
- it { should eq('KeywordStepName') }
18
- end
19
-
20
- describe '#docs' do
21
- subject { step.docs }
22
- it { should include :extra_args }
23
- end
24
-
25
- context 'using template' do
26
- let :custom_template1 do
27
- Module.new do
28
- def self.build(hoge)
29
- hoge * 3
30
- end
31
- end
32
- end
33
-
34
- let :custom_template2 do
35
- Module.new do
36
- def self.build(hoge)
37
- 'aiueo' + hoge
38
- end
39
- end
40
- end
41
-
42
- before do
43
- TurnipFormatter::Step.add_template :hoge, custom_template1 do
44
- '12345'
45
- end
46
-
47
- TurnipFormatter::Step.add_template :hoge, custom_template2 do
48
- 'abcde'
49
- end
50
- end
51
-
52
- after do
53
- TurnipFormatter::Step.remove_template(:hoge, custom_template1)
54
- TurnipFormatter::Step.remove_template(:hoge, custom_template2)
55
- end
56
-
57
- describe '#add_template' do
58
- it 'can add step template' do
59
- style1 = TurnipFormatter::Step.templates[:hoge][custom_template1]
60
- klass1 = style1[:klass]
61
- block1 = style1[:block]
62
- expect(klass1.build(block1.call)).to eq('123451234512345')
63
-
64
- style2 = TurnipFormatter::Step.templates[:hoge][custom_template2]
65
- klass2 = style2[:klass]
66
- block2 = style2[:block]
67
- expect(klass2.build(block2.call)).to eq('aiueoabcde')
68
- end
69
- end
70
-
71
- describe '#remove_template' do
72
- it 'can remove step template' do
73
- expect(TurnipFormatter::Step.templates[:hoge]).to have_key custom_template1
74
- expect(TurnipFormatter::Step.templates[:hoge]).to have_key custom_template2
75
-
76
- TurnipFormatter::Step.remove_template(:hoge, custom_template1)
77
- expect(TurnipFormatter::Step.templates[:hoge]).not_to have_key custom_template1
78
- expect(TurnipFormatter::Step.templates[:hoge]).to have_key custom_template2
79
-
80
- TurnipFormatter::Step.remove_template(:hoge, custom_template2)
81
- expect(TurnipFormatter::Step.templates).not_to have_key custom_template2
82
- end
83
- end
84
- end
85
- end
86
- end