Skip to content

Commit

Permalink
[#26619049] Add support to install packages via apt-get, yum, and brew
Browse files Browse the repository at this point in the history
  • Loading branch information
wfarr committed Mar 19, 2012
1 parent ca0998f commit 87ae4f1
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 12 deletions.
1 change: 1 addition & 0 deletions bootlace.gemspec
Expand Up @@ -18,4 +18,5 @@ Gem::Specification.new do |gem|
gem.add_development_dependency('mocha')
gem.add_development_dependency('activesupport')
gem.add_development_dependency('turn')
gem.add_development_dependency('pry')
end
19 changes: 14 additions & 5 deletions lib/bootlace/package.rb
Expand Up @@ -7,14 +7,17 @@ module Package

attr_reader :noop, :logger

def initialize_logger
@logger ||= ::Logger.new(STDOUT)
def initialize
if ENV["TEST"]
@logger = ::Logger.new('/tmp/bootlace.log')
else
@logger = ::Logger.new(STDOUT)
end
set_logger_format
end

def noop!
@noop = true
@logger = ::Logger.new('/tmp/bootlace.log')
set_logger_format
end

Expand All @@ -41,6 +44,12 @@ def package(arg)
end

def install_package(name)
system [
os == :mac ? "" : "sudo",
package_manager,
"install",
name
].join(" ").strip
end

private
Expand All @@ -53,8 +62,8 @@ def set_logger_format
def package_manager
{
mac: 'brew',
ubuntu: 'apt',
debian: 'apt',
ubuntu: 'apt-get',
debian: 'apt-get',
centos: 'yum'
}.fetch(os)
end
Expand Down
2 changes: 1 addition & 1 deletion test/bootlace/os_test.rb
Expand Up @@ -44,7 +44,7 @@ def test_os_when_debian
end
end

def test_when_linux_but_unsupported
def test_os_linux_unsupported
with_constants RUBY_PLATFORM: 'linux' do
File.expects(:exist?).with('/etc/redhat-release').returns(false)
File.expects(:exist?).with('/etc/debian_version').returns(false)
Expand Down
53 changes: 47 additions & 6 deletions test/bootlace/package_test.rb
Expand Up @@ -11,8 +11,22 @@ class PackageTest < Test::Unit::TestCase
attr_accessor :bootstrap

def setup
@bootstrap = BootstrapPackage.new
@bootstrap.noop!
@bootstrap = BootstrapPackage.new
after_setup_hook
end

def after_setup_hook
end

private
def last_log
IO.readlines("/tmp/bootlace.log").last
end
end

class NoopPackageTest < PackageTest
def after_setup_hook
bootstrap.noop!
end

def test_package_without_hash_defaults_to_current_platform
Expand All @@ -27,11 +41,38 @@ def test_accepts_hash_of_package_names

bootstrap.stubs(:os).returns(:ubuntu)
bootstrap.package mac: 'redis', ubuntu: 'redis-server'
assert_match /Would have installed package 'redis-server' via apt/, last_log
assert_match /Would have installed package 'redis-server' via apt-get/, last_log
end
end

private
def last_log
IO.readlines("/tmp/bootlace.log").last
class RealPackageTest < PackageTest
def test_package_without_hash_defaults_to_current_platform
bootstrap.stubs(:os).returns(:mac)
bootstrap.expects(:system).with('brew install redis').returns(0)
bootstrap.package 'redis'
end

def test_accepts_hash_of_package_names_mac
bootstrap.stubs(:os).returns(:mac)
bootstrap.expects(:system).with('brew install redis').returns(0)
bootstrap.package mac: 'redis', ubuntu: 'redis-server'
end

def test_accepts_hash_of_package_names_ubuntu
bootstrap.stubs(:os).returns(:ubuntu)
bootstrap.expects(:system).with('sudo apt-get install redis-server').returns(0)
bootstrap.package mac: 'redis', ubuntu: 'redis-server'
end

def test_accepts_hash_of_package_names_debian
bootstrap.stubs(:os).returns(:debian)
bootstrap.expects(:system).with('sudo apt-get install redis-server').returns(0)
bootstrap.package mac: 'redis', debian: 'redis-server'
end

def test_accepts_hash_of_package_names_debian
bootstrap.stubs(:os).returns(:centos)
bootstrap.expects(:system).with('sudo yum install redis-server').returns(0)
bootstrap.package mac: 'redis', centos: 'redis-server'
end
end
3 changes: 3 additions & 0 deletions test/test_helper.rb
@@ -1,6 +1,9 @@
require 'test/unit'
require 'mocha'
require 'turn'
require 'pry'

ENV["TEST"] = "true"

module TestHelpers
require 'active_support/core_ext/kernel'
Expand Down

0 comments on commit 87ae4f1

Please sign in to comment.