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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 60c1b4473a51b3dea752db5616d35f75485f24d9
4
+ data.tar.gz: f5028bf5de9235c3c68a4f0d270160d5e68fad9d
5
+ SHA512:
6
+ metadata.gz: 2e2c8faae223acb383fba9cc1727f76eb7c7b0bec433cbad9ab0d1caf2c1a117b0c5c6f810b8ff1c8acd1506b97da746bfd58cc2b6ec1e79805b985a143150ac
7
+ data.tar.gz: 6ffbfbeadee2ba86245542b14e13518dc364183b9cb7b8aa8d4f25d4b15a1daaeba4e22163143964be56902f84c4396033b072570883b36a57e99b94376a1379
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://secure.travis-ci.org/joeyates/rake-builder.png)][Continuous Integration]
2
+
1
3
  rake-builder
2
4
  ============
3
5
 
@@ -10,6 +12,7 @@ rake-builder
10
12
  [Source code]: http://github.com/joeyates/rake-builder "Source code at GitHub"
11
13
  [Documentation]: http://rdoc.info/projects/joeyates/rake-builder "Documentation at Rubydoc.info"
12
14
  [Rubygem]: http://rubygems.org/gems/rake-builder "Ruby gem at rubygems.org"
15
+ [Continuous Integration]: http://travis-ci.org/joeyates/rake-builder "Build status by Travis-CI"
13
16
 
14
17
  Hello World! Example
15
18
  ====================
@@ -122,6 +125,16 @@ If you install a static library, your headers will also be installed.
122
125
  Ensure that you use file globs, e.g. './include/**/*.h',
123
126
  as these will ensure that your headers are installed in the correct subdirectories.
124
127
 
128
+ Problem Resolution
129
+ ------------------
130
+
131
+ If you project does not build, use Rake's `--trace` option to get more
132
+ information about what's going wrong:
133
+
134
+ ```shell
135
+ $ rake --trace
136
+ ```
137
+
125
138
  Project
126
139
  =======
127
140
 
@@ -2,8 +2,8 @@ module Rake
2
2
  class Builder
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 0
5
- MINOR = 9
6
- TINY = 2
5
+ MINOR = 10
6
+ TINY = 1
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  end
@@ -28,7 +28,7 @@ module Rake
28
28
 
29
29
  def needed?
30
30
  return true if not File.exist?(self.name)
31
- @timestamp = File.stat(self.name).mtime if @timestamp.nil?
31
+ @timestamp ||= File.stat(self.name).mtime
32
32
  prerequisites_needed?
33
33
  end
34
34
 
@@ -52,9 +52,7 @@ module Rake
52
52
 
53
53
  def needed?
54
54
  return true if not File.directory?(self.path)
55
- if @timestamp.nil?
56
- @timestamp = File.stat(self.path).mtime
57
- end
55
+ @timestamp ||= File.stat(self.path).mtime
58
56
  prerequisites_needed?
59
57
  end
60
58
 
@@ -10,18 +10,11 @@ describe Compiler::Base do
10
10
  subject { Compiler::Base.new }
11
11
 
12
12
  context '#include_paths' do
13
- before do
14
- File.stub(:exist?).
15
- with('/opt/local/include/foo/bar.h').
16
- and_return(false)
17
- end
13
+ let(:exists) { false }
18
14
 
19
- it 'checks extra paths' do
20
- File.should_receive(:exist?).
21
- with('/opt/local/include/foo/bar.h').
22
- and_return(true)
23
-
24
- subject.include_paths(['foo/bar.h'])
15
+ before do
16
+ allow(File).to receive(:exist).
17
+ with('/opt/local/include/foo/bar.h') { exists }
25
18
  end
26
19
 
27
20
  it 'throws an error is the headers are not found' do
@@ -88,12 +81,12 @@ COLLECT_GCC_OPTIONS='-v' '-E' '-mtune=generic' '-march=x86-64'
88
81
  EOT
89
82
  end
90
83
 
91
- before { subject.stub(:`).with(/gcc/).and_return(gcc_output) }
84
+ before { allow(subject).to receive(:`).with(/gcc/) { gcc_output } }
92
85
 
93
86
  it 'calls gcc' do
94
- subject.should_receive(:`).with(/gcc/).and_return(gcc_output)
95
-
96
87
  subject.default_include_paths('c++')
88
+
89
+ expect(subject).to have_received(:`).with(/gcc/)
97
90
  end
98
91
 
99
92
  it 'parses gcc output' do
@@ -111,12 +104,12 @@ makedepend: warning: main.cpp (reading main.h, line 4): cannot find include fil
111
104
  EOT
112
105
  end
113
106
 
114
- before { subject.stub(:`).with(/makedepend/).and_return(makedepend_output) }
107
+ before { allow(subject).to receive(:`).with(/makedepend/) { makedepend_output } }
115
108
 
116
109
  it 'calls makedepend' do
117
- subject.should_receive(:`).with(/makedepend/).and_return(makedepend_output)
118
-
119
110
  subject.missing_headers(['/foo'], ['bar.cpp'])
111
+
112
+ expect(subject).to have_received(:`).with(/makedepend/)
120
113
  end
121
114
 
122
115
  it 'returns missing headers' do
@@ -1,116 +1,104 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Rake::Builder::Autoconf::Version do
4
+ let(:exists) { true }
5
+ let(:file_content) { '1.2.3' }
4
6
  before do
5
- File.stub(:exist? => true)
6
- File.stub(:read => '1.2.3')
7
+ allow(File).to receive(:exist?).with('VERSION') { exists }
8
+ allow(File).to receive(:read).with('VERSION') { file_content }
7
9
  end
10
+ let(:params) { [] }
11
+ let(:parameter_version) { '4.5.6' }
12
+
13
+ subject { described_class.new(*params) }
8
14
 
9
15
  context '.new' do
10
16
  context 'with parameter' do
11
17
  it 'fails if the version parameter is not nn.nn.nn' do
12
18
  expect {
13
- Rake::Builder::Autoconf::Version.new('hello')
19
+ described_class.new('hello')
14
20
  }.to raise_error(RuntimeError, /badly formatted/)
15
21
  end
16
22
  end
17
23
 
18
24
  context 'without parameter' do
19
25
  it 'succeeds' do
20
- Rake::Builder::Autoconf::Version.new
26
+ described_class.new
21
27
  end
22
28
  end
23
29
 
24
- context 'VERSION file' do
25
- it 'checks for a the file' do
26
- File.should_receive(:exist?).
27
- with('VERSION').
28
- and_return(false)
29
-
30
- Rake::Builder::Autoconf::Version.new
31
- end
32
-
33
- it 'loads the file' do
34
- File.should_receive(:exist?).
35
- with('VERSION').
36
- and_return(true)
37
- File.should_receive(:read).
38
- with('VERSION').
39
- and_return('1.2.3')
40
-
41
- Rake::Builder::Autoconf::Version.new
42
- end
43
-
44
- it 'fails if the version is badly formed' do
45
- File.should_receive(:read).
46
- with('VERSION').
47
- and_return('bad')
30
+ context 'if the version is badly formed' do
31
+ let(:file_content) { 'bad' }
48
32
 
33
+ it 'fails' do
49
34
  expect {
50
- Rake::Builder::Autoconf::Version.new
35
+ described_class.new
51
36
  }.to raise_error(RuntimeError, /file.*?version.*?badly formatted/)
52
37
  end
53
38
  end
54
39
  end
55
40
 
56
41
  context '#decide' do
57
- let(:with_parameter) { Rake::Builder::Autoconf::Version.new('4.5.6') }
58
- let(:without_parameter) { Rake::Builder::Autoconf::Version.new }
42
+ let(:file) { double(File, write: nil) }
59
43
 
60
- before { File.stub(:open).with('VERSION', 'w') }
44
+ before do
45
+ allow(File).to receive(:open).with('VERSION', 'w').and_yield(file)
46
+ end
61
47
 
62
- context 'file version is nil' do
63
- before { File.stub(:exist? => false) }
48
+ context 'disk file is absent' do
49
+ let(:exists) { false }
64
50
 
65
51
  context 'parameter is nil' do
66
52
  it 'raises an error' do
67
53
  expect {
68
- without_parameter.decide
54
+ subject.decide
69
55
  }.to raise_error(RuntimeError, /Please do one of the following/)
70
56
  end
71
57
  end
72
58
 
73
59
  context 'parameter not nil' do
60
+ let(:params) { [parameter_version] }
61
+
74
62
  it 'saves the version' do
75
- File.should_receive(:open).with('VERSION', 'w')
63
+ subject.decide
76
64
 
77
- with_parameter.decide
65
+ expect(file).to have_received(:write).with(parameter_version + "\n")
78
66
  end
79
67
 
80
68
  it 'returns the parameter version' do
81
- expect(with_parameter.decide).to eq('4.5.6')
69
+ expect(subject.decide).to eq(parameter_version)
82
70
  end
83
71
  end
84
72
  end
85
73
 
86
- context 'file version not nil' do
87
- before do
88
- File.stub(:exist? => true)
89
- File.stub(:read).with('VERSION').and_return("6.6.6\n")
90
- end
74
+ context 'disk file exists' do
75
+ let(:exists) { true }
91
76
 
92
- context 'parameter is nil' do
93
- it 'returns the file version' do
94
- expect(without_parameter.decide).to eq('6.6.6')
77
+ context 'without parameters' do
78
+ it 'returns the file version from disk' do
79
+ expect(subject.decide).to eq(file_content)
95
80
  end
96
81
  end
97
82
 
98
83
  context 'parameter not nil' do
99
- it 'fails if the two versions differ'do
100
- File.should_receive(:read).with('VERSION').and_return("6.6.6\n")
101
-
102
- expect {
103
- with_parameter.decide
104
- }.to raise_error(RuntimeError, /parameter.*?is different to.*?VERSION/)
84
+ context 'if the two versions differ'do
85
+ let(:params) { [parameter_version] }
86
+
87
+ it 'fails' do
88
+ expect {
89
+ subject.decide
90
+ }.to raise_error(RuntimeError, /parameter.*?is different to.*?VERSION/)
91
+ end
105
92
  end
106
93
 
107
- it 'returns the version' do
108
- File.should_receive(:read).with('VERSION').and_return("4.5.6\n")
94
+ context 'if the two versions are the same' do
95
+ let(:params) { [file_content] }
109
96
 
110
- expect(with_parameter.decide).to eq('4.5.6')
97
+ it 'returns the version' do
98
+ expect(subject.decide).to eq(file_content)
99
+ end
111
100
  end
112
101
  end
113
102
  end
114
103
  end
115
104
  end
116
-
@@ -32,21 +32,16 @@ describe Rake::Builder::ConfigureAc do
32
32
  end
33
33
 
34
34
  context '#save' do
35
- it 'creates the file' do
36
- File.should_receive(:open).with('configure.ac', 'w')
35
+ let(:file) { double(File, write: nil) }
37
36
 
38
- subject.save
37
+ before do
38
+ allow(File).to receive(:open).with('configure.ac', 'w').and_yield(file)
39
39
  end
40
40
 
41
41
  it 'saves the content' do
42
- file = stub('File')
43
- File.stub(:open).with('configure.ac', 'w') do |&block|
44
- block.call file
45
- end
46
-
47
- file.should_receive(:write).with(/AC_PREREQ\(2\.61\)/)
48
-
49
42
  subject.save
43
+
44
+ expect(file).to have_received(:write).with(/AC_PREREQ\(2\.61\)/)
50
45
  end
51
46
  end
52
47
  end
@@ -2,99 +2,110 @@ require 'spec_helper'
2
2
 
3
3
  describe Rake::Builder::Installer do
4
4
  let(:destination_path) { '/destination/path' }
5
- let(:destination_pathname) { '/destination/path/install' }
5
+ let(:destination_pathname) { File.join(destination_path, 'install') }
6
+ let(:destination_path_writable) { true }
7
+
8
+ before do
9
+ allow(File).to receive(:writable?).with(destination_path) { destination_path_writable }
10
+ end
6
11
 
7
12
  context '#install' do
8
13
  let(:file_to_install) { '/file/to/install' }
14
+ let(:file_to_install_exists) { true }
15
+ let(:destination_path_exists) { true }
16
+ let(:destination_path_directory) { true }
17
+ let(:destination_pathname_file) { true }
18
+ let(:destination_pathname_writable) { true }
9
19
 
10
20
  before do
11
- File.stub(:exist?).with(file_to_install).and_return(true)
12
- File.stub(:exist?).with(destination_path).and_return(true)
13
- File.stub(:directory?).with(destination_path).and_return(true)
14
- File.stub(:writable?).with(destination_path).and_return(true)
15
- File.stub(:file?).with(destination_pathname).and_return(false)
16
- File.stub(:writable?).with(destination_pathname).and_return(true)
17
- FileUtils.stub(:copy_file).with(file_to_install, destination_path)
21
+ allow(File).to receive(:exist?).with(file_to_install) { file_to_install_exists }
22
+ allow(File).to receive(:exist?).with(destination_path) { destination_path_exists }
23
+ allow(File).to receive(:directory?).with(destination_path) { destination_path_directory }
24
+ allow(File).to receive(:file?).with(destination_pathname) { destination_pathname_file }
25
+ allow(File).to receive(:writable?).with(destination_pathname) { destination_pathname_writable }
26
+ allow(FileUtils).to receive(:copy_file).with(file_to_install, destination_path)
18
27
  end
19
28
 
20
- it 'checks the source exists' do
21
- File.should_receive(:exist?).with(file_to_install).and_return(true)
29
+ context 'if the source does not exist' do
30
+ let(:file_to_install_exists) { false }
22
31
 
23
- subject.install file_to_install, destination_path
32
+ it 'fails' do
33
+ expect {
34
+ subject.install file_to_install, destination_path
35
+ }.to raise_error(RuntimeError, /does not exist/)
36
+ end
24
37
  end
25
38
 
26
- it 'fails if the source does not exist' do
27
- File.stub(:exist?).with(file_to_install).and_return(false)
39
+ context 'if the destination directory does not exist' do
40
+ let(:destination_path_exists) { false }
28
41
 
29
- expect {
30
- subject.install file_to_install, destination_path
31
- }.to raise_error(RuntimeError, /does not exist/)
42
+ it 'fails' do
43
+ expect {
44
+ subject.install file_to_install, destination_path
45
+ }.to raise_error(RuntimeError, /does not exist/)
46
+ end
32
47
  end
33
48
 
34
- it 'checks the destination directory exists' do
35
- File.should_receive(:exist?).with(destination_path).and_return(false)
49
+ context 'if the destination is not a directory' do
50
+ let(:destination_path_directory) { false }
36
51
 
37
- expect {
38
- subject.install file_to_install, destination_path
39
- }.to raise_error(RuntimeError, /does not exist/)
52
+ it 'fails' do
53
+ expect {
54
+ subject.install file_to_install, destination_path
55
+ }.to raise_error(RuntimeError, /is not a directory/)
56
+ end
40
57
  end
41
58
 
42
- it 'checks the destination is a directory' do
43
- File.should_receive(:directory?).with(destination_path).and_return(false)
59
+ context 'if it cannot overwrite an existing destination file' do
60
+ let(:destination_pathname_file) { true }
61
+ let(:destination_pathname_writable) { false }
44
62
 
45
- expect {
46
- subject.install file_to_install, destination_path
47
- }.to raise_error(RuntimeError, /is not a directory/)
48
- end
49
-
50
- it 'check it can overwrite an existing destination file' do
51
- File.stub(:file?).with(destination_pathname).and_return(true)
52
- File.stub(:writable?).with(destination_pathname).and_return(false)
53
-
54
- expect {
55
- subject.install file_to_install, destination_path
56
- }.to raise_error(RuntimeError, /cannot be overwritten/)
63
+ it 'fails' do
64
+ expect {
65
+ subject.install file_to_install, destination_path
66
+ }.to raise_error(RuntimeError, /cannot be overwritten/)
67
+ end
57
68
  end
58
69
 
59
70
  it 'copies the file to the destination' do
60
- FileUtils.should_receive(:copy_file).with(file_to_install, destination_path)
61
-
62
71
  subject.install file_to_install, destination_path
72
+
73
+ expect(FileUtils).to have_received(:copy_file).with(file_to_install, destination_path)
63
74
  end
64
75
  end
65
76
 
66
77
  context '#uninstall' do
78
+ let(:destination_pathname_exist) { true }
79
+
67
80
  before do
68
- File.stub(:exist?).with(destination_pathname).and_return(true)
69
- File.stub(:writable?).with(destination_path).and_return(true)
70
- File.stub(:unlink).with(destination_pathname)
81
+ allow(File).to receive(:exist?).with(destination_pathname) { destination_pathname_exist }
82
+ allow(File).to receive(:unlink).with(destination_pathname)
71
83
  end
72
84
 
73
- it 'checks if the file exists' do
74
- File.should_receive(:exist?).with(destination_pathname).and_return(true)
85
+ context 'if the file does not exist' do
86
+ let(:destination_pathname_exist) { false }
75
87
 
76
- subject.uninstall destination_pathname
77
- end
78
-
79
- it 'does nothing if the file does not exist' do
80
- File.should_receive(:exist?).with(destination_pathname).and_return(false)
81
- File.should_not_receive(:unlink)
88
+ it 'does nothing' do
89
+ subject.uninstall destination_pathname
82
90
 
83
- subject.uninstall destination_pathname
91
+ expect(File).to_not have_received(:unlink)
92
+ end
84
93
  end
85
94
 
86
- it 'fails if the directory is not writable' do
87
- File.should_receive(:writable?).with(destination_path).and_return(false)
95
+ context 'if the directory is not writable' do
96
+ let(:destination_path_writable) { false }
88
97
 
89
- expect {
90
- subject.uninstall destination_pathname
91
- }.to raise_error(RuntimeError, /directory.*?writable/)
98
+ it 'fails' do
99
+ expect {
100
+ subject.uninstall destination_pathname
101
+ }.to raise_error(RuntimeError, /directory.*?writable/)
102
+ end
92
103
  end
93
104
 
94
105
  it 'deletes the file' do
95
- File.should_receive(:unlink).with(destination_pathname)
96
-
97
106
  subject.uninstall destination_pathname
107
+
108
+ expect(File).to have_received(:unlink).with(destination_pathname)
98
109
  end
99
110
  end
100
111
  end