fudge 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -2,20 +2,27 @@ require 'spec_helper'
2
2
 
3
3
  module Fudge::Exceptions
4
4
  describe Base do
5
- it { should be_a StandardError }
5
+ it { is_expected.to be_a StandardError }
6
6
  end
7
7
 
8
8
  describe BuildFailed do
9
- it { should be_a Base }
10
- its(:message) { should be_a String }
9
+ it { is_expected.to be_a Base }
10
+
11
+ describe '#message' do
12
+ subject { super().message }
13
+ it { is_expected.to be_a String }
14
+ end
11
15
  end
12
16
 
13
17
  describe TaskNotFound do
14
18
  subject { described_class.new :foo }
15
19
 
16
- it { should be_a Base }
20
+ it { is_expected.to be_a Base }
17
21
 
18
- its(:message) { should be_a String }
22
+ describe '#message' do
23
+ subject { super().message }
24
+ it { is_expected.to be_a String }
25
+ end
19
26
 
20
27
  it "should take a task name as a parameter" do
21
28
  expect { described_class.new }.to raise_error ArgumentError
@@ -25,9 +32,12 @@ module Fudge::Exceptions
25
32
  describe TaskGroupNotFound do
26
33
  subject { described_class.new :foo }
27
34
 
28
- it { should be_a Base }
35
+ it { is_expected.to be_a Base }
29
36
 
30
- its(:message) { should be_a String }
37
+ describe '#message' do
38
+ subject { super().message }
39
+ it { is_expected.to be_a String }
40
+ end
31
41
 
32
42
  it "should take a task group name as a parameter" do
33
43
  expect { described_class.new }.to raise_error ArgumentError
@@ -5,49 +5,49 @@ describe Fudge::Formatters::Simple do
5
5
 
6
6
  subject { described_class.new(stdout) }
7
7
 
8
- describe :error do
8
+ describe "#error" do
9
9
  it "returns message in RED" do
10
10
  string = subject.error "a message"
11
- string.should == "\e[31ma message\e[0m"
11
+ expect(string).to eq("\e[31ma message\e[0m")
12
12
  end
13
13
  end
14
14
 
15
- describe :success do
15
+ describe "#success" do
16
16
  it "returns message in BRIGHT GREEN" do
17
17
  string = subject.success "a message"
18
- string.should == "\e[1m\e[32ma message\e[0m"
18
+ expect(string).to eq("\e[1m\e[32ma message\e[0m")
19
19
  end
20
20
  end
21
21
 
22
- describe :info do
22
+ describe "#info" do
23
23
  it "returns message in CYAN" do
24
24
  string = subject.info "a message"
25
- string.should == "\e[36ma message\e[0m"
25
+ expect(string).to eq("\e[36ma message\e[0m")
26
26
  end
27
27
  end
28
28
 
29
- describe :notice do
29
+ describe "#notice" do
30
30
  it "returns message in YELLOW" do
31
31
  string = subject.notice "a message"
32
- string.should == "\e[33ma message\e[0m"
32
+ expect(string).to eq("\e[33ma message\e[0m")
33
33
  end
34
34
  end
35
35
 
36
- describe :normal do
36
+ describe "#normal" do
37
37
  it "returns unchanged message" do
38
38
  string = subject.normal "a message"
39
- string.should == "a message"
39
+ expect(string).to eq("a message")
40
40
  end
41
41
  end
42
42
 
43
- describe :puts do
43
+ describe "#puts" do
44
44
  it "outputs message on stdout" do
45
45
  subject.puts "a message"
46
- stdout.string.should == "a message" + "\n"
46
+ expect(stdout.string).to eq("a message" + "\n")
47
47
  end
48
48
  end
49
49
 
50
- describe :write do
50
+ describe "#write" do
51
51
  it "supports chaining types to stdout" do
52
52
  subject.write do |w|
53
53
  w.normal('normal').
@@ -57,11 +57,11 @@ describe Fudge::Formatters::Simple do
57
57
  error('error')
58
58
  end
59
59
 
60
- stdout.string.should == 'normal' + ' ' +
60
+ expect(stdout.string).to eq('normal' + ' ' +
61
61
  "\e[33mnotice\e[0m" + ' ' +
62
62
  "\e[36minfo\e[0m" + ' ' +
63
63
  "\e[1m\e[32msuccess\e[0m" + ' ' +
64
- "\e[31merror\e[0m" + "\n"
64
+ "\e[31merror\e[0m" + "\n")
65
65
 
66
66
  end
67
67
  end
@@ -10,7 +10,7 @@ describe Fudge::OutputChecker do
10
10
  context "when the output does not match the check" do
11
11
  it 'send a mismatch message to the output io' do
12
12
  subject.check('bar')
13
- output_io.string.should include "Output didn't match (?-mix:foo)."
13
+ expect(output_io.string).to include "Output didn't match (?-mix:foo)."
14
14
  end
15
15
  end
16
16
 
@@ -25,7 +25,7 @@ describe Fudge::OutputChecker do
25
25
  it 'sends error mesage to the output io' do
26
26
  subject.check('foo')
27
27
 
28
- output_io.string.should include "Output matched (?-mix:foo) but condition failed."
28
+ expect(output_io.string).to include "Output matched (?-mix:foo) but condition failed."
29
29
  end
30
30
  end
31
31
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Fudge::Parser do
4
4
  use_tmp_dir
5
5
 
6
- describe :parse do
6
+ describe '#parse' do
7
7
  before :each do
8
8
  @path = 'FudgeFile'
9
9
 
@@ -13,11 +13,11 @@ describe Fudge::Parser do
13
13
  end
14
14
 
15
15
  it "should read a file and evaluate it" do
16
- subject.parse(@path).should be_a Fudge::Description
16
+ expect(subject.parse(@path)).to be_a Fudge::Description
17
17
  end
18
18
 
19
19
  it "should pass the contents to the new description" do
20
- subject.parse(@path).instance_variable_get(:@foo).should == :bar
20
+ expect(subject.parse(@path).instance_variable_get(:@foo)).to eq(:bar)
21
21
  end
22
22
  end
23
23
  end
@@ -3,21 +3,21 @@ require 'spec_helper'
3
3
  describe Fudge::Runner do
4
4
  let(:input) do
5
5
  StringIO.new('build :default do; task :dummy; end').tap do |s|
6
- s.stub(:path).and_return('')
6
+ allow(s).to receive(:path).and_return('')
7
7
  end
8
8
  end
9
9
  let(:description) { Fudge::Description.new(input) }
10
10
  subject { described_class.new(description) }
11
11
 
12
- describe :run_build do
12
+ describe '#run_build' do
13
13
  it "should run the default task in the description" do
14
14
  subject.run_build
15
15
 
16
- DummyTask.ran.should be_true
16
+ expect(DummyTask.ran).to be_truthy
17
17
  end
18
18
 
19
19
  it "should raise an exception if the build fails" do
20
- Fudge::Build.any_instance.stub(:run).and_return(false)
20
+ allow_any_instance_of(Fudge::Build).to receive(:run).and_return(false)
21
21
 
22
22
  expect { subject.run_build }.to raise_error Fudge::Exceptions::BuildFailed
23
23
  end
@@ -31,14 +31,14 @@ describe Fudge::Runner do
31
31
  end
32
32
 
33
33
  it "puts all output to given formatter instead stdout" do
34
- stdout.string.should_not be_empty
35
- stdout.string.should include "Running build"
36
- stdout.string.should include "default"
37
- stdout.string.should include "Build SUCCEEDED!"
34
+ expect(stdout.string).not_to be_empty
35
+ expect(stdout.string).to include "Running build"
36
+ expect(stdout.string).to include "default"
37
+ expect(stdout.string).to include "Build SUCCEEDED!"
38
38
  end
39
39
 
40
40
  it "runs the task passing the formatter down" do
41
- DummyTask.run_options.should == {:formatter => formatter}
41
+ expect(DummyTask.run_options).to eq({:formatter => formatter})
42
42
  end
43
43
  end
44
44
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fudge::Tasks::Brakeman do
4
- it { should be_registered_as :brakeman }
4
+ it { is_expected.to be_registered_as :brakeman }
5
5
 
6
6
  it_should_behave_like 'bundle aware'
7
7
 
@@ -40,21 +40,21 @@ Model Warnings:
40
40
  EOF
41
41
  end
42
42
 
43
- describe :run do
43
+ describe '#run' do
44
44
  it 'runs brakeman on the codebase' do
45
- subject.should run_command 'brakeman '
45
+ expect(subject).to run_command 'brakeman '
46
46
  end
47
47
 
48
- it { should_not succeed_with_output output_bad }
49
- it { should succeed_with_output output_good }
48
+ it { is_expected.not_to succeed_with_output output_bad }
49
+ it { is_expected.to succeed_with_output output_good }
50
50
 
51
51
  context 'when :max score is supplied' do
52
52
  it 'fails when score is higher than max' do
53
53
  task = described_class.new :max => 0
54
- task.should_not succeed_with_output output_bad
54
+ expect(task).not_to succeed_with_output output_bad
55
55
 
56
56
  task = described_class.new :max => 1
57
- task.should succeed_with_output output_bad
57
+ expect(task).to succeed_with_output output_bad
58
58
  end
59
59
  end
60
60
  end
@@ -22,9 +22,9 @@ class TestNonBundlerAwareTask
22
22
  end
23
23
 
24
24
  describe Fudge::Tasks::CleanBundlerEnv do
25
- it { should be_registered_as :clean_bundler_env }
25
+ it { is_expected.to be_registered_as :clean_bundler_env }
26
26
 
27
- describe :run do
27
+ describe '#run' do
28
28
  let(:bundle_aware_task) { TestBundlerAwareTask.new }
29
29
  let(:non_bundle_aware_task) { TestNonBundlerAwareTask.new }
30
30
 
@@ -33,14 +33,14 @@ describe Fudge::Tasks::CleanBundlerEnv do
33
33
  subject.tasks << bundle_aware_task
34
34
  subject.tasks << non_bundle_aware_task
35
35
 
36
- subject.run.should be_true
36
+ expect(subject.run).to be_truthy
37
37
  end
38
38
 
39
39
  it "runs each task with a clean bundle env" do
40
- Bundler.should_receive(:with_clean_env).and_call_original
40
+ expect(Bundler).to receive(:with_clean_env).and_call_original
41
41
 
42
42
  subject.tasks << bundle_aware_task
43
- subject.run.should be_true
43
+ expect(subject.run).to be_truthy
44
44
  end
45
45
  end
46
46
  end
@@ -1,20 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fudge::Tasks::Cane do
4
- it { should be_registered_as :cane }
4
+ it { is_expected.to be_registered_as :cane }
5
5
 
6
6
  it_should_behave_like 'bundle aware'
7
7
 
8
- describe :run do
8
+ describe '#run' do
9
9
  it "runs cane on the codebase" do
10
- subject.should run_command "cane"
10
+ expect(subject).to run_command "cane"
11
11
  end
12
12
 
13
13
  context 'with :doc => false' do
14
14
  subject {described_class.new :doc => false }
15
15
 
16
16
  it "runs with --no-doc" do
17
- subject.should run_command "cane --no-doc"
17
+ expect(subject).to run_command "cane --no-doc"
18
18
  end
19
19
  end
20
20
 
@@ -22,7 +22,7 @@ describe Fudge::Tasks::Cane do
22
22
  subject {described_class.new :style => false }
23
23
 
24
24
  it "runs with --no-style" do
25
- subject.should run_command "cane --no-style"
25
+ expect(subject).to run_command "cane --no-style"
26
26
  end
27
27
  end
28
28
 
@@ -30,11 +30,11 @@ describe Fudge::Tasks::Cane do
30
30
  subject {described_class.new :max_width => 100 }
31
31
 
32
32
  it "runs with --style-measure 100" do
33
- subject.should run_command "cane --style-measure 100"
33
+ expect(subject).to run_command "cane --style-measure 100"
34
34
  end
35
35
  end
36
36
 
37
- it { should_not succeed_with_output 'any output from cane is bad' }
38
- it { should succeed_with_output '' }
37
+ it { is_expected.not_to succeed_with_output 'any output from cane is bad' }
38
+ it { is_expected.to succeed_with_output '' }
39
39
  end
40
40
  end
@@ -10,29 +10,30 @@ Fudge::Tasks.register(DummyTask2)
10
10
  describe Fudge::Tasks::CompositeTask do
11
11
  subject { described_class.new do; end }
12
12
 
13
- describe :run do
13
+ describe '#run' do
14
14
  before :each do
15
15
  subject.tasks << DummyTask.new
16
16
  subject.tasks << DummyTask2.new
17
+
18
+ @task_two_run = false
19
+ allow_any_instance_of(DummyTask2).to receive(:run) { |*_| @task_two_run = true }
17
20
  end
18
21
 
19
22
  it "should run all tasks defined and return true if they all succeed" do
20
- DummyTask.any_instance.should_receive(:run).and_return(true)
21
- DummyTask2.any_instance.should_receive(:run).and_return(true)
22
-
23
- subject.run.should be_true
23
+ expect_any_instance_of(DummyTask).to receive(:run).and_return(true)
24
+ expect(subject.run).to be_truthy
25
+ expect(@task_two_run).to be_truthy
24
26
  end
25
27
 
26
28
  it "should return false if any of the tasks fail" do
27
- DummyTask.any_instance.should_receive(:run).and_return(false)
28
- DummyTask2.any_instance.should_not_receive(:run)
29
-
30
- subject.run.should be_false
29
+ expect_any_instance_of(DummyTask).to receive(:run).and_return(false)
30
+ expect(subject.run).to be_falsey
31
+ expect(@task_two_run).to be_falsey
31
32
  end
32
33
  end
33
34
 
34
35
  describe "Using TaskDSL" do
35
- describe :task do
36
+ describe '#task' do
36
37
  class AnotherCompositeTask < Fudge::Tasks::CompositeTask
37
38
  include Fudge::TaskDSL
38
39
 
@@ -49,11 +50,11 @@ describe Fudge::Tasks::CompositeTask do
49
50
  subject { AnotherCompositeTask.new }
50
51
 
51
52
  it "should define a task for each new instance of the composite task" do
52
- subject.should run_command 'foo bar'
53
+ expect(subject).to run_command 'foo bar'
53
54
  end
54
55
 
55
56
  it "should support defining composite tasks" do
56
- subject.tasks[1].tasks.first.should be_a DummyTask
57
+ expect(subject.tasks[1].tasks.first).to be_a DummyTask
57
58
  end
58
59
 
59
60
  context "when provided an output" do
@@ -61,14 +62,14 @@ describe Fudge::Tasks::CompositeTask do
61
62
  let(:formatter) { Fudge::Formatters::Simple.new(output) }
62
63
 
63
64
  before :each do
64
- Fudge::Tasks::Shell.any_instance.stub(:run)
65
+ allow_any_instance_of(Fudge::Tasks::Shell).to receive(:run)
65
66
  end
66
67
 
67
68
  it "prints messages to the output instead of stdout" do
68
69
  subject.run :formatter => formatter
69
70
 
70
- output.string.should_not be_empty
71
- output.string.should match /Running task.*shell.*foo, bar/
71
+ expect(output.string).not_to be_empty
72
+ expect(output.string).to match /Running task.*shell.*foo, bar/
72
73
  end
73
74
  end
74
75
  end
@@ -14,15 +14,15 @@ Fudge::Tasks.register(TestEachDirectoryTask)
14
14
 
15
15
  describe Fudge::Tasks::EachDirectory do
16
16
  subject { described_class.new 'spec/*' }
17
- it { should be_registered_as :each_directory }
17
+ it { is_expected.to be_registered_as :each_directory }
18
18
 
19
- describe :initialize do
19
+ describe '#initialize' do
20
20
  it "should take a directory pattern as first argument" do
21
21
  expect { described_class.new }.to raise_error ArgumentError
22
22
  end
23
23
  end
24
24
 
25
- describe :run do
25
+ describe '#run' do
26
26
  let(:task) { TestEachDirectoryTask.new }
27
27
  let(:dirs) do
28
28
  files = Dir[File.expand_path('../../../../*', __FILE__)]
@@ -36,36 +36,36 @@ describe Fudge::Tasks::EachDirectory do
36
36
  it "should change to the given directories and run child tasks" do
37
37
  subject.run
38
38
 
39
- task.pwds.should == dirs
39
+ expect(task.pwds).to eq(dirs)
40
40
  end
41
41
 
42
42
  it "should allow explicit specification of directories through an array" do
43
43
  ed2 = described_class.new ["spec/lib","spec/support"]
44
44
  ed2.tasks << task
45
45
  ed2.run
46
- task.pwds.should == dirs.sort
46
+ expect(task.pwds).to eq(dirs.sort)
47
47
  end
48
48
 
49
49
  it "should respect the order of the directories as specified" do
50
50
  ed2 = described_class.new ["spec/support","spec/lib"]
51
51
  ed2.tasks << task
52
52
  ed2.run
53
- task.pwds.should_not == dirs.sort
54
- task.pwds.sort.should == dirs.sort
53
+ expect(task.pwds).not_to eq(dirs.sort)
54
+ expect(task.pwds.sort).to eq(dirs.sort)
55
55
  end
56
56
 
57
57
  it "should load fudge_settings.yml in the right directory" do
58
58
  ed2 = described_class.new ['spec/lib']
59
59
  ed2.tasks << Fudge::Tasks::Shell.new('pwd')
60
60
  ed2.run
61
- ed2.tasks.first.options[:test].should == 'coverage'
61
+ expect(ed2.tasks.first.options[:test]).to eq('coverage')
62
62
  end
63
63
 
64
64
  it "should not load fudge_settings.yml in the wrong directory" do
65
65
  ed2 = described_class.new ['spec/support']
66
66
  ed2.tasks << Fudge::Tasks::Shell.new('pwd')
67
67
  ed2.run
68
- ed2.tasks.first.options.size.should == 0
68
+ expect(ed2.tasks.first.options.size).to eq(0)
69
69
  end
70
70
  end
71
71
  end