From 4a6b766b1840ddd04a053762b779fdcfd5d10592 Mon Sep 17 00:00:00 2001 From: Matthew Mongeau Date: Fri, 27 Jan 2012 10:26:05 -0500 Subject: [PATCH] Allow ENV to change make, qmake, and spec options. --- lib/capybara_webkit_builder.rb | 33 ++++++++++++++++--------- spec/capybara_webkit_builder_spec.rb | 37 ++++++++++++++++++++++++++++ spec/spec_helper.rb | 14 +++++++++++ 3 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 spec/capybara_webkit_builder_spec.rb diff --git a/lib/capybara_webkit_builder.rb b/lib/capybara_webkit_builder.rb index cde0d3f..4612359 100644 --- a/lib/capybara_webkit_builder.rb +++ b/lib/capybara_webkit_builder.rb @@ -5,21 +5,30 @@ module CapybaraWebkitBuilder extend self def make_bin - make_binaries = ['gmake', 'make'] - make_binaries.detect { |make| system("which #{make}") } + ENV['MAKE'] || 'make' + end + + def qmake_bin + ENV['QMAKE'] || 'qmake' + end + + def spec + ENV['SPEC'] || os_spec + end + + def os_spec + case RbConfig::CONFIG['host_os'] + when /linux/ + "linux-g++" + when /freebsd/ + "freebsd-g++" + else + "macx-g++" + end end def makefile - qmake_binaries = ['qmake', 'qmake-qt4'] - qmake = qmake_binaries.detect { |qmake| system("which #{qmake}") } - case RbConfig::CONFIG['host_os'] - when /linux/ - system("#{qmake} -spec linux-g++") - when /freebsd/ - system("#{qmake} -spec freebsd-g++") - else - system("#{qmake} -spec macx-g++") - end + system("#{qmake_bin} -spec #{spec}") end def qmake diff --git a/spec/capybara_webkit_builder_spec.rb b/spec/capybara_webkit_builder_spec.rb new file mode 100644 index 0000000..81085a3 --- /dev/null +++ b/spec/capybara_webkit_builder_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' +require 'capybara_webkit_builder' + +describe CapybaraWebkitBuilder do + let(:builder) { CapybaraWebkitBuilder } + + it "will use the env variable for #make_bin" do + with_env_vars("MAKE" => "fake_make") do + builder.make_bin.should == "fake_make" + end + end + + it "will use the env variable for #qmake_bin" do + with_env_vars("QMAKE" => "fake_qmake") do + builder.qmake_bin.should == "fake_qmake" + end + end + + it "will use the env variable for #os_spec" do + with_env_vars("SPEC" => "fake_os_spec") do + builder.spec.should == "fake_os_spec" + end + end + + it "defaults the #make_bin" do + builder.make_bin.should == 'make' + end + + it "defaults the #qmake_bin" do + builder.qmake_bin.should == 'qmake' + end + + it "defaults #spec to the #os_specs" do + builder.spec.should == builder.os_spec + end +end + diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 77294b8..45a4502 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -23,3 +23,17 @@ $webkit_browser = Capybara::Driver::Webkit::Browser.new(:socket_class => TCPSock Capybara.register_driver :reusable_webkit do |app| Capybara::Driver::Webkit.new(app, :browser => $webkit_browser) end + +def with_env_vars(vars) + old_env_variable = {} + vars.each do |key, value| + old_env_variables[key] = ENV[key] + ENV[key] = value + end + + yield + + old_env_variables.each do |key, value| + ENV[key] = value + end +end