spec/unit/software_spec.rb in omnibus-5.5.0 vs spec/unit/software_spec.rb in omnibus-5.6.0
- old
+ new
@@ -40,10 +40,11 @@
it_behaves_like "a cleanroom setter", :default_version, %{default_version '1.2.3'}
it_behaves_like "a cleanroom setter", :version, %{version '1.2.3'}
it_behaves_like "a cleanroom setter", :license, %{license 'Apache 2.0'}
it_behaves_like "a cleanroom setter", :license_file, %{license_file 'LICENSES/artistic.txt'}
it_behaves_like "a cleanroom setter", :skip_transitive_dependency_licensing, %{skip_transitive_dependency_licensing true}
+ it_behaves_like "a cleanroom setter", :dependency_licenses, %{dependency_licenses [{license: "MIT"}]}
it_behaves_like "a cleanroom setter", :whitelist_file, %{whitelist_file '/opt/whatever'}
it_behaves_like "a cleanroom setter", :relative_path, %{relative_path '/path/to/extracted'}
it_behaves_like "a cleanroom setter", :build, %|build {}|
it_behaves_like "a cleanroom getter", :project_dir
it_behaves_like "a cleanroom getter", :build_dir
@@ -74,62 +75,68 @@
"LDFLAGS" => "-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib",
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
it "overrides 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 -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
it "overrides 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 -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
it "overrides 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 -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
it "overrides CPPFLAGS" do
expect(subject.with_standard_compiler_flags("CPPFLAGS" => "foo")).to eq(
"LDFLAGS" => "-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib",
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
it "preserves 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 -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
context "on solaris_11" do
@@ -147,11 +154,12 @@
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"LDFLAGS" => "-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib -static-libgcc",
"LD_OPTIONS" => "-R/opt/project/embedded/lib",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
context "when loader mapping file is specified" do
# Let the unit tests run on windows where auto-path translation occurs.
@@ -173,11 +181,12 @@
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"LDFLAGS" => "-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib -static-libgcc",
"LD_OPTIONS" => "-R/opt/project/embedded/lib",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
end
@@ -191,16 +200,17 @@
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",
- "CPPFLAGS" => "-I/opt/project/embedded/include",
+ "CFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
"LD_OPTIONS" => "-R/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
context "when loader mapping file is specified" do
# Let the unit tests run on windows where auto-path translation occurs.
@@ -217,16 +227,17 @@
it "sets LD_OPTIONS correctly" 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",
- "CPPFLAGS" => "-I/opt/project/embedded/include",
+ "CFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
"LD_OPTIONS" => "-R/opt/project/embedded/lib -M #{project_root}/files/mapfile/solaris",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
end
@@ -238,11 +249,12 @@
"LDFLAGS" => "-L/opt/project/embedded/lib",
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
context "on aix" do
@@ -263,11 +275,12 @@
"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"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
context "on freebsd 9" do
@@ -280,11 +293,12 @@
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LDFLAGS" => "-L/opt/project/embedded/lib",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
context "with gcc 4.9 installed" do
before do
@@ -298,11 +312,13 @@
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LDFLAGS" => "-L/opt/project/embedded/lib",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig" )
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
+ )
end
end
end
context "on freebsd 10" do
@@ -317,15 +333,74 @@
"CFLAGS" => "-I/opt/project/embedded/include -O2",
"CXXFLAGS" => "-I/opt/project/embedded/include -O2",
"CPPFLAGS" => "-I/opt/project/embedded/include -O2",
"LDFLAGS" => "-L/opt/project/embedded/lib",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
+ context "on sles 11" do
+ before do
+ # sles identifies as suse
+ stub_ohai(platform: "suse", version: "11.4")
+ end
+ 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 -O2",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -O2",
+ "LD_RUN_PATH" => "/opt/project/embedded/lib",
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
+ )
+ end
+
+ context "with gcc 4.8 installed" do
+
+ before do
+ allow(subject).to receive(:which).and_return("/usr/bin/gcc-4.8")
+ end
+
+ it "sets the compiler args" do
+ expect(subject.with_standard_compiler_flags).to eq(
+ "CC" => "gcc-4.8",
+ "CXX" => "g++-4.8",
+ "LDFLAGS" => "-Wl,-rpath,/opt/project/embedded/lib -L/opt/project/embedded/lib",
+ "CFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -O2",
+ "LD_RUN_PATH" => "/opt/project/embedded/lib",
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
+ )
+ end
+ end
+ end
+
+ context "on sles 12" do
+ before do
+ # sles identifies as suse
+ stub_ohai(platform: "suse", version: "12.1")
+ end
+
+ 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 -O2",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -O2",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -O2",
+ "LD_RUN_PATH" => "/opt/project/embedded/lib",
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
+ )
+ end
+ end
+
context "on Windows" do
let(:win_arch_i386) { true }
before do
stub_ohai(platform: "windows", version: "2012")
@@ -333,31 +408,33 @@
end
context "in 32-bit mode" do
it "sets the default" do
expect(subject.with_standard_compiler_flags).to eq(
- "CFLAGS" => "-I/opt/project/embedded/include -m32 -O2 -fno-lto -march=i686",
- "CXXFLAGS" => "-I/opt/project/embedded/include -m32 -O2 -fno-lto -march=i686",
- "CPPFLAGS" => "-I/opt/project/embedded/include -m32 -O2 -fno-lto -march=i686",
+ "CFLAGS" => "-I/opt/project/embedded/include -m32 -O3 -march=i686",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -m32 -O3 -march=i686",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -m32 -O3 -march=i686",
"LDFLAGS" => "-L/opt/project/embedded/lib -m32 -fno-lto",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
context "in 64-bit mode" do
let(:win_arch_i386) { false }
it "sets the default" do
expect(subject.with_standard_compiler_flags).to eq(
- "CFLAGS" => "-I/opt/project/embedded/include -m64 -O2 -fno-lto -march=x86-64",
- "CXXFLAGS" => "-I/opt/project/embedded/include -m64 -O2 -fno-lto -march=x86-64",
- "CPPFLAGS" => "-I/opt/project/embedded/include -m64 -O2 -fno-lto -march=x86-64",
+ "CFLAGS" => "-I/opt/project/embedded/include -m64 -O3 -march=x86-64",
+ "CXXFLAGS" => "-I/opt/project/embedded/include -m64 -O3 -march=x86-64",
+ "CPPFLAGS" => "-I/opt/project/embedded/include -m64 -O3 -march=x86-64",
"LDFLAGS" => "-L/opt/project/embedded/lib -m64 -fno-lto",
"LD_RUN_PATH" => "/opt/project/embedded/lib",
- "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig"
+ "PKG_CONFIG_PATH" => "/opt/project/embedded/lib/pkgconfig",
+ "OMNIBUS_INSTALL_DIR" => "/opt/project"
)
end
end
end
@@ -423,13 +500,14 @@
before do
stub_env("Path", path)
allow(ENV).to receive(:keys).and_return(%w{ Path PATH })
end
- it "returns a path key of `Path`" do
- expect(subject.with_embedded_path).to eq(
- "Path" => prepended_path
+ it "and raises an error when PATH is also set" do
+ expect { subject.with_embedded_path }.to raise_error(
+ RuntimeError,
+ "The current omnibus environment has multiple PATH/Path variables."
)
end
end
context "`Path` does not exist in the environment" do
@@ -444,11 +522,11 @@
end
end
end
end
- describe '#ohai' do
+ describe "#ohai" do
before { stub_ohai(platform: "ubuntu", version: "12.04") }
it "is a DSL method" do
expect(subject).to have_exposed_method(:ohai)
end
@@ -514,22 +592,22 @@
it "raises an error if it was given a manifest but can't find it's entry" do
expect { another_project.manifest_entry }.to raise_error(Manifest::MissingManifestEntry)
end
end
- describe '#<=>' do
+ describe "#<=>" do
let(:zlib) { described_class.new(project).tap { |s| s.name("zlib") } }
let(:erchef) { described_class.new(project).tap { |s| s.name("erchef") } }
let(:bacon) { described_class.new(project).tap { |s| s.name("bacon") } }
it "compares projects by name" do
list = [zlib, erchef, bacon]
expect(list.sort.map(&:name)).to eq(%w{bacon erchef zlib})
end
end
- describe '#whitelist_file' do
+ describe "#whitelist_file" do
it "appends to the whitelist_files array" do
expect(subject.whitelist_files.size).to eq(0)
subject.whitelist_file(/foo\/bar/)
expect(subject.whitelist_files.size).to eq(1)
end
@@ -634,11 +712,11 @@
subject.send(:fetcher)
end
end
end
- describe '#fetcher' do
+ describe "#fetcher" do
before do
expect(Omnibus::Fetcher).to receive(:resolve_version).with("1.2.3", source).and_return("1.2.8")
end
context "when given a source url to an archive" do
@@ -758,10 +836,10 @@
expect(subject.send(:canonicalize_source, original)).to eq(git: "https://github.com/chef/chef.git", submodules: true)
expect(original).to eq(github: "chef/chef", submodules: true)
end
end
- describe '#shasum' do
+ describe "#shasum" do
context "when a filepath is given" do
let(:path) { "/software.rb" }
let(:file) { double(File) }
before { subject.instance_variable_set(:@filepath, path) }