guard-compat 0.3.0 → 1.0.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/README.md +4 -0
- data/lib/guard/compat/example.rb +18 -13
- data/lib/guard/compat/plugin.rb +54 -2
- data/lib/guard/compat/test/helper.rb +7 -26
- data/lib/guard/compat/version.rb +1 -1
- data/spec/guard/compat/example_spec.rb +24 -25
- 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: dac5757ac72c5138cbe1e418d03c0940369134f9
|
4
|
+
data.tar.gz: 742bdf3df8a9dad0ff0ba6e625aa2357b0a000c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e25d27e907b888ee18a59d227b96ad7f5a728fcaf0370e995b8567d101171a0946e038093cc5c918198be3f8e2e16912b10cb5c79cc5e3dd876943057ceecfdc
|
7
|
+
data.tar.gz: d2082d551d671421e7f30e60017f86e6f9d842263b7bbc65731109dece82d101ca5e8fbed56753f669a06be3cc313aaf714e22347a07a05ec9c6c055ed23004a
|
data/README.md
CHANGED
@@ -40,6 +40,10 @@ require 'guard/myplugin'
|
|
40
40
|
|
41
41
|
# And your tests instantiating your plugin go here...
|
42
42
|
```
|
43
|
+
|
44
|
+
(OPTIONAL: if your plugin consists of many files, you may prefer to add the two above requires to your `spec/spec_helper.rb` or test setup files)
|
45
|
+
|
46
|
+
|
43
47
|
## Example
|
44
48
|
|
45
49
|
See [lib/guard/compat/example.rb](https://github.com/guard/guard-compat/blob/master/lib/guard/compat/example.rb ) for an example plugin implementation.
|
data/lib/guard/compat/example.rb
CHANGED
@@ -4,25 +4,30 @@
|
|
4
4
|
module Guard
|
5
5
|
class MyPlugin < Plugin
|
6
6
|
def start
|
7
|
-
Guard::
|
7
|
+
Guard::Compat::UI.notify('foo')
|
8
|
+
Guard::Compat::UI.color('foo')
|
8
9
|
|
9
|
-
Guard::UI.info('foo')
|
10
|
-
Guard::UI.warning('foo')
|
11
|
-
Guard::UI.error('foo')
|
12
|
-
Guard::UI.debug('foo')
|
13
|
-
Guard::UI.deprecation('foo')
|
10
|
+
Guard::Compat::UI.info('foo')
|
11
|
+
Guard::Compat::UI.warning('foo')
|
12
|
+
Guard::Compat::UI.error('foo')
|
13
|
+
Guard::Compat::UI.debug('foo')
|
14
|
+
Guard::Compat::UI.deprecation('foo')
|
14
15
|
end
|
15
16
|
|
16
17
|
def run_all
|
17
|
-
Guard::
|
18
|
+
Guard::Compat::UI.notify('foo', bar: :baz)
|
19
|
+
Guard::Compat::UI.color('foo', :white)
|
18
20
|
|
19
|
-
Guard::UI.info('foo', bar: :baz)
|
20
|
-
Guard::UI.warning('foo', bar: :baz)
|
21
|
-
Guard::UI.error('foo', bar: :baz)
|
22
|
-
Guard::UI.debug('foo', bar: :baz)
|
23
|
-
Guard::UI.deprecation('foo', bar: :baz)
|
21
|
+
Guard::Compat::UI.info('foo', bar: :baz)
|
22
|
+
Guard::Compat::UI.warning('foo', bar: :baz)
|
23
|
+
Guard::Compat::UI.error('foo', bar: :baz)
|
24
|
+
Guard::Compat::UI.debug('foo', bar: :baz)
|
25
|
+
Guard::Compat::UI.deprecation('foo', bar: :baz)
|
26
|
+
end
|
24
27
|
|
25
|
-
|
28
|
+
def run_on_modifications
|
29
|
+
Guard::Compat::UI.color_enabled?
|
30
|
+
Guard::Compat.matching_files(self, ['foo'])
|
26
31
|
end
|
27
32
|
end
|
28
33
|
end
|
data/lib/guard/compat/plugin.rb
CHANGED
@@ -11,8 +11,60 @@ unless Guard.const_defined?('Plugin')
|
|
11
11
|
# (e.g. when added to a Gemfile without `require: false`)
|
12
12
|
module Guard
|
13
13
|
class Plugin
|
14
|
-
def initialize
|
15
|
-
|
14
|
+
def initialize(_options = {})
|
15
|
+
msg = 'either Guard has not been required or you did not' \
|
16
|
+
' include guard/compat/test/helper'
|
17
|
+
fail NotImplementedError, msg
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Guard
|
24
|
+
module Compat
|
25
|
+
# TODO: this is just a temporary workaround to allow plugins
|
26
|
+
# to use watcher patterns in run_all
|
27
|
+
def self.matching_files(plugin, files)
|
28
|
+
unless Guard.const_defined?('Watcher')
|
29
|
+
msg = 'either Guard has not been required or you did not' \
|
30
|
+
' stub this method in your plugin tests'
|
31
|
+
fail NotImplementedError, msg
|
32
|
+
end
|
33
|
+
|
34
|
+
Guard::Watcher.match_files(plugin, files)
|
35
|
+
end
|
36
|
+
|
37
|
+
module UI
|
38
|
+
def self.color(text, *colors)
|
39
|
+
Guard::UI.send(:color, text, *colors)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.color_enabled?
|
43
|
+
Guard::UI.send(:color_enabled?)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.info(message, options = {})
|
47
|
+
Guard::UI.info(message, options)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.warning(message, options = {})
|
51
|
+
Guard::UI.warning(message, options)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.error(message, options = {})
|
55
|
+
Guard::UI.warning(message, options)
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.debug(message, options = {})
|
59
|
+
Guard::UI.warning(message, options)
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.deprecation(message, options = {})
|
63
|
+
Guard::UI.warning(message, options)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.notify(message, options = {})
|
67
|
+
Guard::Notifier.notify(message, options)
|
16
68
|
end
|
17
69
|
end
|
18
70
|
end
|
@@ -3,9 +3,12 @@
|
|
3
3
|
require 'guard/compat/plugin'
|
4
4
|
|
5
5
|
module Guard
|
6
|
+
# Monkey patch Plugin to just keep the interface
|
6
7
|
class Plugin
|
7
8
|
attr_reader :options
|
8
9
|
|
10
|
+
remove_method(:initialize)
|
11
|
+
|
9
12
|
def initialize(options = {})
|
10
13
|
@options = options
|
11
14
|
end
|
@@ -15,9 +18,8 @@ module Guard
|
|
15
18
|
# is while guard-process is being tested
|
16
19
|
unless Guard.const_defined?('Notifier')
|
17
20
|
module Notifier
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
+
# NOTE: do not implement anything here, so using any UI methods
|
22
|
+
# causes tests to fail
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -25,29 +27,8 @@ module Guard
|
|
25
27
|
# through using Guard::Notifier
|
26
28
|
unless Guard.const_defined?('UI')
|
27
29
|
module UI
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.warning(_msg, _options = {})
|
33
|
-
fail NotImplementedError, 'stub this method in your tests'
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.error(_msg, _options = {})
|
37
|
-
fail NotImplementedError, 'stub this method in your tests'
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.debug(_msg, _options = {})
|
41
|
-
fail NotImplementedError, 'stub this method in your tests'
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.deprecation(_msg, _options = {})
|
45
|
-
fail NotImplementedError, 'stub this method in your tests'
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.color_enabled?
|
49
|
-
fail NotImplementedError, 'stub this method in your tests'
|
50
|
-
end
|
30
|
+
# NOTE: do not implement anything here, so using any UI methods
|
31
|
+
# causes tests to fail
|
51
32
|
end
|
52
33
|
end
|
53
34
|
end
|
data/lib/guard/compat/version.rb
CHANGED
@@ -7,12 +7,10 @@ RSpec.describe Guard::MyPlugin, exclude_stubs: [Guard::Plugin] do
|
|
7
7
|
subject { described_class.new(options) }
|
8
8
|
|
9
9
|
before do
|
10
|
-
|
11
|
-
|
12
|
-
allow(Guard::UI).to receive(type.to_sym)
|
10
|
+
meths = %w(info warning error deprecation debug notify color color_enabled?)
|
11
|
+
meths.each do |type|
|
12
|
+
allow(Guard::Compat::UI).to receive(type.to_sym)
|
13
13
|
end
|
14
|
-
|
15
|
-
allow(Guard::UI).to receive(:color_enabled?).and_return(false)
|
16
14
|
end
|
17
15
|
|
18
16
|
it 'passes options' do
|
@@ -23,31 +21,32 @@ RSpec.describe Guard::MyPlugin, exclude_stubs: [Guard::Plugin] do
|
|
23
21
|
expect { described_class.new }.to_not raise_error
|
24
22
|
end
|
25
23
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
subject.run_all
|
24
|
+
describe '#start' do
|
25
|
+
before { subject.start }
|
26
|
+
%w(info warning error deprecation debug notify).each do |type|
|
27
|
+
specify do
|
28
|
+
expect(Guard::Compat::UI).to have_received(type.to_sym).with('foo')
|
29
|
+
end
|
30
|
+
end
|
34
31
|
end
|
35
32
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
describe '#run_all' do
|
34
|
+
before { subject.run_all }
|
35
|
+
%w(info warning error deprecation debug notify).each do |type|
|
36
|
+
specify do
|
37
|
+
expect(Guard::Compat::UI).to have_received(type.to_sym)
|
38
|
+
.with('foo', bar: :baz)
|
39
|
+
end
|
40
40
|
end
|
41
|
+
end
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
describe '#run_on_modifications' do
|
44
|
+
before do
|
45
|
+
allow(Guard::Compat).to receive(:matching_files)
|
45
46
|
end
|
46
|
-
end
|
47
47
|
|
48
|
-
|
49
|
-
expect(Guard::UI).to
|
50
|
-
|
48
|
+
before { subject.run_on_modifications }
|
49
|
+
specify { expect(Guard::Compat::UI).to have_received(:color_enabled?) }
|
50
|
+
specify { expect(Guard::Compat).to have_received(:matching_files) }
|
51
51
|
end
|
52
|
-
|
53
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard-compat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cezary Baginski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|