guard-spinach 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,35 @@
1
+ ## guard-spinach
2
+
3
+ ### Options
4
+
5
+ <dl>
6
+ <dt>all_on_start</dt>
7
+ <dd>Boolean. Run all features on start.</dd>
8
+
9
+ <dt>generate</dt>
10
+ <dd>Boolean. Auto generate missing step files during each run.</dd>
11
+
12
+ <dt>backtrace</dt>
13
+ <dd>Boolean. Show backtrace</dd>
14
+
15
+ <dt>tags</dt>
16
+ <dd>Array. Run scenarios marked with tags</dd>
17
+
18
+ <dt>command_prefix</dt>
19
+ <dd>String. Allows you to inject something before the `spinach` command. E.g. `zeus spinach`.</dd>
20
+ </dl>
21
+
22
+ ### Example Guardfile snippet
23
+
24
+ ```ruby
25
+ guard 'spinach', command_prefix: 'zeus', all_on_start: true, generate: true, backtrace: true, tags:["@javascript", "~@disabled"] do
26
+ watch(%r|^features/(.*)\.feature|)
27
+ watch(%r|^features/steps/(.*)([^/]+)\.rb|) do |m|
28
+ "features/#{m[1]}#{m[2]}.feature"
29
+ end
30
+ end
31
+ ```
32
+
33
+ ## License
34
+
35
+ MIT (Expat) License. Copyright 2011 [Codegram Technologies](http://codegram.com)
data/lib/guard/spinach.rb CHANGED
@@ -3,8 +3,16 @@ require 'guard/guard'
3
3
 
4
4
  module Guard
5
5
  class Spinach < Guard
6
- def run_on_changes(paths)
7
- Runner.new(paths).run
6
+ def start
7
+ run_all if @options[:all_on_start]
8
+ end
9
+
10
+ def run_all
11
+ Runner.new([], @options).run
12
+ end
13
+
14
+ def run_on_change(paths)
15
+ Runner.new(paths, @options).run
8
16
  end
9
17
  end
10
18
  end
@@ -1,19 +1,42 @@
1
1
  module Guard
2
2
  class Spinach
3
3
  class Runner
4
- attr_reader :paths
4
+ attr_reader :paths, :options
5
5
 
6
- def initialize(paths)
6
+ def initialize(paths, opts = nil)
7
7
  @paths = paths
8
+ @options = opts || {}
8
9
  end
9
10
 
10
11
  def run
11
- puts "Running #{paths.join(" ")}\n"
12
+ puts "Running #{paths.empty? ? "all Spinach features" : paths.join(" ")}"
12
13
  system(run_command)
14
+ notify($? == 0)
13
15
  end
14
16
 
15
17
  def run_command
16
- "spinach #{paths.join(" ")}"
18
+ cmd = []
19
+ cmd << @options[:command_prefix] if @options[:command_prefix]
20
+ cmd << 'spinach'
21
+ cmd << paths.join(" ")
22
+ cmd << '-g' if @options[:generate]
23
+ cmd << "-t #{@options[:tags].join(',')}" if @options[:tags] && @options[:tags].any?
24
+ cmd << '-b' if @options[:backtrace]
25
+ cmd.join(" ")
26
+ end
27
+
28
+ def notify(passed)
29
+ opts = {title: 'Spinach results', priority: 2}
30
+
31
+ if passed
32
+ status = 'Passed'
33
+ image = :success
34
+ else
35
+ status = 'Failed'
36
+ image = :failed
37
+ end
38
+
39
+ Notifier.notify(status, opts.merge(image: image))
17
40
  end
18
41
  end
19
42
  end
@@ -1,4 +1,4 @@
1
- guard 'spinach' do
1
+ guard 'spinach', :all_on_start => false do
2
2
  watch(%r|^features/(.*)\.feature|)
3
3
  watch(%r|^features/steps/(.*)([^/]+)\.rb|) do |m|
4
4
  "features/#{m[1]}#{m[2]}.feature"
@@ -1,3 +1,3 @@
1
1
  module Guard
2
- SPINACH_VERSION = "0.0.2"
2
+ SPINACH_VERSION = "0.0.3"
3
3
  end
@@ -1,34 +1,61 @@
1
1
  require_relative '../../test_helper'
2
2
 
3
3
  describe Guard::Spinach::Runner do
4
- subject do
5
- Guard::Spinach::Runner.new(paths)
6
- end
7
- let(:paths) do
8
- ['fake/path.feature', 'foo/bar.feature']
9
- end
10
- describe "#initialize" do
11
- it "sets up a bunch of file paths" do
12
- subject.paths.must_include 'fake/path.feature'
13
- subject.paths.must_include 'foo/bar.feature'
4
+ let(:runner) { Guard::Spinach::Runner.new(paths, options) }
5
+ let(:paths) { ['fake/path.feature', 'foo/bar.feature'] }
6
+ let(:options) { nil }
7
+
8
+ describe '#initialize' do
9
+ it 'sets up a bunch of file paths' do
10
+ runner.paths.must_include 'fake/path.feature'
11
+ runner.paths.must_include 'foo/bar.feature'
14
12
  end
15
13
  end
16
- describe "#run_command" do
17
- it "generates a valid run command" do
18
- subject.run_command.must_equal "spinach fake/path.feature foo/bar.feature"
14
+
15
+ describe '#run_command' do
16
+ it 'generates a valid run command' do
17
+ runner.run_command.must_equal 'spinach fake/path.feature foo/bar.feature'
18
+ end
19
+
20
+ describe 'when :command_prefix option is given' do
21
+ let (:options) { { :command_prefix => 'zeus' } }
22
+ it 'generates a run command with prefix' do
23
+ runner.run_command.must_equal 'zeus spinach fake/path.feature foo/bar.feature'
24
+ end
25
+ end
26
+
27
+ describe 'when :generate option is given' do
28
+ let (:options) { { :generate => true } }
29
+ it 'generates a run command with -g flag' do
30
+ runner.run_command.must_equal 'spinach fake/path.feature foo/bar.feature -g'
31
+ end
19
32
  end
20
33
  end
21
- describe "#run" do
22
- it "runs spinach on all the features in the list" do
23
- subject.expects(:system).with("spinach fake/path.feature foo/bar.feature")
24
- capture_output{ subject.run }
25
- end
26
- it "outputs a message" do
27
- subject.stubs(:system)
28
- output = capture_output{ subject.run }
29
- output.must_include "Running"
34
+
35
+ describe '#run' do
36
+ it 'runs spinach on all the features in the list' do
37
+ runner.expects(:system).with('spinach fake/path.feature foo/bar.feature')
38
+ capture_output{ runner.run }
39
+ end
40
+
41
+ it 'outputs a message' do
42
+ runner.stubs(:system)
43
+ output = capture_output{ runner.run }
44
+ output.must_include 'Running'
30
45
  output.must_include paths[0]
31
46
  output.must_include paths[1]
32
47
  end
48
+
49
+ it 'notifies of success' do
50
+ runner.stubs(:system).returns(`(exit 0)`)
51
+ Guard::Notifier.expects(:notify).with('Passed', title: 'Spinach results', image: :success, priority: 2)
52
+ runner.run
53
+ end
54
+
55
+ it 'notifier of failures' do
56
+ runner.stubs(:system).returns(`(exit 1)`)
57
+ Guard::Notifier.expects(:notify).with('Failed', title: 'Spinach results', image: :failed, priority: 2)
58
+ runner.run
59
+ end
33
60
  end
34
61
  end
@@ -2,15 +2,77 @@ require_relative '../test_helper'
2
2
 
3
3
  describe Guard::Spinach do
4
4
  subject do
5
- Guard::Spinach.new(data)
5
+ Guard::Spinach.new(data, options)
6
6
  end
7
7
  let(:paths) do
8
8
  ['fake/path.feature', 'foo/bar.feature']
9
9
  end
10
+ let(:data) do
11
+ []
12
+ end
13
+ let(:options) do
14
+ {}
15
+ end
10
16
  describe "#run_on_change" do
11
17
  it "fires run on a runner" do
12
18
  Guard::Spinach::Runner.any_instance.expects(:system).with(
13
19
  "spinach fake/path.feature foo/bar.feature")
20
+ subject.run_on_change(['fake/path.feature', 'foo/bar.feature'])
21
+ end
22
+ describe "with generate enabled" do
23
+ let(:options) do
24
+ { :generate => true }
25
+ end
26
+ it "runs with step definition file generation enabled" do
27
+ Guard::Spinach::Runner.any_instance.expects(:system).with(
28
+ "spinach #{paths.join(' ')} -g")
29
+ subject.run_on_change(paths)
30
+ end
31
+ end
32
+ end
33
+ describe "#run_all" do
34
+ it "fires run on a runner" do
35
+ Guard::Spinach::Runner.any_instance.expects(:system).with(
36
+ "spinach ")
37
+ subject.run_all
38
+ end
39
+ describe "with generate enabled" do
40
+ let(:options) do
41
+ { :generate => true }
42
+ end
43
+ it "runs with step definition file generation enabled" do
44
+ Guard::Spinach::Runner.any_instance.expects(:system).with(
45
+ "spinach -g")
46
+ subject.run_all
47
+ end
48
+ end
49
+ end
50
+ describe "#start" do
51
+ describe "with defaults" do
52
+ it "does not fire run on a runner" do
53
+ Guard::Spinach::Runner.any_instance.expects(:system).never
54
+ subject.start
55
+ end
56
+ end
57
+ describe "with all_on_start => true" do
58
+ let(:options) do
59
+ { :all_on_start => true }
60
+ end
61
+ it "fires run on a runner" do
62
+ Guard::Spinach::Runner.any_instance.expects(:system).with(
63
+ "spinach ")
64
+ subject.start
65
+ end
66
+ end
67
+ describe "with generate and all_on_start" do
68
+ let(:options) do
69
+ { :generate => true, :all_on_start => true }
70
+ end
71
+ it "runs with step definition file generation enabled" do
72
+ Guard::Spinach::Runner.any_instance.expects(:system).with(
73
+ "spinach -g")
74
+ subject.start
75
+ end
14
76
  end
15
77
  end
16
78
  end
data/test/test_helper.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'bundler/setup'
2
2
  Bundler.require :default, :test
3
3
 
4
- require 'mocha'
5
4
  require 'minitest/spec'
6
5
  require 'minitest/autorun'
6
+ require 'mocha/setup'
7
7
 
8
8
  require_relative '../lib/guard/spinach'
9
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-spinach
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-09 00:00:00.000000000 Z
12
+ date: 2013-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard
@@ -86,6 +86,7 @@ files:
86
86
  - .rvmrc
87
87
  - Gemfile
88
88
  - Guardfile
89
+ - README.md
89
90
  - Rakefile
90
91
  - guard-spinach.gemspec
91
92
  - lib/guard/spinach.rb
@@ -115,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
116
  version: '0'
116
117
  requirements: []
117
118
  rubyforge_project:
118
- rubygems_version: 1.8.21
119
+ rubygems_version: 1.8.23
119
120
  signing_key:
120
121
  specification_version: 3
121
122
  summary: guard-spinach is a guard plugin for spinach
@@ -123,3 +124,4 @@ test_files:
123
124
  - test/guard/spinach/runner_test.rb
124
125
  - test/guard/spinach_test.rb
125
126
  - test/test_helper.rb
127
+ has_rdoc: