fudge 0.5.0 → 0.6.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.
Files changed (36) hide show
  1. data/lib/fudge/build.rb +25 -10
  2. data/lib/fudge/cli.rb +1 -0
  3. data/lib/fudge/rspec/matchers.rb +54 -49
  4. data/lib/fudge/runner.rb +1 -0
  5. data/lib/fudge/tasks/composite_task.rb +6 -4
  6. data/lib/fudge/tasks/each_directory.rb +1 -1
  7. data/lib/fudge/tasks/in_directory.rb +1 -1
  8. data/lib/fudge/tasks/shell.rb +1 -1
  9. data/lib/fudge/tasks/task.rb +5 -0
  10. data/lib/fudge/version.rb +1 -1
  11. data/spec/lib/fudge/build_spec.rb +19 -4
  12. data/spec/lib/fudge/cli_spec.rb +16 -16
  13. data/spec/lib/fudge/description_spec.rb +43 -42
  14. data/spec/lib/fudge/exceptions_spec.rb +17 -7
  15. data/spec/lib/fudge/formatters/simple_spec.rb +15 -15
  16. data/spec/lib/fudge/output_checker_spec.rb +2 -2
  17. data/spec/lib/fudge/parser_spec.rb +3 -3
  18. data/spec/lib/fudge/runner_spec.rb +9 -9
  19. data/spec/lib/fudge/tasks/brakeman_spec.rb +7 -7
  20. data/spec/lib/fudge/tasks/bundler_spec.rb +5 -5
  21. data/spec/lib/fudge/tasks/cane_spec.rb +8 -8
  22. data/spec/lib/fudge/tasks/composite_task_spec.rb +16 -15
  23. data/spec/lib/fudge/tasks/each_directory_spec.rb +9 -9
  24. data/spec/lib/fudge/tasks/flay_spec.rb +8 -8
  25. data/spec/lib/fudge/tasks/flog_spec.rb +13 -13
  26. data/spec/lib/fudge/tasks/in_directory_spec.rb +4 -4
  27. data/spec/lib/fudge/tasks/rake_spec.rb +5 -5
  28. data/spec/lib/fudge/tasks/rspec_spec.rb +16 -16
  29. data/spec/lib/fudge/tasks/shell_spec.rb +14 -14
  30. data/spec/lib/fudge/tasks/sub_process_spec.rb +3 -3
  31. data/spec/lib/fudge/tasks/task_spec.rb +1 -1
  32. data/spec/lib/fudge/tasks/yard_spec.rb +10 -10
  33. data/spec/lib/fudge/tasks_spec.rb +4 -4
  34. data/spec/lib/fudge/with_directory_spec.rb +2 -2
  35. metadata +145 -107
  36. checksums.yaml +0 -7
data/lib/fudge/build.rb CHANGED
@@ -6,9 +6,10 @@ module Fudge
6
6
  # @return [String] a brief description of the build; this is
7
7
  # output by the 'list' command
8
8
  attr_accessor :about
9
- attr_accessor :callbacks
9
+ attr_accessor :callbacks, :time
10
10
  attr_reader :success_hooks, :failure_hooks
11
11
  attr_reader :description
12
+ attr_reader :formatter
12
13
 
13
14
  def initialize(*args)
14
15
  @success_hooks = []
@@ -19,26 +20,40 @@ module Fudge
19
20
 
20
21
  # Run task
21
22
  def run(options={})
22
- formatter = options[:formatter] || Fudge::Formatters::Simple.new
23
+ start_time = Time.new
24
+ init_formatter(options)
23
25
  success = super
24
26
  if callbacks
25
- message "Running #{success ? 'success' : 'failure'} callbacks...", formatter
26
- hooks = success ? @success_hooks : @failure_hooks
27
-
28
- hooks.each do |hook|
29
- return false unless hook.run :formatter => formatter
30
- end
27
+ return false unless run_callbacks(success)
31
28
  else
32
- message "Skipping callbacks...", formatter
29
+ message "Skipping callbacks..."
33
30
  end
31
+ report_time(start_time, time)
34
32
 
35
33
  success
36
34
  end
37
35
 
38
36
  private
39
37
 
40
- def message(message, formatter)
38
+ def message(message)
41
39
  formatter.write { |w| w.info(message) }
42
40
  end
41
+
42
+ def init_formatter(options)
43
+ @formatter = options[:formatter] || Fudge::Formatters::Simple.new
44
+ end
45
+
46
+ def report_time(start_time, time)
47
+ message "Finished in #{"%.2f" % (Time.new - start_time)} seconds." if time
48
+ end
49
+
50
+ def run_callbacks(success)
51
+ message "Running #{success ? 'success' : 'failure'} callbacks..."
52
+ hooks = success ? @success_hooks : @failure_hooks
53
+
54
+ hooks.each do |hook|
55
+ return false unless hook.run :formatter => formatter
56
+ end
57
+ end
43
58
  end
44
59
  end
data/lib/fudge/cli.rb CHANGED
@@ -14,6 +14,7 @@ module Fudge
14
14
  desc "build [BUILD_NAME]",
15
15
  "Run a build with the given name (default: 'default')"
16
16
  method_option :callbacks, :type => :boolean, :default => false
17
+ method_option :time, :type => :boolean, :default => false
17
18
  # Runs the parsed builds
18
19
  # @param [String] build_name the given build to run (default 'default')
19
20
  def build(build_name='default')
@@ -4,68 +4,65 @@ RSpec::Matchers.define :be_registered_as do |key|
4
4
  end
5
5
  end
6
6
 
7
- # Collection of matchers for use in a test environment
8
- module FudgeMatchers
9
- # Run matcher
10
- class Run
11
- attr_reader :args, :expected, :task
7
+ RSpec::Matchers.define :run_command do |*expected|
8
+ match do |actual|
9
+ @args = expected.last.kind_of?(Hash) ? expected.delete_at(-1) : {}
10
+ @commands = expected
11
+ @args[:formatter] ||= Fudge::Formatters::Simple.new
12
12
 
13
- def initialize(expected, args={})
14
- @expected = expected
15
- @args = args
16
- @args[:formatter] ||= Fudge::Formatters::Simple.new
17
- end
18
-
19
- def matches?(task)
20
- @task = task
21
- ran = []
13
+ @ran = []
22
14
 
23
- to_stub =
24
- if task.is_a?(Fudge::Tasks::Shell)
25
- task
26
- else
27
- Fudge::Tasks::Shell.any_instance
28
- end
29
-
30
- to_stub.stub(:run_command) do |cmd, formatter|
15
+ stub = ->(*cmd, formatter) {
31
16
  raise "Run Command requires a formatter" unless formatter
32
- ran.push(cmd)
17
+ @ran.push(*cmd)
33
18
  ['dummy output', true]
34
- end
19
+ }
35
20
 
36
- task.run(args)
37
-
38
- @actual = ran
39
- run_matches?(ran, expected)
21
+ if RSpec::Version::STRING =~ /\A3\.[0-9]+\.[0-9]+/
22
+ if actual.is_a?(Fudge::Tasks::Shell)
23
+ allow(actual).to receive(:run_command, &stub)
24
+ else
25
+ allow_any_instance_of(Fudge::Tasks::Shell).to receive(:run_command, &stub)
26
+ end
27
+ else
28
+ if actual.is_a?(Fudge::Tasks::Shell)
29
+ actual.stub(:run_command, &stub)
30
+ else
31
+ Fudge::Tasks::Shell.any_instance.stub(:run_command, &stub)
32
+ end
40
33
  end
41
34
 
42
- # Failure message
43
- def failure_message_for_should
44
- message = ""
45
- message << "Expected task :#{@task.class.name} "
46
- message << "to run:\n #{@expected}\n"
47
- message << "but it ran:\n #{@actual}"
48
- end
35
+ actual.run(@args)
49
36
 
50
- private
51
- def run_matches?(ran, expected)
52
- if expected.is_a? Regexp
53
- ran.any? {|cmd| cmd =~ expected}
37
+ @commands.all? do |cmd|
38
+ if cmd.is_a? Regexp
39
+ @ran.any? {|ran| ran =~ cmd}
54
40
  else
55
- ran.include? expected
41
+ @ran.include? cmd
56
42
  end
57
43
  end
58
44
  end
59
- end
60
45
 
61
- # Matcher to test a command has been run by the task
62
- def run_command(cmd, options={})
63
- FudgeMatchers::Run.new cmd, options
46
+ format_message = ->(actual) {
47
+ message = ""
48
+ message << "Expected task :#{actual.class.name} "
49
+ message << "to run:\n #{@commands}\n"
50
+ message << "but it ran:\n #{@ran}"
51
+ }
52
+ if RSpec::Version::STRING =~ /\A3\.[0-9]+\.[0-9]+/
53
+ failure_message(&format_message)
54
+ else
55
+ failure_message_for_should(&format_message)
56
+ end
64
57
  end
65
58
 
66
59
  RSpec::Matchers.define :succeed_with_output do |output|
67
60
  match do |subject|
68
- subject.stub(:run_command).and_return([output, true])
61
+ if RSpec::Version::STRING =~ /\A3\.[0-9]+\.[0-9]+/
62
+ allow(subject).to receive(:run_command).and_return([output, true])
63
+ else
64
+ subject.stub(:run_command).and_return([output, true])
65
+ end
69
66
 
70
67
  subject.run
71
68
  end
@@ -76,11 +73,19 @@ shared_examples_for 'bundle aware' do
76
73
  @normal_cmd = subject.send(:cmd)
77
74
  end
78
75
 
79
- it "should prefix the command with bundle exec when bundler is set" do
80
- subject.should run_command("bundle exec #{@normal_cmd}", :bundler => true)
76
+ it "prefixes the command with bundle exec when bundler is set" do
77
+ if RSpec::Version::STRING =~ /\A3\.[0-9]+\.[0-9]+/
78
+ expect(subject).to run_command("bundle exec #{@normal_cmd}", :bundler => true)
79
+ else
80
+ subject.should run_command("bundle exec #{@normal_cmd}", :bundler => true)
81
+ end
81
82
  end
82
83
 
83
- it "should not prefix the command with bundle exec when bundler is not set" do
84
- subject.should run_command(@normal_cmd, :bundler => false)
84
+ it "does not prefix the command with bundle exec when bundler is not set" do
85
+ if RSpec::Version::STRING =~ /\A3\.[0-9]+\.[0-9]+/
86
+ expect(subject).to run_command(@normal_cmd, :bundler => false)
87
+ else
88
+ subject.should run_command(@normal_cmd, :bundler => false)
89
+ end
85
90
  end
86
91
  end
data/lib/fudge/runner.rb CHANGED
@@ -26,6 +26,7 @@ module Fudge
26
26
  # Run the build
27
27
  build = @description.builds[which.to_sym]
28
28
  build.callbacks = options[:callbacks]
29
+ build.time = options[:time]
29
30
  build.run :formatter => options[:formatter]
30
31
  end
31
32
 
@@ -13,7 +13,7 @@ module Fudge
13
13
 
14
14
  # Runs the task (by default running all other tasks in order)
15
15
  def run(options={})
16
- formatter = options[:formatter] || Fudge::Formatters::Simple.new
16
+ formatter = get_formatter(options)
17
17
  tasks.each do |t|
18
18
  apply_directory_settings(t)
19
19
  output_message(t, formatter)
@@ -53,9 +53,11 @@ module Fudge
53
53
  end
54
54
 
55
55
  def output_message(t, formatter)
56
- formatter.write do |w|
57
- w.info("Running task").notice(task_name(t)).notice(args_s(t))
58
- end
56
+ name = task_name(t)
57
+ args = args_s(t)
58
+ formatter.write do |w|
59
+ w.info("Running task").notice(name).notice(args)
60
+ end
59
61
  end
60
62
 
61
63
  end
@@ -13,7 +13,7 @@ module Fudge
13
13
 
14
14
  # Run task
15
15
  def run(options={})
16
- formatter = options[:formatter] || Fudge::Formatters::Simple.new
16
+ formatter = get_formatter(options)
17
17
  directories.all? do |dir|
18
18
  skip_directory?(dir) ||
19
19
  WithDirectory.new(dir, formatter).inside do
@@ -11,7 +11,7 @@ module Fudge
11
11
 
12
12
  # Run task
13
13
  def run(options={})
14
- formatter = options[:formatter] || Fudge::Formatters::Simple.new
14
+ formatter = get_formatter(options)
15
15
  WithDirectory.new(@directory, formatter).inside do
16
16
  super
17
17
  end
@@ -12,7 +12,7 @@ module Fudge
12
12
  #
13
13
  # @param [Hash] options Any options to pass to the shell
14
14
  def run(options={})
15
- formatter = options[:formatter] || Fudge::Formatters::Simple.new
15
+ formatter = get_formatter(options)
16
16
  @output, success = run_command(cmd(options), formatter)
17
17
 
18
18
  return false unless success
@@ -22,6 +22,11 @@ module Fudge
22
22
 
23
23
  @args
24
24
  end
25
+
26
+ private
27
+ def get_formatter(options = {})
28
+ options[:formatter] || Fudge::Formatters::Simple.new
29
+ end
25
30
  end
26
31
  end
27
32
  end
data/lib/fudge/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Fudge
2
2
  # Define gem version
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fudge::Build do
4
- it { should be_a Fudge::Tasks::CompositeTask }
4
+ it { is_expected.to be_a Fudge::Tasks::CompositeTask }
5
5
 
6
6
  describe "#run" do
7
7
 
@@ -12,8 +12,8 @@ describe Fudge::Build do
12
12
  it "prints messages to the formatter instead of default" do
13
13
  subject.run :formatter => formatter
14
14
 
15
- stdout.string.should_not be_empty
16
- stdout.string.should include "Skipping callbacks..."
15
+ expect(stdout.string).not_to be_empty
16
+ expect(stdout.string).to include "Skipping callbacks..."
17
17
  end
18
18
 
19
19
  context "when there are callback hooks" do
@@ -25,7 +25,22 @@ describe Fudge::Build do
25
25
  end
26
26
 
27
27
  it "passesformatter down to the hook run" do
28
- hook.should_receive(:run).with(:formatter =>formatter).and_return(true)
28
+ expect(hook).to receive(:run).with(:formatter =>formatter).and_return(true)
29
+ subject.run :formatter => formatter
30
+ end
31
+ end
32
+
33
+ context "when the `time` flag is set" do
34
+ before do
35
+ subject.callbacks = true
36
+ allow(subject).to receive(:run_callbacks).and_return(true)
37
+ subject.time = true
38
+ end
39
+
40
+ it "should print out the time of the build" do
41
+ expect(subject).to receive(:message) do |message|
42
+ expect(message).to match /Finished in \d+.\d\d seconds./
43
+ end
29
44
  subject.run :formatter => formatter
30
45
  end
31
46
  end
@@ -18,7 +18,7 @@ describe Fudge::Cli do
18
18
  AnotherDummyTask.ran = false
19
19
  end
20
20
 
21
- describe :build do
21
+ describe ".build" do
22
22
  before :each do
23
23
  contents = <<-RUBY
24
24
  build :default do
@@ -30,26 +30,26 @@ describe Fudge::Cli do
30
30
  end
31
31
  RUBY
32
32
  file = double(File, read: contents, path: 'here')
33
- File.stub(:open) { |&block| block.yield file }
33
+ allow(File).to receive(:open) { |&block| block.yield file }
34
34
  end
35
35
 
36
36
  context "when not given a build name" do
37
37
  it "runs the default build" do
38
38
  subject.build 'default'
39
- expect(DummyTask.ran).to be_true
39
+ expect(DummyTask.ran).to be_truthy
40
40
  end
41
41
  end
42
42
 
43
43
  context "when given a build name" do
44
44
  it "runs the only the named build" do
45
45
  subject.build 'other'
46
- expect(DummyTask.ran).to be_false
47
- expect(AnotherDummyTask.ran).to be_true
46
+ expect(DummyTask.ran).to be_falsey
47
+ expect(AnotherDummyTask.ran).to be_truthy
48
48
  end
49
49
  end
50
50
  end
51
51
 
52
- describe :init do
52
+ describe ".init" do
53
53
  let (:file_state) { { exists: false, content: '' } }
54
54
  let (:override_file_state) do
55
55
  ->(exists, content) {
@@ -60,18 +60,18 @@ describe Fudge::Cli do
60
60
 
61
61
  before :each do
62
62
  file = double(File)
63
- file.stub(:<<) { |str| file_state[:content] = str }
64
- file.stub(:read) { file_state[:content] }
65
- File.stub(:open) do |&block|
63
+ allow(file).to receive(:<<) { |str| file_state[:content] = str }
64
+ allow(file).to receive(:read) { file_state[:content] }
65
+ allow(File).to receive(:open) do |&block|
66
66
  file_state[:exists] = true
67
67
  block.yield file
68
68
  end
69
- File.stub(:exists?) { |_| file_state[:exists] }
69
+ allow(File).to receive(:exists?) { |_| file_state[:exists] }
70
70
 
71
71
  @output = ''
72
72
  shell = double('Thor::Shell')
73
- shell.stub(:say) { |what| @output = what }
74
- subject.stub(:shell).and_return(shell)
73
+ allow(shell).to receive(:say) { |what| @output = what }
74
+ allow(subject).to receive(:shell).and_return(shell)
75
75
  end
76
76
 
77
77
  context "when a Fudgefile does not exist in the current directory" do
@@ -117,7 +117,7 @@ describe Fudge::Cli do
117
117
  end
118
118
  end
119
119
 
120
- describe :list do
120
+ describe ".list" do
121
121
  before :each do
122
122
  contents = <<-RUBY
123
123
  build :default do
@@ -129,12 +129,12 @@ describe Fudge::Cli do
129
129
  end
130
130
  RUBY
131
131
  file = double(File, read: contents, path: 'here')
132
- File.stub(:open) { |&block| block.yield file }
132
+ allow(File).to receive(:open) { |&block| block.yield file }
133
133
 
134
134
  @output = ''
135
135
  shell = double('Thor::Shell')
136
- shell.stub(:print_table) { |tab| @output = tab.map { |build, desc| "#{build}\t#{desc}" }.join("\n") }
137
- subject.stub(:shell).and_return(shell)
136
+ allow(shell).to receive(:print_table) { |tab| @output = tab.map { |build, desc| "#{build}\t#{desc}" }.join("\n") }
137
+ allow(subject).to receive(:shell).and_return(shell)
138
138
  end
139
139
 
140
140
  context "when not given a filter string" do
@@ -1,8 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fudge::Description do
4
+ let(:input) { '' }
5
+ let(:file) { StringIO.new(input).tap { |s| allow(s).to receive(:path).and_return('') } }
6
+ subject { described_class.new(file) }
7
+
4
8
  let(:build) { subject.builds.values.first }
5
- let(:build_tasks) { build.tasks.map }
9
+ let(:build_tasks) { build.tasks.dup }
10
+
6
11
 
7
12
  def make_build
8
13
  subject.build :default do
@@ -12,38 +17,34 @@ describe Fudge::Description do
12
17
  build.callbacks = callbacks
13
18
  end
14
19
 
15
- let(:input) { '' }
16
- let(:file) { StringIO.new(input).tap { |s| s.stub(:path).and_return('') } }
17
- subject { described_class.new file }
18
-
19
- describe :initialize do
20
+ describe "#initialize" do
20
21
  let(:input) { 'build :foo do; end' }
21
22
 
22
23
  it "should add the builds in the given string" do
23
- subject.builds[:foo].should be_a Fudge::Build
24
+ expect(subject.builds[:foo]).to be_a Fudge::Build
24
25
  end
25
26
  end
26
27
 
27
- describe :build do
28
+ describe "#build" do
28
29
  it "should create a new build and add it to the builds array" do
29
- subject.builds.should be_empty
30
+ expect(subject.builds).to be_empty
30
31
 
31
32
  subject.build :some_branch do
32
33
  end
33
34
 
34
- subject.builds.should have(1).item
35
- subject.builds[:some_branch].should be_a Fudge::Build
35
+ expect(subject.builds.size).to eq(1)
36
+ expect(subject.builds[:some_branch]).to be_a Fudge::Build
36
37
  end
37
38
  end
38
39
 
39
- describe :task do
40
+ describe "#task" do
40
41
  it "should add a task to the current scope" do
41
42
  subject.build :default do
42
43
  subject.task :dummy
43
44
  end
44
45
 
45
- build_tasks.should have(1).item
46
- build_tasks.first.should be_a DummyTask
46
+ expect(build_tasks.size).to eq(1)
47
+ expect(build_tasks.first).to be_a DummyTask
47
48
  end
48
49
 
49
50
  it "should pass arguments to the initializer" do
@@ -51,7 +52,7 @@ describe Fudge::Description do
51
52
  subject.task :dummy, :foo, :bar
52
53
  end
53
54
 
54
- build_tasks.first.args.should == [:foo, :bar]
55
+ expect(build_tasks.first.args).to eq([:foo, :bar])
55
56
  end
56
57
 
57
58
  it "should forward missing methods to task" do
@@ -59,7 +60,7 @@ describe Fudge::Description do
59
60
  subject.dummy :foo, :bar
60
61
  end
61
62
 
62
- build_tasks.first.args.should == [:foo, :bar]
63
+ expect(build_tasks.first.args).to eq([:foo, :bar])
63
64
  end
64
65
 
65
66
  it "should super method_missing if no task found" do
@@ -73,11 +74,11 @@ describe Fudge::Description do
73
74
  end
74
75
  end
75
76
 
76
- build_tasks.first.tasks.first.should be_a DummyTask
77
+ expect(build_tasks.first.tasks.first).to be_a DummyTask
77
78
  end
78
79
  end
79
80
 
80
- describe :task_group do
81
+ describe "#task_group" do
81
82
  it "should add a task group and allow it to be used in a build" do
82
83
  subject.task_group :group1 do
83
84
  subject.task :dummy
@@ -88,7 +89,7 @@ describe Fudge::Description do
88
89
  end
89
90
 
90
91
  subject.builds[:default].run
91
- DummyTask.ran.should be_true
92
+ expect(DummyTask.ran).to be_truthy
92
93
  end
93
94
 
94
95
  it "should allow passing arguments to task groups" do
@@ -101,7 +102,7 @@ describe Fudge::Description do
101
102
  end
102
103
 
103
104
  subject.builds[:default].run
104
- DummyTask.ran.should be_true
105
+ expect(DummyTask.ran).to be_truthy
105
106
  end
106
107
 
107
108
  it "should raise an exception if task group not found" do
@@ -127,7 +128,7 @@ describe Fudge::Description do
127
128
  end
128
129
 
129
130
  subject.builds[:default].run
130
- DummyTask.ran.should be_true
131
+ expect(DummyTask.ran).to be_truthy
131
132
  end
132
133
 
133
134
  it "supports when options are given" do
@@ -140,9 +141,9 @@ describe Fudge::Description do
140
141
  subject.builds[:default].run
141
142
 
142
143
  # Check that the options are maintained through the call
143
- build_tasks.first.args.should have(2).items
144
- build_tasks.first.args[1][:foobar].should be_true
145
- DummyTask.ran.should be_true
144
+ expect(build_tasks.first.args.size).to eq(2)
145
+ expect(build_tasks.first.args[1][:foobar]).to be_truthy
146
+ expect(DummyTask.ran).to be_truthy
146
147
  end
147
148
  end
148
149
 
@@ -151,13 +152,13 @@ describe Fudge::Description do
151
152
  describe "Callback Hooks" do
152
153
  before :each do
153
154
  @ran = []
154
- Fudge::Tasks::Shell.any_instance.stub(:run_command) do |cmd|
155
- @ran << cmd
156
- ['', cmd != 'fail']
155
+ allow_any_instance_of(Fudge::Tasks::Shell).to receive(:run_command) do |cmd|
156
+ @ran << cmd.arguments
157
+ ['', cmd.arguments != 'fail']
157
158
  end
158
159
  end
159
160
 
160
- describe :on_success do
161
+ describe "#on_success" do
161
162
  context "when callbacks is set to true" do
162
163
  let(:callbacks) { true }
163
164
 
@@ -167,8 +168,8 @@ describe Fudge::Description do
167
168
  subject.on_success { subject.shell 'BAR' }
168
169
  end
169
170
 
170
- build.run.should be_true
171
- @ran.should == ['FOO', 'BAR']
171
+ expect(build.run).to be_truthy
172
+ expect(@ran).to eq(['FOO', 'BAR'])
172
173
  end
173
174
 
174
175
  it "fails the build HARD when hooks fail" do
@@ -177,8 +178,8 @@ describe Fudge::Description do
177
178
  subject.on_success { subject.shell 'BAR' }
178
179
  end
179
180
 
180
- build.run.should be_false
181
- @ran.should == ['fail']
181
+ expect(build.run).to be_falsey
182
+ expect(@ran).to eq(['fail'])
182
183
  end
183
184
  end
184
185
 
@@ -190,15 +191,15 @@ describe Fudge::Description do
190
191
  subject.on_success { subject.shell 'echo "WOOP"' }
191
192
  end
192
193
 
193
- build.run.should be_true
194
- @ran.should == []
194
+ expect(build.run).to be_truthy
195
+ expect(@ran).to eq([])
195
196
  end
196
197
  end
197
198
  end
198
199
 
199
- describe :on_failure do
200
+ describe "#on_failure" do
200
201
  before :each do
201
- DummyTask.any_instance.stub(:run).and_return(false)
202
+ allow_any_instance_of(DummyTask).to receive(:run).and_return(false)
202
203
  end
203
204
 
204
205
  context "when callbacks is set to true" do
@@ -210,8 +211,8 @@ describe Fudge::Description do
210
211
  subject.on_failure { subject.shell 'BAR' }
211
212
  end
212
213
 
213
- build.run.should be_false
214
- @ran.should == ['WOOP', 'BAR']
214
+ expect(build.run).to be_falsey
215
+ expect(@ran).to eq(['WOOP', 'BAR'])
215
216
  end
216
217
 
217
218
  it "fails the build HARD when hooks fail" do
@@ -220,8 +221,8 @@ describe Fudge::Description do
220
221
  subject.on_failure { subject.shell 'BAR' }
221
222
  end
222
223
 
223
- build.run.should be_false
224
- @ran.should == ['fail']
224
+ expect(build.run).to be_falsey
225
+ expect(@ran).to eq(['fail'])
225
226
  end
226
227
  end
227
228
 
@@ -233,8 +234,8 @@ describe Fudge::Description do
233
234
  subject.on_failure { subject.shell 'WOOP' }
234
235
  end
235
236
 
236
- build.run.should be_false
237
- @ran.should == []
237
+ expect(build.run).to be_falsey
238
+ expect(@ran).to eq([])
238
239
  end
239
240
  end
240
241
  end