rake-builder 0.7.0 → 0.8.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.
- data/Rakefile +8 -5
- data/examples/05_tests/Rakefile +3 -3
- data/examples/05_tests/include/units.h +2 -2
- data/lib/compiler.rb +25 -30
- data/lib/rake/builder.rb +135 -136
- data/lib/rake/builder/installer.rb +37 -0
- data/lib/rake/{local_config.rb → builder/local_config.rb} +13 -14
- data/lib/rake/builder/logger/formatter.rb +7 -1
- data/lib/rake/builder/presenters/makefile/builder_presenter.rb +66 -33
- data/lib/rake/builder/presenters/makefile_am/builder_presenter.rb +4 -4
- data/lib/rake/builder/qt_builder.rb +3 -8
- data/lib/rake/builder/task_definers/builder_task_definer.rb +1 -4
- data/lib/rake/builder/version.rb +1 -1
- data/lib/rake/{microsecond.rb → microsecond_task.rb} +22 -27
- data/lib/rake/once_task.rb +2 -7
- data/lib/rake/path.rb +1 -6
- data/spec/gather_rspec_coverage.rb +2 -0
- data/spec/spec_helper.rb +13 -98
- data/spec/unit/compiler_spec.rb +129 -0
- data/spec/unit/rake/builder/autoconf/version_spec.rb +62 -5
- data/spec/unit/rake/builder/configure_ac_spec.rb +53 -0
- data/spec/unit/rake/builder/install_spec.rb +101 -0
- data/spec/unit/rake/builder/local_config_spec.rb +53 -0
- data/spec/unit/rake/builder/logger/formatter_spec.rb +20 -0
- data/spec/unit/rake/builder/presenters/makefile/builder_presenter_spec.rb +163 -0
- data/spec/unit/rake/builder/presenters/makefile_am/builder_presenter_spec.rb +4 -2
- data/spec/unit/rake/builder/task_definers/builder_task_definer_spec.rb +6 -0
- data/spec/unit/rake/builder_spec.rb +391 -16
- data/spec/unit/rake/microsecond_task_spec.rb +63 -0
- metadata +39 -55
- data/examples/01_hello_world_cpp/vendor/bundle/gems/coderay-1.0.8/Rakefile +0 -35
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/Rakefile +0 -412
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/fbuffer/fbuffer.h +0 -185
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.c +0 -1427
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.h +0 -149
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.c +0 -2204
- data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.h +0 -77
- data/examples/01_hello_world_cpp/vendor/bundle/gems/method_source-0.8.1/Rakefile +0 -79
- data/examples/01_hello_world_cpp/vendor/bundle/gems/pry-0.9.11.3/Rakefile +0 -136
- data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/Rakefile +0 -374
- data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/a.c +0 -6
- data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/b.c +0 -6
- data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/main.c +0 -11
- data/examples/01_hello_world_cpp/vendor/bundle/gems/slop-3.4.3/Rakefile +0 -29
- data/lib/rake/file_task_alias.rb +0 -24
- data/spec/c_project/main.c +0 -12
- data/spec/c_project/main.h +0 -6
- data/spec/c_project_spec.rb +0 -41
- data/spec/cpp_project/main.cpp +0 -12
- data/spec/cpp_project/main.h +0 -8
- data/spec/cpp_project_spec.rb +0 -203
- data/spec/generated_files_spec.rb +0 -65
- data/spec/libraries_spec.rb +0 -35
- data/spec/local_config_spec.rb +0 -95
- data/spec/logger_spec.rb +0 -25
- data/spec/microsecond_task_spec.rb +0 -32
- data/spec/objective_c_project/main.h +0 -1
- data/spec/objective_c_project/main.m +0 -18
- data/spec/objective_c_project_spec.rb +0 -72
- data/spec/paths_spec.rb +0 -19
- data/spec/project_spec.rb +0 -20
- data/spec/target_spec.rb +0 -48
@@ -1,29 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'bundler/gem_tasks'
|
3
|
-
rescue LoadError
|
4
|
-
end
|
5
|
-
|
6
|
-
require 'rake/testtask'
|
7
|
-
|
8
|
-
Rake::TestTask.new do |t|
|
9
|
-
t.libs << 'test'
|
10
|
-
t.test_files = Dir['test/*_test.rb']
|
11
|
-
end
|
12
|
-
|
13
|
-
# begin
|
14
|
-
# require 'rdoc/task'
|
15
|
-
|
16
|
-
# # requires sdoc and horo gems
|
17
|
-
# RDoc::Task.new do |rdoc|
|
18
|
-
# rdoc.title = 'Slop API Documentation'
|
19
|
-
# rdoc.rdoc_dir = 'doc'
|
20
|
-
# rdoc.options << '-f' << 'sdoc'
|
21
|
-
# rdoc.options << '-T' << 'rails'
|
22
|
-
# rdoc.options << '-e' << 'UTF-8'
|
23
|
-
# rdoc.options << '-g'
|
24
|
-
# rdoc.rdoc_files.include('lib/**/*.rb')
|
25
|
-
# end
|
26
|
-
# rescue LoadError
|
27
|
-
# end
|
28
|
-
|
29
|
-
task :default => :test
|
data/lib/rake/file_task_alias.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'rubygems' if RUBY_VERSION < '1.9'
|
2
|
-
require 'rake/tasklib'
|
3
|
-
|
4
|
-
module Rake
|
5
|
-
|
6
|
-
# A task whose behaviour depends on a FileTask
|
7
|
-
class FileTaskAlias < Task
|
8
|
-
|
9
|
-
attr_accessor :target
|
10
|
-
|
11
|
-
def self.define_task( name, target, &block )
|
12
|
-
alias_task = super( { name => [] }, &block )
|
13
|
-
alias_task.target = target
|
14
|
-
alias_task.prerequisites.unshift( target )
|
15
|
-
alias_task
|
16
|
-
end
|
17
|
-
|
18
|
-
def needed?
|
19
|
-
Rake::Task[ @target ].needed?
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
data/spec/c_project/main.c
DELETED
data/spec/c_project/main.h
DELETED
data/spec/c_project_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
load File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
|
3
|
-
describe 'when building a C project' do
|
4
|
-
|
5
|
-
include RakeBuilderHelper
|
6
|
-
|
7
|
-
before( :all ) do
|
8
|
-
@test_output_file = Rake::Path.expand_with_root( 'rake-c-testfile.txt', RakeBuilderHelper::SPEC_PATH )
|
9
|
-
end
|
10
|
-
|
11
|
-
before( :each ) do
|
12
|
-
Rake::Task.clear
|
13
|
-
@project = c_task( :executable )
|
14
|
-
@expected_generated = Rake::Path.expand_all_with_root(
|
15
|
-
[
|
16
|
-
'./main.o',
|
17
|
-
@project.makedepend_file, @project.target
|
18
|
-
],
|
19
|
-
RakeBuilderHelper::SPEC_PATH
|
20
|
-
)
|
21
|
-
`rm -f #{ @test_output_file }`
|
22
|
-
`rm -f #{ @project.target }`
|
23
|
-
end
|
24
|
-
|
25
|
-
after( :each ) do
|
26
|
-
Rake::Task[ 'clean' ].invoke
|
27
|
-
`rm -f #{ @test_output_file }`
|
28
|
-
`rm -f '#{ @project.local_config }'`
|
29
|
-
end
|
30
|
-
|
31
|
-
it "builds the program with 'build'" do
|
32
|
-
Rake::Task[ 'build' ].invoke
|
33
|
-
exist?( @project.target ).should be_true
|
34
|
-
end
|
35
|
-
|
36
|
-
it "runs the program with 'run'" do
|
37
|
-
Rake::Task[ 'run' ].invoke
|
38
|
-
exist?( @test_output_file ).should be_true
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
data/spec/cpp_project/main.cpp
DELETED
data/spec/cpp_project/main.h
DELETED
data/spec/cpp_project_spec.rb
DELETED
@@ -1,203 +0,0 @@
|
|
1
|
-
load File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
|
3
|
-
describe '#source_files' do
|
4
|
-
|
5
|
-
include RakeBuilderHelper
|
6
|
-
|
7
|
-
before( :each ) do
|
8
|
-
Rake::Path.stub!(:find_files).with(anything, 'h').and_return(['a.h'])
|
9
|
-
Rake::Path.stub!(:find_files).with(anything, 'cpp').and_return(['a.cpp'])
|
10
|
-
|
11
|
-
Rake::Task.clear
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should find files with the .cpp extension' do
|
15
|
-
Rake::Path.should_receive(:find_files).with(anything, 'cpp').and_return(['a.cpp'])
|
16
|
-
|
17
|
-
cpp_task(:executable)
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should allow configuration of source extension' do
|
21
|
-
Rake::Path.should_receive(:find_files).with(anything, 'cc').and_return(['a.cc'])
|
22
|
-
|
23
|
-
cpp_task(:executable) { |p| p.source_file_extension = 'cc' }
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'when building an executable' do
|
29
|
-
|
30
|
-
include RakeBuilderHelper
|
31
|
-
|
32
|
-
before( :all ) do
|
33
|
-
@test_output_file = Rake::Path.expand_with_root(
|
34
|
-
'rake-builder-testfile.txt', RakeBuilderHelper::SPEC_PATH )
|
35
|
-
@expected_target = Rake::Path.expand_with_root(
|
36
|
-
RakeBuilderHelper::TARGET[ :executable ],
|
37
|
-
RakeBuilderHelper::SPEC_PATH )
|
38
|
-
end
|
39
|
-
|
40
|
-
before( :each ) do
|
41
|
-
Rake::Task.clear
|
42
|
-
@project = cpp_task( :executable )
|
43
|
-
`rm -f #{ @test_output_file }`
|
44
|
-
`rm -f #{ @project.target }`
|
45
|
-
end
|
46
|
-
|
47
|
-
after( :each ) do
|
48
|
-
Rake::Task[ 'clean' ].invoke
|
49
|
-
`rm -f #{ @test_output_file }`
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'knows the target' do
|
53
|
-
@project.target.should == @expected_target
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'builds the target in the objects directory' do
|
57
|
-
File.dirname( @project.target ).should == @project.objects_path
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'knows the project type' do
|
61
|
-
@project.target_type.should == :executable
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'creates the correct tasks' do
|
65
|
-
expected_tasks = expected_tasks( [ @project.target ] )
|
66
|
-
missing_tasks = expected_tasks - task_names
|
67
|
-
missing_tasks.should == []
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'builds the program with \'build\'' do
|
71
|
-
Rake::Task[ 'build' ].invoke
|
72
|
-
exist?( @project.target ).should be_true
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'has a \'run\' task' do
|
76
|
-
task_names.include?('run'). should be_true
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'builds the program with \'run\'' do
|
80
|
-
Rake::Task[ 'run' ].invoke
|
81
|
-
exist?( @project.target ).should be_true
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'runs the program with \'run\'' do
|
85
|
-
Rake::Task[ 'run' ].invoke
|
86
|
-
exist?( @test_output_file ).should be_true
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
describe 'when using namespaces' do
|
92
|
-
|
93
|
-
include RakeBuilderHelper
|
94
|
-
|
95
|
-
before( :each ) do
|
96
|
-
Rake::Task.clear
|
97
|
-
@project = cpp_task( :executable, 'my_namespace' )
|
98
|
-
end
|
99
|
-
|
100
|
-
after( :each ) do
|
101
|
-
Rake::Task[ 'my_namespace:clean' ].invoke
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'creates the correct tasks' do
|
105
|
-
expected = expected_tasks( scoped_tasks( [ @project.target ], 'my_namespace' ), 'my_namespace' )
|
106
|
-
missing_tasks = expected - task_names
|
107
|
-
missing_tasks.should == []
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
describe 'when building a static library' do
|
113
|
-
|
114
|
-
include RakeBuilderHelper
|
115
|
-
|
116
|
-
before( :each ) do
|
117
|
-
Rake::Task.clear
|
118
|
-
@project = cpp_task( :static_library )
|
119
|
-
`rm -f #{@project.target}`
|
120
|
-
end
|
121
|
-
|
122
|
-
after( :each ) do
|
123
|
-
Rake::Task[ 'clean' ].invoke
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'knows the target type' do
|
127
|
-
@project.target_type.should == :static_library
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'builds the library' do
|
131
|
-
Rake::Task[ 'build' ].invoke
|
132
|
-
exist?( @project.target ).should be_true
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'hasn\'t got a \'run\' task' do
|
136
|
-
task_names.include?( 'run' ).should be_false
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
describe 'when building a shared library' do
|
142
|
-
|
143
|
-
include RakeBuilderHelper
|
144
|
-
|
145
|
-
before( :each ) do
|
146
|
-
Rake::Task.clear
|
147
|
-
@project = cpp_task( :shared_library ) do |builder|
|
148
|
-
builder.compilation_options += ['-fPIC']
|
149
|
-
end
|
150
|
-
`rm -f #{ @project.target }`
|
151
|
-
end
|
152
|
-
|
153
|
-
after( :each ) do
|
154
|
-
Rake::Task[ 'clean' ].invoke
|
155
|
-
end
|
156
|
-
|
157
|
-
it 'knows the target type' do
|
158
|
-
@project.target_type.should == :shared_library
|
159
|
-
end
|
160
|
-
|
161
|
-
it 'builds the library' do
|
162
|
-
Rake::Task[ 'build' ].invoke
|
163
|
-
exist?( @project.target ).should be_true
|
164
|
-
end
|
165
|
-
|
166
|
-
it 'hasn\'t got a \'run\' task' do
|
167
|
-
task_names.include?( 'run' ).should be_false
|
168
|
-
end
|
169
|
-
|
170
|
-
end
|
171
|
-
|
172
|
-
describe 'when installing' do
|
173
|
-
|
174
|
-
include RakeBuilderHelper
|
175
|
-
|
176
|
-
INSTALL_DIRECTORY = '/tmp/rake-builder-test-install'
|
177
|
-
|
178
|
-
before( :each ) do
|
179
|
-
Rake::Task.clear
|
180
|
-
`mkdir #{ INSTALL_DIRECTORY }`
|
181
|
-
@project = cpp_task( :executable ) do |builder|
|
182
|
-
builder.install_path = INSTALL_DIRECTORY
|
183
|
-
end
|
184
|
-
@installed_target = File.join( INSTALL_DIRECTORY, File.basename( @project.target ) )
|
185
|
-
end
|
186
|
-
|
187
|
-
after( :each ) do
|
188
|
-
`rm -rf #{ INSTALL_DIRECTORY }`
|
189
|
-
end
|
190
|
-
|
191
|
-
it 'should install the file' do
|
192
|
-
Rake::Task[ 'install' ].invoke
|
193
|
-
exist?( @installed_target ).should be_true
|
194
|
-
end
|
195
|
-
|
196
|
-
it 'should uninstall the file' do
|
197
|
-
Rake::Task[ 'install' ].invoke
|
198
|
-
exist?( @installed_target ).should be_true
|
199
|
-
Rake::Task[ 'uninstall' ].invoke
|
200
|
-
exist?( @installed_target ).should be_false
|
201
|
-
end
|
202
|
-
|
203
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
load File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
describe 'when handling generated files' do
|
6
|
-
|
7
|
-
include RakeBuilderHelper
|
8
|
-
|
9
|
-
before( :each ) do
|
10
|
-
Rake::Task.clear
|
11
|
-
@project = cpp_task( :executable )
|
12
|
-
@expected_generated = Rake::Path.expand_all_with_root(
|
13
|
-
[
|
14
|
-
'main.o',
|
15
|
-
'rake-builder-testfile.txt',
|
16
|
-
@project.makedepend_file,
|
17
|
-
@project.target ],
|
18
|
-
RakeBuilderHelper::SPEC_PATH )
|
19
|
-
end
|
20
|
-
|
21
|
-
after( :each ) do
|
22
|
-
Rake::Task[ 'clean' ].execute
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'lists generated files, with a method' do
|
26
|
-
@project.generated_files.should =~ @expected_generated
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'removes generated files with \'clean\'' do
|
30
|
-
Rake::Task[ 'run' ].invoke
|
31
|
-
@expected_generated.each do |f|
|
32
|
-
exist?( f ).should be_true
|
33
|
-
end
|
34
|
-
Rake::Task[ 'clean' ].invoke
|
35
|
-
@expected_generated.each do |f|
|
36
|
-
exist?( f ).should be_false
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'when adding generated files' do
|
43
|
-
|
44
|
-
include RakeBuilderHelper
|
45
|
-
|
46
|
-
before( :each ) do
|
47
|
-
@file = 'foobar.txt'
|
48
|
-
@file_with_path = Rake::Path.expand_with_root( @file, RakeBuilderHelper::SPEC_PATH )
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'includes added files' do
|
52
|
-
@project = cpp_task( :executable ) do |app|
|
53
|
-
app.generated_files << @file_with_path
|
54
|
-
end
|
55
|
-
@project.generated_files.include?( @file_with_path ).should be_true
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'expands the paths of added files' do
|
59
|
-
@project = cpp_task( :executable ) do |app|
|
60
|
-
app.generated_files << @file
|
61
|
-
end
|
62
|
-
@project.generated_files.include?( @file_with_path ).should be_true
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
data/spec/libraries_spec.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
load File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
|
3
|
-
describe 'when using libraries' do
|
4
|
-
|
5
|
-
include RakeBuilderHelper
|
6
|
-
|
7
|
-
before( :each ) do
|
8
|
-
Rake::Task.clear
|
9
|
-
end
|
10
|
-
|
11
|
-
after( :each ) do
|
12
|
-
Rake::Task[ 'clean' ].execute
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'builds if libraries are found' do
|
16
|
-
lambda do
|
17
|
-
@project = cpp_task( :executable ) do |builder|
|
18
|
-
builder.library_dependencies = [ 'gcc' ] # As we're using GCC, libgcc.a should always be present
|
19
|
-
end
|
20
|
-
Rake::Task[ 'build' ].invoke
|
21
|
-
end.should_not raise_error
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'fails to build if libraries are missing' do
|
25
|
-
@project = cpp_task( :executable ) do |builder|
|
26
|
-
builder.library_dependencies = [ 'library_that_doesnt_exist' ]
|
27
|
-
end
|
28
|
-
|
29
|
-
expect do
|
30
|
-
Rake::Task[ 'build' ].invoke
|
31
|
-
end. to raise_error( Rake::Builder::BuildFailure )
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|