dotpretty 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|