-
-
Notifications
You must be signed in to change notification settings - Fork 763
/
rake_task_spec.rb
140 lines (121 loc) · 3.34 KB
/
rake_task_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
require "spec_helper"
require "rspec/core/rake_task"
module RSpec::Core
describe RakeTask do
let(:task) { RakeTask.new }
before do
File.stub(:exist?) { false }
end
def with_bundler
task.skip_bundler = false
File.stub(:exist?) { true }
yield
end
def with_rcov
task.rcov = true
yield
end
def spec_command
task.__send__(:spec_command)
end
context "default" do
it "renders rspec" do
spec_command.should =~ /^-S rspec/
end
end
context "with bundler" do
context "with Gemfile" do
it "renders bundle exec rspec" do
File.stub(:exist?) { true }
task.skip_bundler = false
spec_command.should match(/bundle exec/)
end
end
context "with non-standard Gemfile" do
it "renders bundle exec rspec" do
File.stub(:exist?) {|f| f =~ /AltGemfile/}
task.gemfile = 'AltGemfile'
task.skip_bundler = false
spec_command.should match(/bundle exec/)
end
end
context "without Gemfile" do
it "renders bundle exec rspec" do
File.stub(:exist?) { false }
task.skip_bundler = false
spec_command.should_not match(/bundle exec/)
end
end
end
context "with rcov" do
it "renders rcov" do
with_rcov do
spec_command.should =~ /^-S rcov/
end
end
end
context "with bundler and rcov" do
it "renders bundle exec rcov" do
with_bundler do
with_rcov do
spec_command.should =~ /^-S bundle exec rcov/
end
end
end
end
context "with ruby options" do
it "renders them before -S" do
task.ruby_opts = "-w"
spec_command.should =~ /^-w -S rspec/
end
end
context "with rcov_opts" do
context "with rcov=false (default)" do
it "does not add the rcov options to the command" do
task.rcov_opts = '--exclude "mocks"'
spec_command.should_not =~ /--exclude "mocks"/
end
end
context "with rcov=true" do
it "renders them after rcov" do
task.rcov = true
task.rcov_opts = '--exclude "mocks"'
spec_command.should =~ /rcov.*--exclude "mocks"/
end
it "ensures that -Ispec:lib is in the resulting command" do
task.rcov = true
task.rcov_opts = '--exclude "mocks"'
spec_command.should =~ /rcov.*-Ispec:lib/
end
end
end
context "with rspec_opts" do
context "with rcov=true" do
it "adds the rspec_opts after the rcov_opts and files" do
task.stub(:files_to_run) { "this.rb that.rb" }
task.rcov = true
task.rspec_opts = "-Ifoo"
spec_command.should =~ /this.rb that.rb -- -Ifoo/
end
end
context "with rcov=false (default)" do
it "adds the rspec_opts" do
task.rspec_opts = "-Ifoo"
spec_command.should =~ /rspec -Ifoo/
end
end
end
context "with SPEC=path/to/file" do
before do
@orig_spec = ENV["SPEC"]
ENV["SPEC"] = "path/to/file"
end
after do
ENV["SPEC"] = @orig_spec
end
it "sets files to run" do
task.__send__(:files_to_run).should eq(["path/to/file"])
end
end
end
end