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.
Files changed (62) hide show
  1. data/Rakefile +8 -5
  2. data/examples/05_tests/Rakefile +3 -3
  3. data/examples/05_tests/include/units.h +2 -2
  4. data/lib/compiler.rb +25 -30
  5. data/lib/rake/builder.rb +135 -136
  6. data/lib/rake/builder/installer.rb +37 -0
  7. data/lib/rake/{local_config.rb → builder/local_config.rb} +13 -14
  8. data/lib/rake/builder/logger/formatter.rb +7 -1
  9. data/lib/rake/builder/presenters/makefile/builder_presenter.rb +66 -33
  10. data/lib/rake/builder/presenters/makefile_am/builder_presenter.rb +4 -4
  11. data/lib/rake/builder/qt_builder.rb +3 -8
  12. data/lib/rake/builder/task_definers/builder_task_definer.rb +1 -4
  13. data/lib/rake/builder/version.rb +1 -1
  14. data/lib/rake/{microsecond.rb → microsecond_task.rb} +22 -27
  15. data/lib/rake/once_task.rb +2 -7
  16. data/lib/rake/path.rb +1 -6
  17. data/spec/gather_rspec_coverage.rb +2 -0
  18. data/spec/spec_helper.rb +13 -98
  19. data/spec/unit/compiler_spec.rb +129 -0
  20. data/spec/unit/rake/builder/autoconf/version_spec.rb +62 -5
  21. data/spec/unit/rake/builder/configure_ac_spec.rb +53 -0
  22. data/spec/unit/rake/builder/install_spec.rb +101 -0
  23. data/spec/unit/rake/builder/local_config_spec.rb +53 -0
  24. data/spec/unit/rake/builder/logger/formatter_spec.rb +20 -0
  25. data/spec/unit/rake/builder/presenters/makefile/builder_presenter_spec.rb +163 -0
  26. data/spec/unit/rake/builder/presenters/makefile_am/builder_presenter_spec.rb +4 -2
  27. data/spec/unit/rake/builder/task_definers/builder_task_definer_spec.rb +6 -0
  28. data/spec/unit/rake/builder_spec.rb +391 -16
  29. data/spec/unit/rake/microsecond_task_spec.rb +63 -0
  30. metadata +39 -55
  31. data/examples/01_hello_world_cpp/vendor/bundle/gems/coderay-1.0.8/Rakefile +0 -35
  32. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/Rakefile +0 -412
  33. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/fbuffer/fbuffer.h +0 -185
  34. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.c +0 -1427
  35. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/generator/generator.h +0 -149
  36. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.c +0 -2204
  37. data/examples/01_hello_world_cpp/vendor/bundle/gems/json-1.7.6/ext/json/ext/parser/parser.h +0 -77
  38. data/examples/01_hello_world_cpp/vendor/bundle/gems/method_source-0.8.1/Rakefile +0 -79
  39. data/examples/01_hello_world_cpp/vendor/bundle/gems/pry-0.9.11.3/Rakefile +0 -136
  40. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/Rakefile +0 -374
  41. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/a.c +0 -6
  42. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/b.c +0 -6
  43. data/examples/01_hello_world_cpp/vendor/bundle/gems/rake-10.0.3/doc/example/main.c +0 -11
  44. data/examples/01_hello_world_cpp/vendor/bundle/gems/slop-3.4.3/Rakefile +0 -29
  45. data/lib/rake/file_task_alias.rb +0 -24
  46. data/spec/c_project/main.c +0 -12
  47. data/spec/c_project/main.h +0 -6
  48. data/spec/c_project_spec.rb +0 -41
  49. data/spec/cpp_project/main.cpp +0 -12
  50. data/spec/cpp_project/main.h +0 -8
  51. data/spec/cpp_project_spec.rb +0 -203
  52. data/spec/generated_files_spec.rb +0 -65
  53. data/spec/libraries_spec.rb +0 -35
  54. data/spec/local_config_spec.rb +0 -95
  55. data/spec/logger_spec.rb +0 -25
  56. data/spec/microsecond_task_spec.rb +0 -32
  57. data/spec/objective_c_project/main.h +0 -1
  58. data/spec/objective_c_project/main.m +0 -18
  59. data/spec/objective_c_project_spec.rb +0 -72
  60. data/spec/paths_spec.rb +0 -19
  61. data/spec/project_spec.rb +0 -20
  62. data/spec/target_spec.rb +0 -48
@@ -1,95 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- LOCAL_CONFIG_SPEC_PATH = File.expand_path( File.dirname(__FILE__) )
4
-
5
- describe 'local config files' do
6
-
7
- include RakeBuilderHelper
8
-
9
- before( :each ) do
10
- @local_config_file = Rake::Path.expand_with_root( '.rake-builder', LOCAL_CONFIG_SPEC_PATH )
11
- @expected_path = "/some/special/path"
12
- @config = {:rake_builder=>{:config_file=>{:version=>"1.0"}}, :include_paths=>[ @expected_path ]}
13
- end
14
-
15
- after( :each ) do
16
- `rm -f '#{ @local_config_file }'`
17
- end
18
-
19
- it 'works if the\'s no config file' do
20
- lambda do
21
- @builder = cpp_task( :executable )
22
- end.should_not raise_error
23
- end
24
-
25
- it 'loads config files' do
26
- save_config
27
- config = Rake::LocalConfig.new( @local_config_file )
28
- config.load
29
-
30
- config.include_paths. should include( @expected_path )
31
- end
32
-
33
- it 'fails if the file version is incorrect' do
34
- @config[ :rake_builder ][ :config_file ].delete( :version )
35
- save_config
36
- lambda do
37
- config = Rake::LocalConfig.new( @local_config_file )
38
- config.load
39
- end.should raise_error(Rake::Builder::Error, 'Config file version incorrect')
40
- end
41
-
42
- context 'dependencies' do
43
-
44
- before( :each ) do
45
- Rake::Task.clear
46
- @project = cpp_task( :executable )
47
- Rake::Task[ 'clean' ].execute
48
- `rm -f #{ @project.local_config }`
49
- end
50
-
51
- context 'when local_config is invoked' do
52
-
53
- it 'should no longer be needed' do
54
- exist?( @project.local_config ).should be_false
55
- Rake::Task[ @project.local_config ].needed?.should be_true
56
-
57
- Rake::Task[ @project.local_config ].invoke
58
-
59
- exist?( @project.local_config ).should be_true
60
- Rake::Task[ @project.local_config ].needed?.should be_false
61
- end
62
-
63
- end
64
-
65
- context 'when load_local_config is invoked' do
66
-
67
- it 'should no longer be needed' do
68
- Rake::Task[ 'load_local_config' ].needed?.should be_true
69
-
70
- Rake::Task[ 'load_local_config' ].invoke
71
-
72
- Rake::Task[ 'load_local_config' ].needed?.should be_false
73
- end
74
-
75
- it 'local_config should no longer be needed' do
76
- Rake::Task[ @project.local_config ].needed?.should be_true
77
-
78
- Rake::Task[ 'load_local_config' ].invoke
79
-
80
- Rake::Task[ @project.local_config ].needed?.should be_false
81
- end
82
-
83
- end
84
-
85
- end
86
-
87
- private
88
-
89
- def save_config( config = @config, filename = @local_config_file )
90
- File.open( filename, 'w' ) do | file |
91
- file.write config.to_yaml
92
- end
93
- end
94
-
95
- end
@@ -1,25 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- describe 'the logger' do
4
-
5
- it 'can be read' do
6
- builder = Rake::Builder.new do |builder|
7
- builder.source_search_paths = [ 'cpp_project' ]
8
- end
9
- builder.logger.should_not be_nil
10
- end
11
-
12
- it 'can be set' do
13
- builder = Rake::Builder.new do |builder|
14
- builder.source_search_paths = [ 'cpp_project' ]
15
- end
16
- lambda do
17
- builder.logger = Logger.new( STDOUT )
18
- end.should_not raise_exception
19
- end
20
-
21
- # TODO: check the output
22
- # builder.logger.level = Logger::DEBUG
23
-
24
- end
25
-
@@ -1,32 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
- require 'fileutils'
3
-
4
- describe Rake::Microsecond::DirectoryTask do
5
-
6
- include RakeBuilderHelper
7
- include FileUtils
8
-
9
- before :all do
10
- @path = File.join(File.dirname(__FILE__), 'microsecond_directory')
11
- end
12
-
13
- before :each do
14
- rm_rf @path, :verbose => false
15
- end
16
-
17
- it 'should memorize the directory creation time including fractional seconds' do
18
- File.directory?( @path ).should be_false
19
-
20
- t = Rake::Microsecond::DirectoryTask.define_task( @path )
21
-
22
- isolating_seconds do
23
- sleep 0.01
24
- t.invoke
25
- end
26
-
27
- File.directory?( @path ).should be_true
28
- t.timestamp.usec.should_not == 0
29
- end
30
-
31
- end
32
-
@@ -1 +0,0 @@
1
- #import <Foundation/Foundation.h>
@@ -1,18 +0,0 @@
1
- #import "main.h"
2
-
3
- int main(void)
4
- {
5
- NSAutoreleasePool *pool = [ [ NSAutoreleasePool alloc ] init ];
6
- NSString *text = @"Written by Objective-C";
7
- NSString *filename = @"./rake-builder-testfile.txt";
8
- NSData *data = [ text dataUsingEncoding: NSASCIIStringEncoding ];
9
- NSFileManager *filemanager = [NSFileManager defaultManager];
10
- BOOL written = [ filemanager createFileAtPath: filename contents: data attributes: nil ];
11
- if( ! written ) {
12
- NSLog( @"Failed to write to file" );
13
- }
14
-
15
- [ pool release ];
16
-
17
- return 0;
18
- }
@@ -1,72 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- # Only run on OS X
4
- if RUBY_PLATFORM['darwin']
5
-
6
- describe 'when building an Objective-C executable' do
7
-
8
- include RakeBuilderHelper
9
-
10
- before( :all ) do
11
- @test_output_file = Rake::Path.expand_with_root(
12
- 'rake-builder-testfile.txt', RakeBuilderHelper::SPEC_PATH )
13
- @expected_target = Rake::Path.expand_with_root(
14
- RakeBuilderHelper::TARGET[ :executable ],
15
- RakeBuilderHelper::SPEC_PATH )
16
- end
17
-
18
- before( :each ) do
19
- Rake::Task.clear
20
- @project = objective_c_task( :executable )
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
- end
29
-
30
- it 'knows the target' do
31
- @project.target.should == @expected_target
32
- end
33
-
34
- it 'builds the target in the objects directory' do
35
- File.dirname( @project.target ).should == @project.objects_path
36
- end
37
-
38
- it 'knows the project type' do
39
- @project.target_type.should == :executable
40
- end
41
-
42
- it 'creates the correct tasks' do
43
- expected_tasks = expected_tasks( [ @project.target ] )
44
- missing_tasks = expected_tasks - task_names
45
- missing_tasks.should == []
46
- end
47
-
48
- it 'builds the program with \'build\'' do
49
- Rake::Task[ 'build' ].invoke
50
- exist?( @project.target ).should be_true
51
- end
52
-
53
- it 'has a \'run\' task' do
54
- Rake::Task[ 'run' ].should_not be_nil
55
- end
56
-
57
- it 'builds the program with \'run\'' do
58
- Rake::Task[ 'run' ].invoke
59
- exist?( @project.target ).should be_true
60
- end
61
-
62
- it 'runs the program with \'run\'' do
63
- lambda do
64
- Rake::Task[ 'run' ].invoke
65
- end.should_not raise_exception
66
- exist?( @test_output_file ).should be_true
67
- end
68
-
69
- end
70
-
71
- end
72
-
@@ -1,19 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- PATHS_SPEC_PATH = File.expand_path( File.dirname(__FILE__) )
4
-
5
- describe 'when creating tasks' do
6
-
7
- before( :each ) do
8
- Rake::Task.clear
9
- end
10
-
11
- it 'remembers the Rakefile path' do
12
- builder = Rake::Builder.new do |builder|
13
- builder.source_search_paths = [ 'cpp_project' ]
14
- end
15
- builder.rakefile_path.should == PATHS_SPEC_PATH
16
- end
17
-
18
- end
19
-
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Rake::Builder do
4
- include RakeBuilderHelper
5
-
6
- def builder(type)
7
- c_task(type)
8
- end
9
-
10
- [
11
- [:static_library, true],
12
- [:shared_library, true],
13
- [:executable, false]
14
- ].each do |type, is_library|
15
- example type do
16
- expect(builder(type).is_library?).to eq(is_library)
17
- end
18
- end
19
- end
20
-
@@ -1,48 +0,0 @@
1
- load File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- describe 'when creating tasks' do
4
-
5
- before( :each ) do
6
- Rake::Task.clear
7
- end
8
-
9
- after( :each ) do
10
- `rm -f spec/.rake-builder.foo`
11
- end
12
-
13
- it 'raises an error when the target is an empty string' do
14
- lambda do
15
- Rake::Builder.new do |builder|
16
- builder.target = ''
17
- builder.source_search_paths = [ 'cpp_project' ]
18
- end
19
- end.should raise_error(Rake::Builder::Error, 'The target name cannot be an empty string')
20
- end
21
-
22
- it 'raises an error when the target is set to nil' do
23
- lambda do
24
- Rake::Builder.new do |builder|
25
- builder.target = nil
26
- builder.source_search_paths = [ 'cpp_project' ]
27
- end
28
- end.should raise_error(Rake::Builder::Error, 'The target name cannot be nil')
29
- end
30
-
31
- it 'sets the target to \'a.out\' if it is not set' do
32
- builder = Rake::Builder.new do |builder|
33
- builder.source_search_paths = [ 'cpp_project' ]
34
- end
35
- builder.target.should == Rake::Path.expand_with_root( 'a.out', RakeBuilderHelper::SPEC_PATH )
36
- end
37
-
38
- it 'raises an error when the supplied target_type is unknown' do
39
- lambda do
40
- project = Rake::Builder.new do |builder|
41
- builder.target = 'my_prog'
42
- builder.target_type = :foo
43
- builder.source_search_paths = [ 'cpp_project' ]
44
- end
45
- end.should raise_error
46
- end
47
-
48
- end