luna-rspec-formatters 3.14.0 → 3.16.0

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: a9da1ca0e746deb01ba1fb8b585deed27e40ab1e1143d5c6825f292e0ea97202
4
- data.tar.gz: bfcc860d34b4f24b81675677342e09a2844328fb5a9399691680972394033768
3
+ metadata.gz: e69b4bcd61ebcf458f20b3b136db6a807327b35adfb4e20c56129c98572e2bf8
4
+ data.tar.gz: da8babf829c70fbd07baf466037b60ffc68b41f06b98728d11ba4c153462ad99
5
5
  SHA512:
6
- metadata.gz: 348321dedf85f1f3807ea975b4acbeedc66efd1bc92091dd27fa393ce6f30e41e8284b06b41e22f653dfd5a5b3cad79beca78a700e635dafe21071cff2b7f5f7
7
- data.tar.gz: facb6786aad73916d39bca815cce629795244064f5b9fcd93c3f1ff6878912908435356b7eaa3ed4887d2039945fd2dc0d0921e0a918c396a0debfe19d290871
6
+ metadata.gz: a33a278cb204c0e1877f9c8096d928b26de416cfe92abfdef3c81c8801c74b40ebb517ed837c45434646f2fb020e20b82f6b41c6567806e33c5cc1959dc163e1
7
+ data.tar.gz: 240aa02828c26e7677a57d5ea838b868c7393b7ebf978093c80791df84ca2484c6734df7db238c0a5dd896ddea241a5e0a6c53b72bf6fa5c611ad552f91891c7
data/Gemfile CHANGED
@@ -1,11 +1,12 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2017 Jordon Bedwell - MIT License
2
+ # Copyright: 2015 - 2020 Jordon Bedwell - MIT License
3
+ # Author: Jordon Bedwell
3
4
  # Encoding: utf-8
4
5
 
5
- source "https://rubygems.org"
6
+ source 'https://rubygems.org'
6
7
  gemspec
7
8
 
8
- gem "rake"
9
+ gem 'rake'
9
10
  group :development do
10
- gem "pry", require: false
11
+ gem 'pry', require: false
11
12
  end
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-2017 Jordon Bedwell
1
+ Copyright (c) 2015-2020 Jordon Bedwell
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the "Software"),
@@ -1,6 +1,6 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require_relative "luna/rspec/formatters"
6
+ require_relative 'luna/rspec/formatters'
@@ -1,21 +1,22 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require "forwardable/extended"
7
- require "rspec"
6
+ require 'rspec'
8
7
 
9
8
  module Luna
10
9
  module Formatters
11
10
  ConsoleCodes = RSpec::Core::Formatters::ConsoleCodes
12
- extend Forwardable::Extended
13
- rb_delegate :"self.register", {
14
- to: :"RSpec::Core::Formatters", alias_of: :register
15
- }
16
-
11
+ def self.register(name)
12
+ RSpec::Core::Formatters.register(
13
+ name, :start, :start_dump, :example_passed,
14
+ :example_pending, :example_failed,
15
+ :dump_profile
16
+ )
17
+ end
17
18
  end
18
19
  end
19
20
 
20
21
  # Default formatter. I prefer this.
21
- require_relative "formatters/checks"
22
+ require_relative 'formatters/checks'
@@ -1,46 +1,39 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require_relative "emoji"
6
+ require_relative 'emoji'
7
7
 
8
8
  module Luna
9
9
  module Formatters
10
10
  class Cats < Emoji
11
- Formatters.register self, :start, :start_dump, :example_passed,
12
- :example_pending, :example_failed, :dump_profile
13
-
14
- # --
15
- # Passed.
16
- # --
17
11
  def example_passed(_)
18
12
  newline_or_addup
19
- output.print " ",
20
- success_color("\u1F63B")
13
+ output.print ' ', success_color(
14
+ "\u1F63B"
15
+ )
21
16
  end
22
17
 
23
- # --
24
- # Failed.
25
- # --
26
18
  def example_failed(_)
27
19
  newline_or_addup
28
- output.print " ",
29
- failure_color("\u1F63E")
20
+ output.print ' ', failure_color(
21
+ "\u1F63E"
22
+ )
30
23
  end
31
24
 
32
- # --
33
- # Pending.
34
- # --
35
25
  def example_pending(_)
36
26
  newline_or_addup
37
- output.print " ",
38
- pending_color("\u1F63F")
27
+ output.print ' ', pending_color(
28
+ "\u1F63F"
29
+ )
39
30
  end
40
31
  end
32
+
33
+ register Cats
41
34
  end
42
35
  end
43
36
 
44
37
  RSpec.configure do |c|
45
- c.formatter = "Luna::Formatters::Cats"
38
+ c.formatter = 'Luna::Formatters::Cats'
46
39
  end
@@ -1,49 +1,39 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require_relative "emoji"
6
+ require_relative 'emoji'
7
7
 
8
8
  module Luna
9
9
  module Formatters
10
10
  class Checks < Emoji
11
- Formatters.register self, :start, :start_dump, :example_passed,
12
- :example_pending, :example_failed, :dump_profile
13
-
14
- # --
15
- # Passed.
16
- # --
17
11
  def example_passed(_)
18
12
  newline_or_addup
19
- output.print " ", success_color(
13
+ output.print ' ', success_color(
20
14
  "\u2714"
21
15
  )
22
16
  end
23
17
 
24
- # --
25
- # Failed.
26
- # --
27
18
  def example_failed(_)
28
19
  newline_or_addup
29
- output.print " ", failure_color(
20
+ output.print ' ', failure_color(
30
21
  "\u2718"
31
22
  )
32
23
  end
33
24
 
34
- # --
35
- # Pending.
36
- # --
37
25
  def example_pending(_)
38
26
  newline_or_addup
39
- output.print " ", pending_color(
27
+ output.print ' ', pending_color(
40
28
  "\u203D"
41
29
  )
42
30
  end
43
31
  end
32
+
33
+ register Checks
44
34
  end
45
35
  end
46
36
 
47
37
  RSpec.configure do |c|
48
- c.formatter = "Luna::Formatters::Checks"
38
+ c.formatter = 'Luna::Formatters::Checks'
49
39
  end
@@ -0,0 +1,71 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2015 - 2020 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ require_relative 'profiling'
7
+ require 'rspec/core/formatters/base_text_formatter'
8
+ require 'rspec/version'
9
+
10
+ module Luna
11
+ module Formatters
12
+ class Documentation < RSpec::Core::Formatters::BaseTextFormatter
13
+ include Profiling
14
+
15
+ %i(success failure pending).each do |m|
16
+ define_method "#{m}_color" do |v|
17
+ return super(v) if defined?(super)
18
+ RSpec::Core::Formatters::ConsoleCodes
19
+ .wrap(v, m)
20
+ end
21
+ end
22
+
23
+ def start(_)
24
+ output.puts
25
+ end
26
+
27
+ def start_dump(_)
28
+ output.puts
29
+ end
30
+
31
+ def example_passed(struct)
32
+ output.print "\s"
33
+ print_description(
34
+ get_example(struct), :success
35
+ )
36
+ end
37
+
38
+ def example_failed(struct)
39
+ output.print "\s"
40
+ print_description(
41
+ get_example(struct), :failure
42
+ )
43
+ end
44
+
45
+ def example_pending(struct)
46
+ output.print "\s"
47
+ print_description(
48
+ get_example(struct), :pending
49
+ )
50
+ end
51
+
52
+ def get_example(struct)
53
+ return struct unless struct.respond_to?(:example)
54
+ struct.example
55
+ end
56
+
57
+ def print_description(example, type)
58
+ desc = example.full_description
59
+ output.print send(
60
+ :"#{type}_color", ' ' + desc + "\n"
61
+ )
62
+ end
63
+ end
64
+
65
+ register Documentation
66
+ end
67
+ end
68
+
69
+ RSpec.configure do |c|
70
+ c.formatter = 'Luna::Formatters::Documentation'
71
+ end
@@ -1,19 +1,18 @@
1
- # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
1
+ # Frozen-String-Literal: true
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require "io/console"
7
- require_relative "../formatters"
8
- require "rspec/core/formatters/base_text_formatter"
9
- require_relative "profiling"
6
+ require 'io/console'
7
+ require_relative '../formatters'
8
+ require 'rspec/core/formatters/base_text_formatter'
9
+ require_relative 'extras/profiling'
10
10
 
11
11
  module Luna
12
12
  module Formatters
13
13
  class Emoji < RSpec::Core::Formatters::BaseTextFormatter
14
14
  include Profiling
15
15
 
16
- # --
17
16
  %i(success failure pending).each do |m|
18
17
  define_method "#{m}_color" do |v|
19
18
  return super(v) if defined?(super)
@@ -22,32 +21,34 @@ module Luna
22
21
  end
23
22
 
24
23
  # --
25
- # Note: If the terminal is too small we just let it go.
26
- # The total columns we allow.
24
+ # Note: If the terminal is too small
25
+ # we just let it go. The total columns
26
+ # we allow is just a example
27
27
  # --
28
28
  def allowed_cols
29
- @cols ||= ((IO.console&.winsize&.last || Float::INFINITY) / 6)
29
+ return @allowed_cols if defined?(@allowed_cols)
30
+ @allowed_cols ||= begin
31
+ infi = Float::INFINITY
32
+ size = IO.console&.winsize&.last
33
+ size = size || infi
34
+ size / 6
35
+ end
30
36
  end
31
37
 
32
- # --
33
- # Start.
34
- # --
35
38
  def start(_)
36
39
  @lines = 0
37
40
  output.puts
38
41
  end
39
42
 
40
- # --
41
- # End.
42
- # --
43
43
  def start_dump(_)
44
44
  output.puts
45
45
  end
46
46
 
47
47
  # --
48
- # Determine if we should start a new line or keep
49
- # on pushing out. Note: if the terminal is too small
50
- # we just let it go.
48
+ # Determine if we should start a new
49
+ # line or keep on pushing out. Note: if
50
+ # the terminal is too small we just let
51
+ # it go until it's done.
51
52
  # --
52
53
  private
53
54
  def newline_or_addup
@@ -59,5 +60,7 @@ module Luna
59
60
  @lines = 1
60
61
  end
61
62
  end
63
+
64
+ register Emoji
62
65
  end
63
66
  end
@@ -0,0 +1,116 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2015 - 2020 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ module Luna
7
+ module Formatters
8
+ module Profiling
9
+ EXP = ' %<loc>s took %<sec>s'
10
+ GROUPS = ' %<loc>s took %<count>g for %<sec>s'
11
+ GROUPS_HEADER = "\nTop %<count>g slowest example groups:"
12
+ EXP_HEADER = "\nTop %<count>g slowest examples (%<sec>gs), "\
13
+ "%<percent>g%% of total time:\n"
14
+
15
+ def helpers
16
+ RSpec::Core::Formatters::Helpers
17
+ end
18
+
19
+ def dump_profile(profile)
20
+ slowest_examples(profile)
21
+ slowest_example_groups(
22
+ profile
23
+ )
24
+ end
25
+
26
+ private
27
+ def slowest_examples(profile)
28
+ examples_header(profile)
29
+
30
+ profile.slowest_examples.map do |example|
31
+ r_time = example.execution_result.run_time
32
+ sec = helpers.format_seconds(
33
+ r_time
34
+ )
35
+
36
+ sec = sec + ' seconds'
37
+ @output.puts(
38
+ format(EXP, {
39
+ loc: format_caller(example.location),
40
+ sec: sec.to_f < 1 ? success_color(sec) : failure_color(sec),
41
+ dsc: example.full_description
42
+ })
43
+ )
44
+ end
45
+ end
46
+
47
+ private
48
+ def slowest_example_groups(profile)
49
+ groups_header(profile)
50
+
51
+ profile.slowest_groups.each do |l, h|
52
+ sec = helpers.format_seconds(
53
+ h[:total_time]
54
+ )
55
+
56
+ sec = sec + ' seconds'
57
+ @output.puts color_blue(
58
+ format(GROUPS, {
59
+ desc: h[:description],
60
+ sec: sec.to_f < 2 ? success_color(sec) : failure_color(sec),
61
+ count: h[:count],
62
+ loc: color_blue(
63
+ strip_relative(l)
64
+ )
65
+ })
66
+ )
67
+ end
68
+ end
69
+
70
+ private
71
+ def groups_header(profile)
72
+ @output.puts(
73
+ format(GROUPS_HEADER, {
74
+ count: profile.slowest_groups.size
75
+ })
76
+ )
77
+ end
78
+
79
+ private
80
+ def examples_header(profile)
81
+ @output.puts(
82
+ format(EXP_HEADER, {
83
+ count: profile.slowest_examples.size,
84
+ percent: profile.percentage,
85
+ sec: helpers.format_seconds(
86
+ profile.slow_duration
87
+ )
88
+ })
89
+ )
90
+ end
91
+
92
+ private
93
+ def color_blue(str)
94
+ RSpec::Core::Formatters::ConsoleCodes.wrap(
95
+ str, :cyan
96
+ )
97
+ end
98
+
99
+ private
100
+ def strip_relative(path)
101
+ path.gsub(
102
+ %r!\A\./!, ''
103
+ )
104
+ end
105
+
106
+ private
107
+ def format_caller(caller_info)
108
+ color_blue strip_relative(
109
+ ::RSpec.configuration.backtrace_formatter.backtrace_line(
110
+ caller_info.to_s.split(":in `block'").first
111
+ )
112
+ )
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,39 @@
1
+ # Frozen-string-literal: true
2
+ # Copyright: 2015 - 2020 - MIT License
3
+ # Author: Jordon Bedwell
4
+ # Encoding: utf-8
5
+
6
+ require_relative 'emoji'
7
+
8
+ module Luna
9
+ module Formatters
10
+ class Hearts < Emoji
11
+ def example_passed(_)
12
+ newline_or_addup
13
+ output.print ' ', success_color(
14
+ "\u2764"
15
+ )
16
+ end
17
+
18
+ def example_failed(_)
19
+ newline_or_addup
20
+ output.print ' ', failure_color(
21
+ "\u1F494"
22
+ )
23
+ end
24
+
25
+ def example_pending(_)
26
+ newline_or_addup
27
+ output.print ' ', pending_color(
28
+ "\u2764"
29
+ )
30
+ end
31
+ end
32
+
33
+ register Hearts
34
+ end
35
+ end
36
+
37
+ RSpec.configure do |c|
38
+ c.formatter = 'Luna::Formatters::Hearts'
39
+ end
@@ -1,46 +1,39 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
- require_relative "emoji"
6
+ require_relative 'emoji'
7
7
 
8
8
  module Luna
9
9
  module Formatters
10
10
  class Smiles < Emoji
11
- Formatters.register self, :start, :start_dump, :example_passed,
12
- :example_pending, :example_failed, :dump_profile
13
-
14
- # --
15
- # Passed.
16
- # --
17
11
  def example_passed(_)
18
12
  newline_or_addup
19
- output.print " ",
20
- success_color("\u263A")
13
+ output.print ' ', success_color(
14
+ "\u263A"
15
+ )
21
16
  end
22
17
 
23
- # --
24
- # Failed.
25
- # --
26
18
  def example_failed(_)
27
19
  newline_or_addup
28
- output.print " ",
29
- failure_color("\u2639")
20
+ output.print ' ', failure_color(
21
+ "\u2639"
22
+ )
30
23
  end
31
24
 
32
- # --
33
- # Pending.
34
- # --
35
25
  def example_pending(_)
36
26
  newline_or_addup
37
- output.print " ",
38
- pending_color("\u2639")
27
+ output.print ' ', pending_color(
28
+ "\u2639"
29
+ )
39
30
  end
40
31
  end
32
+
33
+ register Smiles
41
34
  end
42
35
  end
43
36
 
44
37
  RSpec.configure do |c|
45
- c.formatter = "Luna::Formatters::Smilies"
38
+ c.formatter = 'Luna::Formatters::Smilies'
46
39
  end
@@ -1,10 +1,10 @@
1
1
  # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
2
+ # Copyright: 2015 - 2020 - MIT License
3
3
  # Author: Jordon Bedwell
4
4
  # Encoding: utf-8
5
5
 
6
6
  module Luna
7
7
  module Formatters
8
- VERSION = "3.14.0"
8
+ VERSION = '3.16.0'
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,63 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luna-rspec-formatters
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.14.0
4
+ version: 3.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-13 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: forwardable-extended
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '3.0'
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '4.0'
19
+ version: '2.6'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '3.0'
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '4.0'
26
+ version: '2.6'
33
27
  - !ruby/object:Gem::Dependency
34
- name: forwardable-extended
28
+ name: rubocop
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '2.6'
40
- type: :runtime
33
+ version: 0.80.1
34
+ type: :development
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '2.6'
40
+ version: 0.80.1
47
41
  - !ruby/object:Gem::Dependency
48
- name: rubocop
42
+ name: rspec
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - ">="
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
47
+ version: '3.0'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '4.0'
51
+ type: :runtime
55
52
  prerelease: false
56
53
  version_requirements: !ruby/object:Gem::Requirement
57
54
  requirements:
58
55
  - - ">="
59
56
  - !ruby/object:Gem::Version
60
- version: '0'
57
+ version: '3.0'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '4.0'
61
61
  description: RSpec formatters that are dedicated to Luna.
62
62
  email:
63
63
  - jordon@envygeeks.io
@@ -72,10 +72,10 @@ files:
72
72
  - lib/luna/rspec/formatters.rb
73
73
  - lib/luna/rspec/formatters/cats.rb
74
74
  - lib/luna/rspec/formatters/checks.rb
75
- - lib/luna/rspec/formatters/docs.rb
75
+ - lib/luna/rspec/formatters/documentation.rb
76
76
  - lib/luna/rspec/formatters/emoji.rb
77
- - lib/luna/rspec/formatters/heart.rb
78
- - lib/luna/rspec/formatters/profiling.rb
77
+ - lib/luna/rspec/formatters/extras/profiling.rb
78
+ - lib/luna/rspec/formatters/hearts.rb
79
79
  - lib/luna/rspec/formatters/smiles.rb
80
80
  - lib/luna/rspec/formatters/version.rb
81
81
  homepage: https://github.com/envygeeks/luna-rspec-formatters
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubygems_version: 3.0.3
100
+ rubygems_version: 3.1.2
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: RSpec formatters dedicated to Luna.
@@ -1,93 +0,0 @@
1
- # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
3
- # Author: Jordon Bedwell
4
- # Encoding: utf-8
5
-
6
- require_relative "profiling"
7
- require "rspec/core/formatters/base_text_formatter"
8
- require "rspec/version"
9
-
10
- module Luna
11
- module Formatters
12
- class Documentation < RSpec::Core::Formatters::BaseTextFormatter
13
- include Profiling
14
-
15
- # --
16
- Formatters.register self, :start, :start_dump, :example_passed,
17
- :example_pending, :example_failed, :dump_profile
18
-
19
- # --
20
- %i(success failure pending).each do |m|
21
- define_method "#{m}_color" do |v|
22
- return super(v) if defined?(super)
23
- RSpec::Core::Formatters::ConsoleCodes
24
- .wrap(v, m)
25
- end
26
- end
27
-
28
- # --
29
- # Start.
30
- # --
31
- def start(_)
32
- output.puts
33
- end
34
-
35
- # --
36
- # End.
37
- # --
38
- def start_dump(_)
39
- output.puts
40
- end
41
-
42
- # --
43
- # Passed.
44
- # --
45
- def example_passed(struct)
46
- output.print "\s"
47
- print_description(get_example(struct),
48
- :success)
49
- end
50
-
51
- # --
52
- # Failed.
53
- # --
54
- def example_failed(struct)
55
- output.print "\s"
56
- print_description(get_example(struct),
57
- :failure)
58
- end
59
-
60
- # --
61
- # Pending.
62
- # --
63
- def example_pending(struct)
64
- output.print "\s"
65
- print_description(get_example(struct),
66
- :pending)
67
- end
68
-
69
- # --
70
- # Pull.
71
- # --
72
- def get_example(struct)
73
- unless struct.respond_to?(:example)
74
- return struct
75
- end
76
-
77
- struct.example
78
- end
79
-
80
- # --
81
- # Description.
82
- # --
83
- def print_description(example, type)
84
- output.print send(:"#{type}_color", " " +
85
- example.full_description + "\n")
86
- end
87
- end
88
- end
89
- end
90
-
91
- RSpec.configure do |c|
92
- c.formatter = "Luna::Formatters::Documentation"
93
- end
@@ -1,46 +0,0 @@
1
- # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
3
- # Author: Jordon Bedwell
4
- # Encoding: utf-8
5
-
6
- require_relative "emoji"
7
-
8
- module Luna
9
- module Formatters
10
- class Hearts < Emoji
11
- Formatters.register self, :start, :start_dump, :example_passed,
12
- :example_pending, :example_failed, :dump_profile
13
-
14
- # --
15
- # Passed.
16
- # --
17
- def example_passed(_)
18
- newline_or_addup
19
- output.print " ",
20
- success_color("\u2764")
21
- end
22
-
23
- # --
24
- # Failed.
25
- # --
26
- def example_failed(_)
27
- newline_or_addup
28
- output.print " ",
29
- failure_color("\u1F494")
30
- end
31
-
32
- # --
33
- # Pending.
34
- # --
35
- def example_pending(_)
36
- newline_or_addup
37
- output.print " ",
38
- pending_color("\u2764")
39
- end
40
- end
41
- end
42
- end
43
-
44
- RSpec.configure do |c|
45
- c.formatter = "Luna::Formatters::Hearts"
46
- end
@@ -1,114 +0,0 @@
1
- # Frozen-string-literal: true
2
- # Copyright: 2015 - 2018 - MIT License
3
- # Author: Jordon Bedwell
4
- # Encoding: utf-8
5
-
6
- module Luna
7
- module Formatters
8
- module Profiling
9
- EXP = " %<loc>s took %<sec>s"
10
- GROUPS = " %<loc>s took %<count>g for %<sec>s"
11
- GROUPS_HEADER = "\nTop %<count>g slowest example groups:"
12
- EXP_HEADER = "\nTop %<count>g slowest examples (%<sec>gs), "\
13
- "%<percent>g%% of total time:\n"
14
-
15
- # --
16
- # Help.
17
- # --
18
- def helpers
19
- RSpec::Core::Formatters::Helpers
20
- end
21
-
22
- # --
23
- # Profile.
24
- # --
25
- def dump_profile(profile)
26
- dump_profile_slowest_examples(profile)
27
- dump_profile_slowest_example_groups(
28
- profile
29
- )
30
- end
31
-
32
- # --
33
- # Slow examples.
34
- # --
35
- private
36
- def dump_profile_slowest_examples(profile)
37
- examples_header(profile)
38
-
39
- profile.slowest_examples.each do |e|
40
- sec = helpers.format_seconds(e.execution_result.run_time)
41
- sec = sec + " seconds"
42
-
43
- @output.puts format(EXP, {
44
- loc: format_caller(e.location),
45
- sec: sec.to_f < 1 ? success_color(sec) : failure_color(sec),
46
- desc: e.full_description,
47
- })
48
- end
49
- end
50
-
51
- # --
52
- # Slowest example groups.
53
- # --
54
- private
55
- def dump_profile_slowest_example_groups(profile)
56
- groups_header(profile)
57
-
58
- profile.slowest_groups.each do |l, h|
59
- sec = helpers.format_seconds(h[:total_time])
60
- sec = sec + " seconds"
61
-
62
- @output.puts color_blue(format(GROUPS, {
63
- desc: h[:description],
64
- sec: sec.to_f < 2 ? success_color(sec) : failure_color(sec),
65
- loc: color_blue(strip_relative(l)),
66
- count: h[:count],
67
- }))
68
- end
69
- end
70
-
71
- # --
72
- # Headers group.
73
- # --
74
- private
75
- def groups_header(profile)
76
- @output.puts format(GROUPS_HEADER, {
77
- count: profile.slowest_groups.size,
78
- })
79
- end
80
-
81
- # --
82
- # Header example.
83
- # --
84
- private
85
- def examples_header(profile)
86
- @output.puts format(EXP_HEADER, {
87
- count: profile.slowest_examples.size,
88
- sec: helpers.format_seconds(profile.slow_duration),
89
- percent: profile.percentage,
90
- })
91
- end
92
-
93
- # --
94
- private
95
- def color_blue(str)
96
- RSpec::Core::Formatters::ConsoleCodes
97
- .wrap(str, :cyan)
98
- end
99
-
100
- # --
101
- private
102
- def strip_relative(path)
103
- path.gsub(%r!\A\./!, "")
104
- end
105
-
106
- # --
107
- private
108
- def format_caller(caller_info)
109
- color_blue strip_relative(::RSpec.configuration.backtrace_formatter
110
- .backtrace_line(caller_info.to_s.split(":in `block'").first))
111
- end
112
- end
113
- end
114
- end