spec/unit/software_spec.rb in omnibus-4.0.0.rc.1 vs spec/unit/software_spec.rb in omnibus-4.0.0.rc.2
- old
+ new
@@ -49,35 +49,48 @@
it "sets the defaults" do
expect(subject.with_standard_compiler_flags).to eq(
'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
it 'ovesrride LDFLAGS' do
expect(subject.with_standard_compiler_flags('LDFLAGS' => 'foo')).to eq(
'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
it 'ovesrride CFLAGS' do
expect(subject.with_standard_compiler_flags('CFLAGS'=>'foo')).to eq(
'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
+ it 'ovesrride CXXFLAGS' do
+ expect(subject.with_standard_compiler_flags('CXXFLAGS'=>'foo')).to eq(
+ 'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
+ 'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
+ )
+ end
it 'presserve anything else' do
expect(subject.with_standard_compiler_flags('numberwang'=>4)).to eq(
'numberwang' => 4,
'LDFLAGS' => '-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib',
'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
end
@@ -90,12 +103,14 @@
end
end
it 'sets the defaults' do
expect(subject.with_standard_compiler_flags).to eq(
+ 'CC' => 'gcc -static-libgcc',
'LDFLAGS' => '-R/opt/project/embedded/lib -L/opt/project/embedded/lib -static-libgcc',
'CFLAGS' => '-I/opt/project/embedded/include',
+ "CXXFLAGS" => "-I/opt/project/embedded/include",
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'LD_OPTIONS' => '-R/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
@@ -106,10 +121,11 @@
it 'sets the defaults' do
expect(subject.with_standard_compiler_flags).to eq(
'LDFLAGS' => '-L/opt/project/embedded/lib',
'CFLAGS' => '-I/opt/project/embedded/include',
+ "CXXFLAGS" => "-I/opt/project/embedded/include",
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
end
@@ -122,116 +138,130 @@
end
end
it 'sets the defaults' do
expect(subject.with_standard_compiler_flags).to eq(
- 'CC' => 'xlc -q64',
- 'CXX' => 'xlC -q64',
- 'CFLAGS' => '-q64 -I/opt/project/embedded/include -O',
+ 'CC' => 'xlc_r -q64',
+ 'CXX' => 'xlC_r -q64',
+ 'CFLAGS' => '-q64 -I/opt/project/embedded/include -D_LARGE_FILES -O',
+ "CXXFLAGS" => "-q64 -I/opt/project/embedded/include -D_LARGE_FILES -O",
'LDFLAGS' => '-q64 -L/opt/project/embedded/lib -Wl,-blibpath:/opt/project/embedded/lib:/usr/lib:/lib',
'LD' => 'ld -b64',
'OBJECT_MODE' => '64',
'ARFLAGS' => '-X64 cru',
'LD_RUN_PATH' => '/opt/project/embedded/lib',
'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
)
end
end
- context 'on aix with gcc' do
+ context 'on freebsd' do
before do
- # There's no AIX in Fauxhai :(
- stub_ohai(platform: 'solaris2', version: '5.11') do |data|
- data['platform'] = 'aix'
- end
+ stub_ohai(platform: 'freebsd', version: '9.2')
end
it 'sets the defaults' do
- expect(subject.with_standard_compiler_flags(nil, aix: { use_gcc: true })).to eq(
- 'CC' => 'gcc -maix64',
- 'CXX' => 'g++ -maix64',
- 'CFLAGS' => '-maix64 -O -I/opt/project/embedded/include',
- 'LDFLAGS' => '-L/opt/project/embedded/lib -Wl,-blibpath:/opt/project/embedded/lib:/usr/lib:/lib',
- 'LD' => 'ld -b64',
- 'OBJECT_MODE' => '64',
- 'ARFLAGS' => '-X64 cru',
- 'LD_RUN_PATH' => '/opt/project/embedded/lib',
- 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig'
+ expect(subject.with_standard_compiler_flags).to eq(
+ 'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
+ 'LDFLAGS' => '-L/opt/project/embedded/lib',
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
)
end
+
+ context 'on freebsd' do
+ before do
+ stub_ohai(platform: 'freebsd', version: '10.0')
+ end
+
+ it 'Clang as the default compiler' do
+ expect(subject.with_standard_compiler_flags).to eq(
+ 'CC' => 'clang',
+ 'CXX' => 'clang++',
+ 'CFLAGS' => '-I/opt/project/embedded/include',
+ 'CXXFLAGS' => '-I/opt/project/embedded/include',
+ 'LDFLAGS' => '-L/opt/project/embedded/lib',
+ 'LD_RUN_PATH' => '/opt/project/embedded/lib',
+ 'PKG_CONFIG_PATH' => '/opt/project/embedded/lib/pkgconfig',
+ )
+ end
+ end
end
+
end
describe 'path helpers' do
+
before do
stub_const('File::PATH_SEPARATOR', separator)
stub_env('PATH', path)
+ allow(project).to receive(:install_dir).and_return(install_dir)
end
- context 'on *NIX' do
+ let(:prepended_path) do
+ ["#{install_dir}/bin", separator, "#{install_dir}/embedded/bin", separator, path].join
+ end
+
+ context 'on *Nix' do
let(:separator) { ':' }
let(:path) { '/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin' }
+ let(:install_dir) { '/opt/project' }
it 'prepends a path to PATH' do
expect(subject.prepend_path('/foo/bar')).to eq(
- '/foo/bar:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
+ ['/foo/bar', separator, path].join
)
end
it 'prepends the embedded bin to PATH' do
expect(subject.with_embedded_path).to eq(
- 'PATH' => '/opt/project/bin:/opt/project/embedded/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
+ 'PATH' => prepended_path
)
end
it 'with_embedded_path merges with a hash argument' do
expect(subject.with_embedded_path('numberwang' => 4)).to eq(
'numberwang' => 4,
- 'PATH' => '/opt/project/bin:/opt/project/embedded/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
+ 'PATH' => prepended_path
)
end
it 'prepends multiple paths to PATH' do
expect(subject.prepend_path('/foo/bar', '/foo/baz')).to eq(
- '/foo/bar:/foo/baz:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin'
+ ['/foo/bar', separator, '/foo/baz', separator, path].join
)
end
end
context 'on Windows' do
before do
stub_ohai(platform: 'windows', version: '2012')
- allow(project).to receive(:install_dir).and_return('c:/opt/project')
- stub_env('Path', windows_path)
end
let(:separator) { ';' }
let(:path) { 'c:/Ruby193/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem' }
- let(:windows_path) { 'c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem' }
+ let(:install_dir) { 'c:/opt/project' }
- it "prepends a path to PATH" do
- expect(subject.prepend_path('c:/foo/bar')).to eq(
- 'c:/foo/bar;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
- )
- end
+ context '`Path` exists in the environment' do
+ before do
+ stub_env('Path', path)
+ allow(ENV).to receive(:keys).and_return(%w( Path PATH ))
+ end
- it 'prepends the embedded bin to PATH' do
- expect(subject.with_embedded_path).to eq(
- 'Path' => 'c:/opt/project/bin;c:/opt/project/embedded/bin;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
- )
+ it 'returns a path key of `Path`' do
+ expect(subject.with_embedded_path).to eq(
+ 'Path' => prepended_path
+ )
+ end
end
- it 'with_embedded_path merges with a hash argument' do
- expect(subject.with_embedded_path('numberwang' => 4)).to eq(
- 'numberwang' => 4,
- 'Path' => 'c:/opt/project/bin;c:/opt/project/embedded/bin;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
- )
- end
-
- it 'prepends multiple paths to PATH' do
- expect(subject.prepend_path('c:/foo/bar', 'c:/foo/baz')).to eq(
- 'c:/foo/bar;c:/foo/baz;c:/Ruby999/bin;c:/Windows/system32;c:/Windows;c:/Windows/System32/Wbem'
- )
+ context '`Path` does not exist in the environment' do
+ it 'returns a path key of `PATH`' do
+ expect(subject.with_embedded_path).to eq(
+ 'PATH' => prepended_path
+ )
+ end
end
end
end
describe '#ohai' do