spectator 1.3.0 → 1.3.1
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/README.md +1 -1
- data/lib/spectator.rb +31 -28
- data/lib/spectator/success_notifier.rb +1 -0
- data/lib/spectator/ui.rb +20 -29
- data/lib/spectator/version.rb +1 -1
- data/spec/spectator_spec.rb +1 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8224d0dbd81297094686627e2c57a002ee6ebb10
|
4
|
+
data.tar.gz: d03578fac43dec450fca0c13e9710ffc2e04fde8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccc07eaab375e7ca4ed446a9780db3ab3b235d92ff220aa4f1ca9579199facdbd28e1bb074fe059412ae35240b4e7b8f1defd288ca32e0297ca4524762650b6a
|
7
|
+
data.tar.gz: db74db3619284f9641f06241d7cc12408ea793d1899a8ee471aa6142af89bae64e8cb5f612477c4ef18dc56175bb6374153f5f10060bc69aa267a523e1d1b09c
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Spectator
|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/elia/spectator)
|
4
4
|
|
5
5
|
_Test driven development red-green cycle for simple people!_
|
6
6
|
|
data/lib/spectator.rb
CHANGED
@@ -54,41 +54,44 @@ module Spectator
|
|
54
54
|
path_watcher.on_change { ui << :run_specs }
|
55
55
|
path_watcher.watch_paths!
|
56
56
|
|
57
|
-
ui.on(:
|
58
|
-
|
59
|
-
|
60
|
-
files = path_watcher.pop_files
|
61
|
-
specs = specs_matcher.specs_for(files)
|
62
|
-
if specs.any?
|
63
|
-
result = ui.run spec_runner.command(specs)
|
64
|
-
success_notifier.notify(result)
|
65
|
-
end
|
66
|
-
ui.wait_for_changes
|
67
|
-
end
|
68
|
-
|
69
|
-
ui.on(:interrupt) do
|
70
|
-
puts ' (Interrupted with CTRL+C)'.red
|
71
|
-
p [ui.status, ui.interrupted_status]
|
72
|
-
case ui.interrupted_status
|
73
|
-
when :wait_for_input then ui.exit
|
74
|
-
when :running_specs then ui.wait_for_changes
|
75
|
-
when :exiting then Kernel.abort
|
76
|
-
else Thread.new { ui.ask_what_to_do }
|
77
|
-
end
|
78
|
-
end
|
57
|
+
ui.on(:run_all) { run_all_handler }
|
58
|
+
ui.on(:run_specs) { run_specs_handler }
|
59
|
+
ui.on(:interrupt) { interrupt_handler }
|
79
60
|
|
80
61
|
trap('INT') { ui.interrupt! }
|
62
|
+
ui.start
|
63
|
+
end
|
81
64
|
|
82
|
-
|
83
|
-
|
65
|
+
def run_all_handler
|
66
|
+
return unless ui.can_run_specs?
|
84
67
|
|
85
|
-
|
86
|
-
|
68
|
+
ui.status = :running_specs
|
69
|
+
result = ui.run(spec_runner.command)
|
70
|
+
success_notifier.notify(result)
|
71
|
+
ui.status = nil if ui.status == :running_specs
|
72
|
+
end
|
73
|
+
|
74
|
+
def run_specs_handler
|
75
|
+
return unless ui.can_run_specs?
|
76
|
+
ui.status = :running_specs
|
77
|
+
files = path_watcher.pop_files
|
78
|
+
specs = specs_matcher.specs_for(files)
|
79
|
+
if specs.any?
|
80
|
+
result = ui.run spec_runner.command(specs)
|
87
81
|
success_notifier.notify(result)
|
88
|
-
ui.status = nil if ui.status == :running_specs
|
89
82
|
end
|
83
|
+
ui.wait_for_changes
|
84
|
+
end
|
90
85
|
|
91
|
-
|
86
|
+
def interrupt_handler
|
87
|
+
puts ' (Interrupted with CTRL+C)'.red
|
88
|
+
p [ui.status, ui.interrupted_status]
|
89
|
+
case ui.interrupted_status
|
90
|
+
when :wait_for_input then ui.exit
|
91
|
+
when :running_specs then ui.wait_for_changes
|
92
|
+
when :exiting then Kernel.abort
|
93
|
+
else Thread.new { ui.ask_what_to_do }
|
94
|
+
end
|
92
95
|
end
|
93
96
|
end
|
94
97
|
|
data/lib/spectator/ui.rb
CHANGED
@@ -6,7 +6,6 @@ module Spectator
|
|
6
6
|
class UI
|
7
7
|
def initialize(config)
|
8
8
|
@mutex = Mutex.new
|
9
|
-
@status_mutex = Mutex.new
|
10
9
|
@status = nil
|
11
10
|
@status_callbacks = {}
|
12
11
|
@callbacks = {}
|
@@ -19,30 +18,14 @@ module Spectator
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def start
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
thread = Thread.new do
|
26
|
-
loop do
|
27
|
-
wait_for_changes
|
28
|
-
event = queue.pop
|
29
|
-
p [:queue, event]
|
30
|
-
mutex.synchronize { @callbacks[event].call }
|
31
|
-
end
|
32
|
-
end
|
21
|
+
wait_for_changes
|
22
|
+
thread = Thread.new { event_loop }
|
33
23
|
p thread
|
34
24
|
Thread.pass
|
35
25
|
sleep
|
36
26
|
end
|
37
27
|
|
38
|
-
|
39
|
-
|
40
|
-
def status= status
|
41
|
-
@status_mutex.synchronize do
|
42
|
-
@status = status
|
43
|
-
(@status_callbacks[status] || noop).call
|
44
|
-
end
|
45
|
-
end
|
28
|
+
attr_accessor :status
|
46
29
|
|
47
30
|
def noop
|
48
31
|
@noop ||= lambda {}
|
@@ -55,10 +38,6 @@ module Spectator
|
|
55
38
|
|
56
39
|
attr_accessor :interrupted_status
|
57
40
|
|
58
|
-
def on_status status, &block
|
59
|
-
@status_callbacks[status] = block
|
60
|
-
end
|
61
|
-
|
62
41
|
def on event, &block
|
63
42
|
@callbacks[event] = block
|
64
43
|
end
|
@@ -98,11 +77,6 @@ module Spectator
|
|
98
77
|
super
|
99
78
|
end
|
100
79
|
|
101
|
-
def terminal_columns
|
102
|
-
cols = `stty -a 2>&1`.scan(/ (\d+) columns/).flatten.first
|
103
|
-
$?.success? ? cols.to_i : 80
|
104
|
-
end
|
105
|
-
|
106
80
|
def run cmd
|
107
81
|
$running = true
|
108
82
|
start = Time.now
|
@@ -118,5 +92,22 @@ module Spectator
|
|
118
92
|
p [:can_run_specs?, status]
|
119
93
|
status == :waiting_for_changes
|
120
94
|
end
|
95
|
+
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def terminal_columns
|
100
|
+
cols = `tput cols 2> /dev/tty`.strip.to_i
|
101
|
+
($?.success? && cols.nonzero?) ? cols : 80
|
102
|
+
end
|
103
|
+
|
104
|
+
def event_loop
|
105
|
+
loop do
|
106
|
+
event = @queue.pop
|
107
|
+
p [:queue, event]
|
108
|
+
@mutex.synchronize { @callbacks[event].call }
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
121
112
|
end
|
122
113
|
end
|
data/lib/spectator/version.rb
CHANGED
data/spec/spectator_spec.rb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'spectator'
|
3
3
|
|
4
|
-
$spectator_debug = true
|
5
|
-
|
6
|
-
describe Spectator do
|
7
|
-
it 'does something' do
|
8
|
-
#nope
|
9
|
-
end
|
10
|
-
end
|
4
|
+
# $spectator_debug = true
|
11
5
|
|
12
6
|
describe Spectator::SpecRunner do
|
13
7
|
let(:config) { Spectator.config }
|
@@ -18,5 +12,4 @@ describe Spectator::SpecRunner do
|
|
18
12
|
expect(runner.default_files).to eq(['spec'])
|
19
13
|
end
|
20
14
|
end
|
21
|
-
|
22
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spectator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elia
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: listen
|