dotpretty 0.7.0 → 0.8.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.
- checksums.yaml +4 -4
- data/bin/dotpretty +4 -4
- data/lib/dotpretty/{colorers → color_palettes}/bash.rb +1 -1
- data/lib/dotpretty/{colorers → color_palettes}/null.rb +1 -1
- data/lib/dotpretty/parser.rb +2 -2
- data/lib/dotpretty/reporters/basic.rb +5 -5
- data/lib/dotpretty/reporters/factory.rb +3 -3
- data/lib/dotpretty/reporters/progress.rb +5 -5
- data/lib/dotpretty/reporters/test_summary_formatter.rb +2 -2
- data/lib/dotpretty/runner.rb +2 -2
- data/lib/dotpretty/state_machine/state_details.rb +26 -0
- data/lib/dotpretty/state_machine/state_machine.rb +45 -0
- data/lib/dotpretty/state_machine/state_machine_builder.rb +80 -0
- metadata +6 -7
- data/lib/dotpretty/state_details.rb +0 -23
- data/lib/dotpretty/state_machine.rb +0 -43
- data/lib/dotpretty/state_machine_builder.rb +0 -79
- data/lib/dotpretty.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1d0018b1e41f70563e11d4c495a357e8df1b355f02df5e5663dc2d6062f2757
|
4
|
+
data.tar.gz: 7280f945df62f089cb2a53735cc464613400ffab68783a7a4f57c0d25a19dee4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1973ccb7c3a07c2b6f36fff91b1446577c0aa58b7180060a2186f06a929d379f52f92bf181f3d3081768edf93ec4cf73b702247841594daea2d9d68a05f23121
|
7
|
+
data.tar.gz: 896f15d3c8f1d9dd79cd8844ce32be59cdca11ee211ca0c5cef178bff90033b6f64c8a09ee8fa43a60b76ea1a975246f3274912c0d72c30e9ba1d33035dc1628
|
data/bin/dotpretty
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require "dotpretty/
|
4
|
-
require "dotpretty/
|
3
|
+
require "dotpretty/color_palettes/bash"
|
4
|
+
require "dotpretty/color_palettes/null"
|
5
5
|
require "dotpretty/reporters/names"
|
6
6
|
require "dotpretty/runner"
|
7
7
|
require "optparse"
|
@@ -33,9 +33,9 @@ OptionParser.new do |opts|
|
|
33
33
|
|
34
34
|
end.parse!
|
35
35
|
|
36
|
-
|
36
|
+
color_palette = options[:color] ? Dotpretty::ColorPalettes::Bash : Dotpretty::ColorPalettes::Null
|
37
37
|
runner = Dotpretty::Runner.new({
|
38
|
-
|
38
|
+
color_palette: color_palette,
|
39
39
|
output: STDOUT,
|
40
40
|
reporter_name: options[:reporter_name]
|
41
41
|
})
|
data/lib/dotpretty/parser.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require "dotpretty/aggregator"
|
2
2
|
require "dotpretty/reporters/basic"
|
3
|
-
require "dotpretty/state_machine_builder"
|
3
|
+
require "dotpretty/state_machine/state_machine_builder"
|
4
4
|
|
5
5
|
module Dotpretty
|
6
6
|
class Parser
|
7
7
|
|
8
8
|
def initialize(reporter:)
|
9
9
|
self.aggregator = Dotpretty::Aggregator.new({ reporter: reporter })
|
10
|
-
self.state_machine = Dotpretty::StateMachineBuilder.build(aggregator) do
|
10
|
+
self.state_machine = Dotpretty::StateMachine::StateMachineBuilder.build(aggregator) do
|
11
11
|
state :waiting do
|
12
12
|
transition :build_started, :build_in_progress, :build_started
|
13
13
|
end
|
@@ -4,9 +4,9 @@ module Dotpretty
|
|
4
4
|
module Reporters
|
5
5
|
class Basic
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
self.
|
9
|
-
self.extend(
|
7
|
+
def initialize(color_palette:, output:)
|
8
|
+
self.color_palette = color_palette
|
9
|
+
self.extend(color_palette)
|
10
10
|
self.output = output
|
11
11
|
end
|
12
12
|
|
@@ -55,12 +55,12 @@ module Dotpretty
|
|
55
55
|
|
56
56
|
def colored_message(summary)
|
57
57
|
return Dotpretty::Reporters::TestSummaryFormatter.new({
|
58
|
-
|
58
|
+
color_palette: color_palette,
|
59
59
|
summary: summary
|
60
60
|
}).colored_message
|
61
61
|
end
|
62
62
|
|
63
|
-
attr_accessor :
|
63
|
+
attr_accessor :color_palette, :output
|
64
64
|
|
65
65
|
end
|
66
66
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "dotpretty/
|
1
|
+
require "dotpretty/color_palettes/null"
|
2
2
|
require "dotpretty/reporters/basic"
|
3
3
|
require "dotpretty/reporters/json"
|
4
4
|
require "dotpretty/reporters/names"
|
@@ -14,12 +14,12 @@ module Dotpretty
|
|
14
14
|
return Dotpretty::Reporters::Json.new(options.fetch(:output))
|
15
15
|
when Dotpretty::Reporters::Names::PROGRESS
|
16
16
|
return Dotpretty::Reporters::Progress.new({
|
17
|
-
|
17
|
+
color_palette: options.fetch(:color_palette),
|
18
18
|
output: options.fetch(:output)
|
19
19
|
})
|
20
20
|
else
|
21
21
|
return Dotpretty::Reporters::Basic.new({
|
22
|
-
|
22
|
+
color_palette: options.fetch(:color_palette),
|
23
23
|
output: options.fetch(:output)
|
24
24
|
})
|
25
25
|
end
|
@@ -2,9 +2,9 @@ module Dotpretty
|
|
2
2
|
module Reporters
|
3
3
|
class Progress
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
self.
|
7
|
-
self.extend(
|
5
|
+
def initialize(color_palette:, output:)
|
6
|
+
self.color_palette = color_palette
|
7
|
+
self.extend(color_palette)
|
8
8
|
self.failing_tests = []
|
9
9
|
self.skipped_test_names = []
|
10
10
|
self.output = output
|
@@ -56,7 +56,7 @@ module Dotpretty
|
|
56
56
|
|
57
57
|
def formatted_test_summary(summary)
|
58
58
|
return Dotpretty::Reporters::TestSummaryFormatter.new({
|
59
|
-
|
59
|
+
color_palette: color_palette,
|
60
60
|
summary: summary
|
61
61
|
}).colored_message
|
62
62
|
end
|
@@ -84,7 +84,7 @@ module Dotpretty
|
|
84
84
|
output.puts("")
|
85
85
|
end
|
86
86
|
|
87
|
-
attr_accessor :
|
87
|
+
attr_accessor :color_palette, :failing_tests, :output, :skipped_test_names
|
88
88
|
|
89
89
|
end
|
90
90
|
end
|
data/lib/dotpretty/runner.rb
CHANGED
@@ -4,10 +4,10 @@ require "dotpretty/reporters/factory"
|
|
4
4
|
module Dotpretty
|
5
5
|
class Runner
|
6
6
|
|
7
|
-
def initialize(
|
7
|
+
def initialize(color_palette:, output:, reporter_name:)
|
8
8
|
reporter = Dotpretty::Reporters::Factory.build_reporter(reporter_name, {
|
9
9
|
output: output,
|
10
|
-
|
10
|
+
color_palette: color_palette
|
11
11
|
})
|
12
12
|
self.parser = Dotpretty::Parser.new({ reporter: reporter })
|
13
13
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Dotpretty
|
2
|
+
module StateMachine
|
3
|
+
class StateDetails
|
4
|
+
|
5
|
+
def initialize(transitions:, exit_action:, entry_action:)
|
6
|
+
self.entry_action = entry_action
|
7
|
+
self.exit_action = exit_action
|
8
|
+
self.transitions = transitions
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :entry_action
|
12
|
+
|
13
|
+
|
14
|
+
def trigger(event, &block)
|
15
|
+
transition = transitions[event]
|
16
|
+
block.call(transition, exit_action) if transition
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
attr_accessor :exit_action, :transitions
|
22
|
+
attr_writer :entry_action
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "dotpretty/state_machine/state_details"
|
2
|
+
|
3
|
+
module Dotpretty
|
4
|
+
module StateMachine
|
5
|
+
class StateMachine
|
6
|
+
|
7
|
+
def initialize(initial_state:, observer:, states:)
|
8
|
+
self.current_state_name = initial_state
|
9
|
+
self.observer = observer
|
10
|
+
self.states = states
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :current_state_name
|
14
|
+
|
15
|
+
def trigger(event, *args)
|
16
|
+
current_state.trigger(event) do |transition, exit_action|
|
17
|
+
perform(exit_action, *args) if current_state_name != transition[:next_state_name]
|
18
|
+
perform(transition[:action], *args)
|
19
|
+
if current_state_name != transition[:next_state_name]
|
20
|
+
self.current_state_name = transition[:next_state_name]
|
21
|
+
perform(current_state.entry_action, *args)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def perform(action, *args)
|
29
|
+
observer.send(action, *args) if action
|
30
|
+
end
|
31
|
+
|
32
|
+
def current_state
|
33
|
+
states[current_state_name] || StateDetails.new({
|
34
|
+
entry_action: nil,
|
35
|
+
exit_action: nil,
|
36
|
+
transitions: {}
|
37
|
+
})
|
38
|
+
end
|
39
|
+
|
40
|
+
attr_accessor :observer, :states
|
41
|
+
attr_writer :current_state_name
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "dotpretty/state_machine/state_details"
|
2
|
+
require "dotpretty/state_machine/state_machine"
|
3
|
+
|
4
|
+
module Dotpretty
|
5
|
+
module StateMachine
|
6
|
+
class StateMachineBuilder
|
7
|
+
class StateDetailsBuilder
|
8
|
+
|
9
|
+
def self.build(name, &definition)
|
10
|
+
builder = StateDetailsBuilder.new(name)
|
11
|
+
builder.instance_eval(&definition)
|
12
|
+
return builder.build
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(name)
|
16
|
+
self.name = name
|
17
|
+
self.transitions = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def build
|
21
|
+
StateDetails.new({
|
22
|
+
entry_action: entry_action,
|
23
|
+
exit_action: exit_action,
|
24
|
+
transitions: transitions
|
25
|
+
})
|
26
|
+
end
|
27
|
+
|
28
|
+
def transition(event, next_state_name, action = nil)
|
29
|
+
transitions[event] = {
|
30
|
+
action: action,
|
31
|
+
next_state_name: next_state_name
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def on_entry(action)
|
36
|
+
self.entry_action = action
|
37
|
+
end
|
38
|
+
|
39
|
+
def on_exit(action)
|
40
|
+
self.exit_action = action
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
attr_accessor :entry_action, :exit_action, :name, :transitions
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.build(observer, &definition)
|
50
|
+
builder = Dotpretty::StateMachine::StateMachineBuilder.new(observer)
|
51
|
+
builder.instance_eval(&definition)
|
52
|
+
return builder.build
|
53
|
+
end
|
54
|
+
|
55
|
+
def initialize(observer)
|
56
|
+
self.observer = observer
|
57
|
+
self.states = {}
|
58
|
+
end
|
59
|
+
|
60
|
+
def state(name, &definition)
|
61
|
+
state = StateDetailsBuilder.build(name, &definition)
|
62
|
+
states[name] = state
|
63
|
+
self.initial_state = name if !initial_state
|
64
|
+
end
|
65
|
+
|
66
|
+
def build
|
67
|
+
Dotpretty::StateMachine::StateMachine.new({
|
68
|
+
initial_state: initial_state,
|
69
|
+
observer: observer,
|
70
|
+
states: states
|
71
|
+
})
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
attr_accessor :initial_state, :observer, :states
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dotpretty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Meyer
|
@@ -18,10 +18,9 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- bin/dotpretty
|
21
|
-
- lib/dotpretty.rb
|
22
21
|
- lib/dotpretty/aggregator.rb
|
23
|
-
- lib/dotpretty/
|
24
|
-
- lib/dotpretty/
|
22
|
+
- lib/dotpretty/color_palettes/bash.rb
|
23
|
+
- lib/dotpretty/color_palettes/null.rb
|
25
24
|
- lib/dotpretty/parser.rb
|
26
25
|
- lib/dotpretty/reporters/basic.rb
|
27
26
|
- lib/dotpretty/reporters/factory.rb
|
@@ -30,9 +29,9 @@ files:
|
|
30
29
|
- lib/dotpretty/reporters/progress.rb
|
31
30
|
- lib/dotpretty/reporters/test_summary_formatter.rb
|
32
31
|
- lib/dotpretty/runner.rb
|
33
|
-
- lib/dotpretty/state_details.rb
|
34
|
-
- lib/dotpretty/state_machine.rb
|
35
|
-
- lib/dotpretty/state_machine_builder.rb
|
32
|
+
- lib/dotpretty/state_machine/state_details.rb
|
33
|
+
- lib/dotpretty/state_machine/state_machine.rb
|
34
|
+
- lib/dotpretty/state_machine/state_machine_builder.rb
|
36
35
|
homepage: https://github.com/ericmeyer/dotpretty
|
37
36
|
licenses:
|
38
37
|
- MIT
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Dotpretty
|
2
|
-
class StateDetails
|
3
|
-
|
4
|
-
def initialize(transitions:, exit_action:, entry_action:)
|
5
|
-
self.entry_action = entry_action
|
6
|
-
self.exit_action = exit_action
|
7
|
-
self.transitions = transitions
|
8
|
-
end
|
9
|
-
|
10
|
-
attr_reader :entry_action
|
11
|
-
|
12
|
-
def trigger(event, &block)
|
13
|
-
transition = transitions[event]
|
14
|
-
block.call(transition, exit_action) if transition
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
attr_accessor :exit_action, :transitions
|
20
|
-
attr_writer :entry_action
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require "dotpretty/state_details"
|
2
|
-
|
3
|
-
module Dotpretty
|
4
|
-
class StateMachine
|
5
|
-
|
6
|
-
def initialize(initial_state:, observer:, states:)
|
7
|
-
self.current_state_name = initial_state
|
8
|
-
self.observer = observer
|
9
|
-
self.states = states
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :current_state_name
|
13
|
-
|
14
|
-
def trigger(event, *args)
|
15
|
-
current_state.trigger(event) do |transition, exit_action|
|
16
|
-
perform(exit_action, *args) if current_state_name != transition[:next_state_name]
|
17
|
-
perform(transition[:action], *args)
|
18
|
-
if current_state_name != transition[:next_state_name]
|
19
|
-
self.current_state_name = transition[:next_state_name]
|
20
|
-
perform(current_state.entry_action, *args)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def perform(action, *args)
|
28
|
-
observer.send(action, *args) if action
|
29
|
-
end
|
30
|
-
|
31
|
-
def current_state
|
32
|
-
states[current_state_name] || StateDetails.new({
|
33
|
-
entry_action: nil,
|
34
|
-
exit_action: nil,
|
35
|
-
transitions: {}
|
36
|
-
})
|
37
|
-
end
|
38
|
-
|
39
|
-
attr_accessor :observer, :states
|
40
|
-
attr_writer :current_state_name
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
require "dotpretty/state_details"
|
2
|
-
require "dotpretty/state_machine"
|
3
|
-
|
4
|
-
module Dotpretty
|
5
|
-
class StateMachineBuilder
|
6
|
-
|
7
|
-
class StateDetailsBuilder
|
8
|
-
|
9
|
-
def self.build(name, &definition)
|
10
|
-
builder = StateDetailsBuilder.new(name)
|
11
|
-
builder.instance_eval(&definition)
|
12
|
-
return builder.build
|
13
|
-
end
|
14
|
-
|
15
|
-
def initialize(name)
|
16
|
-
self.name = name
|
17
|
-
self.transitions = {}
|
18
|
-
end
|
19
|
-
|
20
|
-
def build
|
21
|
-
StateDetails.new({
|
22
|
-
entry_action: entry_action,
|
23
|
-
exit_action: exit_action,
|
24
|
-
transitions: transitions
|
25
|
-
})
|
26
|
-
end
|
27
|
-
|
28
|
-
def transition(event, next_state_name, action = nil)
|
29
|
-
transitions[event] = {
|
30
|
-
action: action,
|
31
|
-
next_state_name: next_state_name
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
def on_entry(action)
|
36
|
-
self.entry_action = action
|
37
|
-
end
|
38
|
-
|
39
|
-
def on_exit(action)
|
40
|
-
self.exit_action = action
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
attr_accessor :entry_action, :exit_action, :name, :transitions
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.build(observer, &definition)
|
50
|
-
builder = Dotpretty::StateMachineBuilder.new(observer)
|
51
|
-
builder.instance_eval(&definition)
|
52
|
-
return builder.build
|
53
|
-
end
|
54
|
-
|
55
|
-
def initialize(observer)
|
56
|
-
self.observer = observer
|
57
|
-
self.states = {}
|
58
|
-
end
|
59
|
-
|
60
|
-
def state(name, &definition)
|
61
|
-
state = StateDetailsBuilder.build(name, &definition)
|
62
|
-
states[name] = state
|
63
|
-
self.initial_state = name if !initial_state
|
64
|
-
end
|
65
|
-
|
66
|
-
def build
|
67
|
-
Dotpretty::StateMachine.new({
|
68
|
-
initial_state: initial_state,
|
69
|
-
observer: observer,
|
70
|
-
states: states
|
71
|
-
})
|
72
|
-
end
|
73
|
-
|
74
|
-
private
|
75
|
-
|
76
|
-
attr_accessor :initial_state, :observer, :states
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
data/lib/dotpretty.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "dotpretty/parser"
|