rake-builder 0.9.2 → 0.10.1
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 +7 -0
- data/README.md +13 -0
- data/lib/rake/builder/version.rb +2 -2
- data/lib/rake/microsecond_task.rb +2 -4
- data/spec/unit/compiler_spec.rb +10 -17
- data/spec/unit/rake/builder/autoconf/version_spec.rb +44 -56
- data/spec/unit/rake/builder/configure_ac_spec.rb +5 -10
- data/spec/unit/rake/builder/install_spec.rb +67 -56
- data/spec/unit/rake/builder/local_config_spec.rb +23 -34
- data/spec/unit/rake/builder/presenters/makefile/builder_presenter_spec.rb +22 -19
- data/spec/unit/rake/builder/presenters/makefile_am/builder_collection_presenter_spec.rb +8 -22
- data/spec/unit/rake/builder/presenters/makefile_am/builder_presenter_spec.rb +14 -23
- data/spec/unit/rake/builder/task_definers/builder_collection_task_definer_spec.rb +19 -10
- data/spec/unit/rake/builder/task_definers/builder_task_definer_spec.rb +77 -110
- data/spec/unit/rake/builder_spec.rb +76 -89
- data/spec/unit/rake/microsecond_task_spec.rb +35 -26
- data/spec/unit/rake/path_spec.rb +24 -11
- metadata +65 -81
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rake::Builder::LocalConfig do
|
4
4
|
let(:local_config_file) { 'local_config' }
|
5
|
-
let(:include_paths) { [
|
6
|
-
let(:compilation_options) { [
|
7
|
-
let(:
|
5
|
+
let(:include_paths) { [] }
|
6
|
+
let(:compilation_options) { [] }
|
7
|
+
let(:good_config_data) do
|
8
8
|
{
|
9
9
|
:rake_builder => {
|
10
10
|
:config_file => {:version => '1.1'},
|
@@ -14,27 +14,28 @@ describe Rake::Builder::LocalConfig do
|
|
14
14
|
}
|
15
15
|
end
|
16
16
|
let(:bad_config_data) do
|
17
|
-
|
18
|
-
|
17
|
+
config = good_config_data.clone
|
18
|
+
config[:rake_builder][:config_file][:version] = '0.1'
|
19
|
+
config
|
19
20
|
end
|
21
|
+
let(:config_data) { good_config_data }
|
20
22
|
|
21
|
-
before { YAML.
|
23
|
+
before { allow(YAML).to receive(:load_file) { config_data } }
|
22
24
|
|
23
|
-
subject {
|
25
|
+
subject { described_class.new(local_config_file) }
|
24
26
|
|
25
27
|
context '#load' do
|
26
|
-
|
27
|
-
|
28
|
+
let(:include_paths) { ['/foo/bar'] }
|
29
|
+
let(:compilation_options) { ['foo', 'bar'] }
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
it 'fails if the version is not recognized' do
|
33
|
-
YAML.should_receive(:load_file).and_return(bad_config_data)
|
31
|
+
context 'if the version is not recognized' do
|
32
|
+
let(:config_data) { bad_config_data }
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
it 'fails' do
|
35
|
+
expect {
|
36
|
+
subject.load
|
37
|
+
}.to raise_error(Rake::Builder::Error, /version incorrect/)
|
38
|
+
end
|
38
39
|
end
|
39
40
|
|
40
41
|
it 'sets the include_paths' do
|
@@ -51,29 +52,17 @@ describe Rake::Builder::LocalConfig do
|
|
51
52
|
end
|
52
53
|
|
53
54
|
context '#save' do
|
54
|
-
let(:file) {
|
55
|
+
let(:file) { double(File, write: nil) }
|
56
|
+
let(:data) { config_data.to_yaml }
|
55
57
|
|
56
58
|
before do
|
57
|
-
File.
|
58
|
-
block.call file
|
59
|
-
end
|
59
|
+
allow(File).to receive(:open).with(local_config_file, 'w').and_yield(file)
|
60
60
|
end
|
61
61
|
|
62
|
-
it '
|
63
|
-
File.should_receive(:open).with(local_config_file, 'w') {}
|
64
|
-
|
62
|
+
it 'writes to the file' do
|
65
63
|
subject.save
|
66
|
-
end
|
67
64
|
|
68
|
-
|
69
|
-
expected = {
|
70
|
-
:rake_builder => {:config_file => {:version => '1.1'}},
|
71
|
-
:include_paths => [],
|
72
|
-
:compilation_options => []
|
73
|
-
}.to_yaml
|
74
|
-
file.should_receive(:write).with(expected)
|
75
|
-
|
76
|
-
subject.save
|
65
|
+
expect(file).to have_received(:write).with(data)
|
77
66
|
end
|
78
67
|
end
|
79
68
|
end
|
@@ -46,9 +46,9 @@ describe Rake::Builder::Presenters::Makefile::BuilderPresenter do
|
|
46
46
|
)
|
47
47
|
end
|
48
48
|
|
49
|
-
let(:executable_builder) {
|
50
|
-
let(:static_library_builder) {
|
51
|
-
let(:shared_library_builder) {
|
49
|
+
let(:executable_builder) { double(Rake::Builder, executable_attributes) }
|
50
|
+
let(:static_library_builder) { double('Rake::Builder', static_library_attributes) }
|
51
|
+
let(:shared_library_builder) { double('Rake::Builder', shared_library_attributes) }
|
52
52
|
|
53
53
|
let(:executable_subject) { Rake::Builder::Presenters::Makefile::BuilderPresenter.new(executable_builder) }
|
54
54
|
let(:static_library_subject) { Rake::Builder::Presenters::Makefile::BuilderPresenter.new(static_library_builder) }
|
@@ -66,12 +66,20 @@ describe Rake::Builder::Presenters::Makefile::BuilderPresenter do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
context '#to_s' do
|
69
|
-
|
70
|
-
|
69
|
+
context 'with unknown target types' do
|
70
|
+
let(:executable_attributes) do
|
71
|
+
common_attributes.merge(
|
72
|
+
:target => executable_target,
|
73
|
+
:target_type => :foo,
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'fails' do
|
78
|
+
expect {
|
79
|
+
Rake::Builder::Presenters::Makefile::BuilderPresenter.new(executable_builder)
|
80
|
+
}.to raise_error(RuntimeError, /Unknown.*?target type/)
|
81
|
+
end
|
71
82
|
|
72
|
-
expect {
|
73
|
-
Rake::Builder::Presenters::Makefile::BuilderPresenter.new(executable_builder)
|
74
|
-
}.to raise_error(RuntimeError, /Unknown.*?target type/)
|
75
83
|
end
|
76
84
|
|
77
85
|
context 'target' do
|
@@ -142,21 +150,16 @@ EOT
|
|
142
150
|
end
|
143
151
|
|
144
152
|
context '#save' do
|
145
|
-
|
146
|
-
File.should_receive(:open).with(makefile_name, 'w')
|
153
|
+
let(:file) { double(File, write: nil) }
|
147
154
|
|
148
|
-
|
155
|
+
before do
|
156
|
+
allow(File).to receive(:open).with(makefile_name, 'w').and_yield(file)
|
149
157
|
end
|
150
158
|
|
151
|
-
it 'saves' do
|
152
|
-
file = stub('File')
|
153
|
-
File.stub(:open).with(makefile_name, 'w') do |&block|
|
154
|
-
block.call file
|
155
|
-
end
|
156
|
-
|
157
|
-
file.should_receive(:write).with(/COMPILER.*?= the_compiler/)
|
158
|
-
|
159
|
+
it 'saves a makefile' do
|
159
160
|
executable_subject.save
|
161
|
+
|
162
|
+
expect(file).to have_received(:write).with(/COMPILER.*?= the_compiler/)
|
160
163
|
end
|
161
164
|
end
|
162
165
|
end
|
@@ -5,26 +5,22 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderCollectionPresenter do
|
|
5
5
|
it 'takes one parameter' do
|
6
6
|
expect {
|
7
7
|
Rake::Builder::Presenters::MakefileAm::BuilderCollectionPresenter.new
|
8
|
-
}.to raise_error(ArgumentError,
|
8
|
+
}.to raise_error(ArgumentError, /wrong number of arguments/)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
context '#to_s' do
|
13
|
-
let(:program_builder) {
|
14
|
-
let(:library_builder) {
|
13
|
+
let(:program_builder) { double(Rake::Builder, :label => 'the_program', :target_path => 'the_program', :is_library? => false) }
|
14
|
+
let(:library_builder) { double(Rake::Builder, :label => 'the_library', :target_path => 'the_library', :is_library? => true) }
|
15
15
|
let(:builders) { [program_builder, library_builder] }
|
16
16
|
|
17
|
-
subject {
|
17
|
+
subject { described_class.new(builders) }
|
18
18
|
|
19
19
|
before do
|
20
|
-
Rake::Builder::Presenters::MakefileAm::BuilderPresenter
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
Rake::Builder::Presenters::MakefileAm::BuilderPresenter.
|
25
|
-
stub(:new).
|
26
|
-
with(library_builder).
|
27
|
-
and_return("XXX\nYYY\n")
|
20
|
+
allow(Rake::Builder::Presenters::MakefileAm::BuilderPresenter)
|
21
|
+
.to receive(:new).with(program_builder) { "AAA\nBBB\n" }
|
22
|
+
allow(Rake::Builder::Presenters::MakefileAm::BuilderPresenter)
|
23
|
+
.to receive(:new). with(library_builder) { "XXX\nYYY\n" }
|
28
24
|
end
|
29
25
|
|
30
26
|
it 'lists libraries' do
|
@@ -36,15 +32,6 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderCollectionPresenter do
|
|
36
32
|
end
|
37
33
|
|
38
34
|
it 'includes builder text' do
|
39
|
-
Rake::Builder::Presenters::MakefileAm::BuilderPresenter.
|
40
|
-
should_receive(:new).
|
41
|
-
with(program_builder).
|
42
|
-
and_return("AAA\nBBB\n")
|
43
|
-
Rake::Builder::Presenters::MakefileAm::BuilderPresenter.
|
44
|
-
should_receive(:new).
|
45
|
-
with(library_builder).
|
46
|
-
and_return("XXX\nYYY\n")
|
47
|
-
|
48
35
|
output = subject.to_s
|
49
36
|
|
50
37
|
expect(output).to include("AAA\nBBB\n")
|
@@ -52,4 +39,3 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderCollectionPresenter do
|
|
52
39
|
end
|
53
40
|
end
|
54
41
|
end
|
55
|
-
|
@@ -4,33 +4,26 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderPresenter do
|
|
4
4
|
context '.new' do
|
5
5
|
it 'takes one parameter' do
|
6
6
|
expect {
|
7
|
-
|
8
|
-
}.to raise_error(ArgumentError,
|
7
|
+
described_class.new
|
8
|
+
}.to raise_error(ArgumentError, /wrong number of arguments/)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
context '#to_s' do
|
13
13
|
let(:builder) do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:library_dependencies_list
|
14
|
+
double(
|
15
|
+
Rake::Builder,
|
16
|
+
is_library?: is_library?,
|
17
|
+
label: 'fubar',
|
18
|
+
source_files: ['path/to/1', 'path/to/2'],
|
19
|
+
compiler_flags: '-D FOO -D BAR',
|
20
|
+
library_dependencies_list: library_dependencies_list
|
21
21
|
)
|
22
22
|
end
|
23
|
-
let(:
|
24
|
-
|
25
|
-
builder.stub(:library_dependencies_list => [])
|
26
|
-
builder
|
27
|
-
end
|
28
|
-
let(:binary) do
|
29
|
-
builder.stub(:is_library? => false)
|
30
|
-
builder
|
31
|
-
end
|
23
|
+
let(:library_dependencies_list) { [] }
|
24
|
+
let(:is_library?) { true }
|
32
25
|
|
33
|
-
subject {
|
26
|
+
subject { described_class.new(builder) }
|
34
27
|
|
35
28
|
it 'lists sources' do
|
36
29
|
sources_match = %r(fubar_SOURCES\s+=\s+path/to/1 path/to/2)
|
@@ -46,8 +39,6 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderPresenter do
|
|
46
39
|
end
|
47
40
|
|
48
41
|
context 'library builder' do
|
49
|
-
subject { Rake::Builder::Presenters::MakefileAm::BuilderPresenter.new(library) }
|
50
|
-
|
51
42
|
it "doesn't show ld flags" do
|
52
43
|
expect(subject.to_s).to_not include('fubar_LDFLAGS')
|
53
44
|
end
|
@@ -58,7 +49,8 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderPresenter do
|
|
58
49
|
end
|
59
50
|
|
60
51
|
context 'executable builder' do
|
61
|
-
|
52
|
+
let(:is_library?) { false }
|
53
|
+
let(:library_dependencies_list) { '-lfoo -lbar' }
|
62
54
|
|
63
55
|
it 'shows ld flags' do
|
64
56
|
expect(subject.to_s).to match(%r(fubar_LDFLAGS\s+=\s+-L))
|
@@ -70,4 +62,3 @@ describe Rake::Builder::Presenters::MakefileAm::BuilderPresenter do
|
|
70
62
|
end
|
71
63
|
end
|
72
64
|
end
|
73
|
-
|
@@ -2,30 +2,39 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rake::Builder::BuilderCollectionTaskDefiner do
|
4
4
|
context '#run' do
|
5
|
-
|
5
|
+
let(:builder) do
|
6
|
+
double(
|
7
|
+
Rake::Builder,
|
8
|
+
source_files: ['foo'],
|
9
|
+
rakefile_path: '/path',
|
10
|
+
is_library?: false,
|
11
|
+
target_path: '/path2',
|
12
|
+
label: 'path2',
|
13
|
+
compiler_flags: [],
|
14
|
+
library_dependencies_list: [],
|
15
|
+
)
|
16
|
+
end
|
17
|
+
let(:params) { ['foo', '1.11.1111'] }
|
6
18
|
|
7
19
|
before do
|
8
20
|
Rake::Task.clear
|
21
|
+
allow(Rake::Builder).to receive(:create_autoconf)
|
9
22
|
end
|
10
23
|
|
11
24
|
it 'defines an autoconf task' do
|
12
25
|
subject.run
|
13
26
|
|
14
|
-
expect(Rake::Task.task_defined?('autoconf')).to
|
27
|
+
expect(Rake::Task.task_defined?('autoconf')).to be_truthy
|
15
28
|
end
|
16
29
|
|
17
30
|
it 'calls create_autoconf' do
|
18
|
-
Rake::Builder.instances <<
|
19
|
-
'Rake::Builder',
|
20
|
-
:source_files => ['foo'],
|
21
|
-
:rakefile_path => '/path',
|
22
|
-
)
|
31
|
+
Rake::Builder.instances << builder
|
23
32
|
|
24
33
|
subject.run
|
25
34
|
|
26
|
-
Rake::
|
35
|
+
Rake::Task['autoconf'].invoke(*params)
|
27
36
|
|
28
|
-
Rake::
|
37
|
+
expect(Rake::Builder).to have_received(:create_autoconf)
|
29
38
|
end
|
30
39
|
|
31
40
|
it 'fails if no builders have been instantiated' do
|
@@ -34,7 +43,7 @@ describe Rake::Builder::BuilderCollectionTaskDefiner do
|
|
34
43
|
subject.run
|
35
44
|
|
36
45
|
expect {
|
37
|
-
Rake::Task['autoconf'].invoke
|
46
|
+
Rake::Task['autoconf'].invoke(*params)
|
38
47
|
}.to raise_error(RuntimeError, 'No Rake::Builder projects have been defined')
|
39
48
|
end
|
40
49
|
end
|
@@ -44,41 +44,48 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
44
44
|
let(:executable_target) { self.class.executable_target }
|
45
45
|
let(:objects_path) { self.class.objects_path }
|
46
46
|
let(:custom_prerequisite) { self.class.custom_prerequisite }
|
47
|
-
let(:logger) {
|
47
|
+
let(:logger) { double(Logger, :'level=' => nil) }
|
48
48
|
let(:builder) do
|
49
|
-
|
50
|
-
|
51
|
-
:task_namespace
|
52
|
-
|
53
|
-
:
|
54
|
-
:
|
55
|
-
:
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:objects_path
|
61
|
-
:
|
62
|
-
:
|
63
|
-
:
|
64
|
-
:
|
65
|
-
:
|
66
|
-
|
67
|
-
:logger
|
49
|
+
double(
|
50
|
+
Rake::Builder,
|
51
|
+
task_namespace: task_namespace,
|
52
|
+
target_type: :executable,
|
53
|
+
target: executable_target,
|
54
|
+
target_basename: executable_target,
|
55
|
+
target_prerequisites: [custom_prerequisite],
|
56
|
+
makedepend_file: self.class.makedepend_file,
|
57
|
+
source_files: self.class.source_files,
|
58
|
+
object_files: self.class.object_files,
|
59
|
+
object_path: self.class.object_files[0],
|
60
|
+
objects_path: objects_path,
|
61
|
+
generated_files: [],
|
62
|
+
local_config: self.class.local_config,
|
63
|
+
generated_headers: self.class.generated_headers,
|
64
|
+
install_path: 'install/path',
|
65
|
+
makefile_name: self.class.makefile_name,
|
66
|
+
default_task: :build,
|
67
|
+
logger: logger,
|
68
68
|
)
|
69
69
|
end
|
70
|
-
let(:
|
70
|
+
let(:task_namespace) { nil }
|
71
71
|
|
72
|
-
subject {
|
72
|
+
subject { described_class.new(builder) }
|
73
73
|
|
74
74
|
before do
|
75
75
|
Rake::Task.clear
|
76
|
+
%w(
|
77
|
+
run clean build install uninstall compile
|
78
|
+
create_makedepend_file create_local_config ensure_headers
|
79
|
+
load_local_config
|
80
|
+
).each do |m|
|
81
|
+
allow(builder).to receive(m.intern)
|
82
|
+
end
|
76
83
|
end
|
77
84
|
|
78
85
|
context '#new' do
|
79
86
|
it 'takes a parameter' do
|
80
87
|
expect {
|
81
|
-
|
88
|
+
described_class.new
|
82
89
|
}.to raise_error(ArgumentError)
|
83
90
|
end
|
84
91
|
end
|
@@ -105,7 +112,7 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
105
112
|
it "defines '#{task}'" do
|
106
113
|
subject.run
|
107
114
|
|
108
|
-
expect(Rake::Task.task_defined?(task)).to
|
115
|
+
expect(Rake::Task.task_defined?(task)).to be_truthy
|
109
116
|
end
|
110
117
|
end
|
111
118
|
|
@@ -113,36 +120,36 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
113
120
|
it 'defines run' do
|
114
121
|
subject.run
|
115
122
|
|
116
|
-
expect(Rake::Task.task_defined?('run')).to
|
123
|
+
expect(Rake::Task.task_defined?('run')).to be_truthy
|
117
124
|
end
|
118
125
|
end
|
119
126
|
|
120
127
|
context 'with a namespace' do
|
121
|
-
|
128
|
+
let(:task_namespace) { 'foo' }
|
122
129
|
|
123
130
|
it 'namespaces tasks' do
|
124
131
|
subject.run
|
125
132
|
|
126
|
-
expect(Rake::Task.task_defined?('foo:run')).to
|
133
|
+
expect(Rake::Task.task_defined?('foo:run')).to be_truthy
|
127
134
|
end
|
128
135
|
|
129
136
|
it 'defines the namespace default task' do
|
130
137
|
subject.run
|
131
138
|
|
132
|
-
expect(Rake::Task.task_defined?('foo')).to
|
139
|
+
expect(Rake::Task.task_defined?('foo')).to be_truthy
|
133
140
|
end
|
134
141
|
|
135
142
|
it 'does not fiddle up the local_config file' do
|
136
143
|
subject.run
|
137
144
|
|
138
|
-
expect(Rake::Task['foo:load_local_config'].prerequisites).to eq([
|
145
|
+
expect(Rake::Task['foo:load_local_config'].prerequisites).to eq([builder.local_config])
|
139
146
|
end
|
140
147
|
end
|
141
148
|
end
|
142
149
|
|
143
150
|
context 'dependencies' do
|
144
151
|
before do
|
145
|
-
|
152
|
+
described_class.new(builder).run
|
146
153
|
end
|
147
154
|
|
148
155
|
[
|
@@ -177,52 +184,25 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
177
184
|
|
178
185
|
context 'tasks' do
|
179
186
|
before do
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
context 'run' do
|
184
|
-
it 'runs the builder' do
|
185
|
-
clear_prerequisites 'run'
|
186
|
-
|
187
|
-
builder.should_receive(:run)
|
188
|
-
|
189
|
-
Rake::Task['run'].invoke
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
context 'the target' do
|
194
|
-
it 'builds the target' do
|
195
|
-
clear_prerequisites executable_target
|
196
|
-
|
197
|
-
builder.should_receive(:build)
|
198
|
-
|
199
|
-
Rake::Task[executable_target].invoke
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
context 'clean' do
|
204
|
-
it 'cleans the build' do
|
205
|
-
builder.should_receive(:clean)
|
206
|
-
|
207
|
-
Rake::Task['clean'].invoke
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
context 'install' do
|
212
|
-
it 'installs the target' do
|
213
|
-
clear_prerequisites 'install'
|
214
|
-
|
215
|
-
builder.should_receive(:install)
|
216
|
-
|
217
|
-
Rake::Task['install'].invoke
|
218
|
-
end
|
187
|
+
described_class.new(builder).run
|
219
188
|
end
|
220
189
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
190
|
+
[
|
191
|
+
['run', 'runs the builder', :run],
|
192
|
+
[executable_target, 'builds the target', :build],
|
193
|
+
['clean', 'cleans the build', :clean],
|
194
|
+
['install', 'installs the target', :install],
|
195
|
+
['uninstall', 'uninstalls the target', :uninstall],
|
196
|
+
['load_local_config', 'loads local config', :load_local_config],
|
197
|
+
].each do |task, action, command|
|
198
|
+
context task do
|
199
|
+
it action do
|
200
|
+
clear_prerequisites task
|
201
|
+
|
202
|
+
Rake::Task[task].invoke
|
203
|
+
|
204
|
+
expect(builder).to have_received(command)
|
205
|
+
end
|
226
206
|
end
|
227
207
|
end
|
228
208
|
|
@@ -230,28 +210,19 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
230
210
|
it 'compiles the file' do
|
231
211
|
clear_prerequisites 'src/file1.o'
|
232
212
|
|
233
|
-
builder.should_receive(:compile).
|
234
|
-
with('src/file1.cpp', 'src/file1.o')
|
235
|
-
|
236
213
|
Rake::Task['src/file1.o'].invoke
|
214
|
+
|
215
|
+
|
216
|
+
expect(builder).to have_received(:compile).
|
217
|
+
with('src/file1.cpp', 'src/file1.o')
|
237
218
|
end
|
238
219
|
end
|
239
220
|
|
240
221
|
context 'local_config' do
|
241
222
|
it 'creates local config' do
|
242
|
-
builder.should_receive(:create_local_config)
|
243
|
-
|
244
223
|
Rake::Task[self.class.local_config].invoke
|
245
|
-
end
|
246
|
-
end
|
247
224
|
|
248
|
-
|
249
|
-
it 'loads local config' do
|
250
|
-
clear_prerequisites 'load_local_config'
|
251
|
-
|
252
|
-
builder.should_receive(:load_local_config)
|
253
|
-
|
254
|
-
Rake::Task['load_local_config'].invoke
|
225
|
+
expect(builder).to have_received(:create_local_config)
|
255
226
|
end
|
256
227
|
end
|
257
228
|
|
@@ -261,17 +232,17 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
261
232
|
end
|
262
233
|
|
263
234
|
it 'calls ensure_headers' do
|
264
|
-
builder.should_receive(:ensure_headers)
|
265
|
-
|
266
235
|
Rake::Task['missing_headers'].invoke
|
236
|
+
|
237
|
+
expect(builder).to have_received(:ensure_headers)
|
267
238
|
end
|
268
239
|
|
269
240
|
it 'fails if builder raises an error' do
|
270
|
-
builder.
|
241
|
+
allow(builder).to receive(:ensure_headers).and_raise('foo')
|
271
242
|
|
272
243
|
expect {
|
273
244
|
Rake::Task['missing_headers'].invoke
|
274
|
-
}.to raise_error
|
245
|
+
}.to raise_error(RuntimeError, /foo/)
|
275
246
|
end
|
276
247
|
end
|
277
248
|
|
@@ -279,9 +250,9 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
279
250
|
it 'creates the makedepend file' do
|
280
251
|
clear_prerequisites self.class.makedepend_file
|
281
252
|
|
282
|
-
builder.should_receive(:create_makedepend_file)
|
283
|
-
|
284
253
|
Rake::Task[self.class.makedepend_file].invoke
|
254
|
+
|
255
|
+
expect(builder).to have_received(:create_makedepend_file)
|
285
256
|
end
|
286
257
|
end
|
287
258
|
|
@@ -289,13 +260,7 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
289
260
|
before do
|
290
261
|
clear_prerequisites 'load_makedepend'
|
291
262
|
@object_file = self.class.object_files[0]
|
292
|
-
builder.
|
293
|
-
end
|
294
|
-
|
295
|
-
it 'gets dependency information from builder' do
|
296
|
-
builder.should_receive(:load_makedepend).and_return({@object_file => ['include/header1.h']})
|
297
|
-
|
298
|
-
Rake::Task['load_makedepend'].invoke
|
263
|
+
allow(builder).to receive(:load_makedepend) { {@object_file => ['include/header1.h']} }
|
299
264
|
end
|
300
265
|
|
301
266
|
it 'creates tasks for headers' do
|
@@ -312,18 +277,20 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
312
277
|
end
|
313
278
|
|
314
279
|
context 'makefile' do
|
315
|
-
let(:presenter)
|
280
|
+
let(:presenter) do
|
281
|
+
double(Rake::Builder::Presenters::Makefile::BuilderPresenter, save: nil)
|
282
|
+
end
|
283
|
+
|
284
|
+
before do
|
285
|
+
allow(Rake::Builder::Presenters::Makefile::BuilderPresenter).to receive(:new).with(builder) { presenter }
|
286
|
+
end
|
316
287
|
|
317
288
|
it 'creates a makefile' do
|
318
289
|
clear_prerequisites self.class.makefile_name
|
319
290
|
|
320
|
-
Rake::Builder::Presenters::Makefile::BuilderPresenter.
|
321
|
-
should_receive(:new).
|
322
|
-
with(builder).
|
323
|
-
and_return(presenter)
|
324
|
-
presenter.should_receive(:save)
|
325
|
-
|
326
291
|
Rake::Task[self.class.makefile_name].invoke
|
292
|
+
|
293
|
+
expect(presenter).to have_received(:save)
|
327
294
|
end
|
328
295
|
end
|
329
296
|
|
@@ -331,9 +298,9 @@ describe Rake::Builder::BuilderTaskDefiner do
|
|
331
298
|
it 'sets the logger level if required' do
|
332
299
|
ENV['DEBUG'] = 'true'
|
333
300
|
|
334
|
-
logger.should_receive(:level=).with(0)
|
335
|
-
|
336
301
|
Rake::Task['environment'].invoke
|
302
|
+
|
303
|
+
expect(logger).to have_received(:level=).with(0)
|
337
304
|
end
|
338
305
|
end
|
339
306
|
end
|