55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require 'testing_env' | ||
|  | 
 | ||
|  | require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser | ||
|  | ARGV.extend(HomebrewArgvExtension) | ||
|  | 
 | ||
|  | require 'test/testball' | ||
|  | require 'utils' | ||
|  | 
 | ||
|  | 
 | ||
|  | class MostlyAbstractFormula <Formula | ||
|  |   @url='' | ||
|  |   @homepage = 'http://example.com/' | ||
|  | end | ||
|  | 
 | ||
|  | class TestBallOverrideBrew <Formula | ||
|  |   def initialize | ||
|  |     super "foo" | ||
|  |   end | ||
|  |   def brew | ||
|  |   end | ||
|  | end | ||
|  | 
 | ||
|  | 
 | ||
|  | class FormulaTests < Test::Unit::TestCase | ||
|  | 
 | ||
|  |   def test_prefix | ||
|  |     nostdout do | ||
|  |       TestBall.new.brew do |f| | ||
|  |         assert_equal File.expand_path(f.prefix), (HOMEBREW_CELLAR+f.name+'0.1').to_s | ||
|  |         assert_kind_of Pathname, f.prefix | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  |    | ||
|  |   def test_class_naming | ||
|  |     assert_equal 'ShellFm', Formula.class_s('shell.fm') | ||
|  |     assert_equal 'Fooxx', Formula.class_s('foo++') | ||
|  |     assert_equal 'SLang', Formula.class_s('s-lang') | ||
|  |     assert_equal 'PkgConfig', Formula.class_s('pkg-config') | ||
|  |     assert_equal 'FooBar', Formula.class_s('foo_bar') | ||
|  |   end | ||
|  | 
 | ||
|  |   def test_cant_override_brew | ||
|  |     assert_raises(RuntimeError) { TestBallOverrideBrew.new } | ||
|  |   end | ||
|  |    | ||
|  |   def test_abstract_formula | ||
|  |     f=MostlyAbstractFormula.new | ||
|  |     assert_equal '__UNKNOWN__', f.name | ||
|  |     assert_raises(RuntimeError) { f.prefix } | ||
|  |     nostdout { assert_raises(RuntimeError) { f.brew } } | ||
|  |   end | ||
|  |        | ||
|  | end |