| 1 |
$:.unshift File.dirname(__FILE__) + "/../lib" |
|---|
| 2 |
$:.unshift File.dirname(__FILE__) + "/../builtin/rails_info" |
|---|
| 3 |
$:.unshift File.dirname(__FILE__) + "/../../activesupport/lib" |
|---|
| 4 |
|
|---|
| 5 |
require 'test/unit' |
|---|
| 6 |
require 'active_support' |
|---|
| 7 |
|
|---|
| 8 |
unless defined?(Rails) && defined?(Rails::Info) |
|---|
| 9 |
module Rails |
|---|
| 10 |
class Info; end |
|---|
| 11 |
end |
|---|
| 12 |
end |
|---|
| 13 |
|
|---|
| 14 |
class InfoTest < Test::Unit::TestCase |
|---|
| 15 |
def setup |
|---|
| 16 |
Rails.send :remove_const, :Info |
|---|
| 17 |
silence_warnings { load 'rails/info.rb' } |
|---|
| 18 |
end |
|---|
| 19 |
|
|---|
| 20 |
def test_edge_rails_revision_not_set_when_svn_info_is_empty |
|---|
| 21 |
Rails::Info.property 'Test that this will not be defined' do |
|---|
| 22 |
Rails::Info.edge_rails_revision '' |
|---|
| 23 |
end |
|---|
| 24 |
assert !property_defined?('Test that this will not be defined') |
|---|
| 25 |
end |
|---|
| 26 |
|
|---|
| 27 |
def test_edge_rails_revision_extracted_from_svn_info |
|---|
| 28 |
Rails::Info.property 'Test Edge Rails revision' do |
|---|
| 29 |
Rails::Info.edge_rails_revision <<-EOS |
|---|
| 30 |
Path: . |
|---|
| 31 |
URL: http://www.rubyonrails.com/svn/rails/trunk |
|---|
| 32 |
Repository UUID: 5ecf4fe2-1ee6-0310-87b1-e25e094e27de |
|---|
| 33 |
Revision: 2881 |
|---|
| 34 |
Node Kind: directory |
|---|
| 35 |
Schedule: normal |
|---|
| 36 |
Last Changed Author: sam |
|---|
| 37 |
Last Changed Rev: 2881 |
|---|
| 38 |
Last Changed Date: 2005-11-04 21:04:41 -0600 (Fri, 04 Nov 2005) |
|---|
| 39 |
Properties Last Updated: 2005-10-28 19:30:00 -0500 (Fri, 28 Oct 2005) |
|---|
| 40 |
|
|---|
| 41 |
EOS |
|---|
| 42 |
end |
|---|
| 43 |
|
|---|
| 44 |
assert_property 'Test Edge Rails revision', '2881' |
|---|
| 45 |
end |
|---|
| 46 |
|
|---|
| 47 |
def test_property_with_block_swallows_exceptions_and_ignores_property |
|---|
| 48 |
assert_nothing_raised do |
|---|
| 49 |
Rails::Info.module_eval do |
|---|
| 50 |
property('Bogus') {raise} |
|---|
| 51 |
end |
|---|
| 52 |
end |
|---|
| 53 |
assert !property_defined?('Bogus') |
|---|
| 54 |
end |
|---|
| 55 |
|
|---|
| 56 |
def test_property_with_string |
|---|
| 57 |
Rails::Info.module_eval do |
|---|
| 58 |
property 'Hello', 'World' |
|---|
| 59 |
end |
|---|
| 60 |
assert_property 'Hello', 'World' |
|---|
| 61 |
end |
|---|
| 62 |
|
|---|
| 63 |
def test_property_with_block |
|---|
| 64 |
Rails::Info.module_eval do |
|---|
| 65 |
property('Goodbye') {'World'} |
|---|
| 66 |
end |
|---|
| 67 |
assert_property 'Goodbye', 'World' |
|---|
| 68 |
end |
|---|
| 69 |
|
|---|
| 70 |
def test_component_version |
|---|
| 71 |
assert_property 'Active Support version', ActiveSupport::VERSION::STRING |
|---|
| 72 |
end |
|---|
| 73 |
|
|---|
| 74 |
def test_components_exist |
|---|
| 75 |
Rails::Info.components.each do |component| |
|---|
| 76 |
dir = File.dirname(__FILE__) + "/../../" + component.gsub('_', '') |
|---|
| 77 |
assert File.directory?(dir), "#{component.classify} does not exist" |
|---|
| 78 |
end |
|---|
| 79 |
end |
|---|
| 80 |
|
|---|
| 81 |
protected |
|---|
| 82 |
def svn_info=(info) |
|---|
| 83 |
Rails::Info.module_eval do |
|---|
| 84 |
class << self |
|---|
| 85 |
def svn_info |
|---|
| 86 |
info |
|---|
| 87 |
end |
|---|
| 88 |
end |
|---|
| 89 |
end |
|---|
| 90 |
end |
|---|
| 91 |
|
|---|
| 92 |
def properties |
|---|
| 93 |
Rails::Info.properties |
|---|
| 94 |
end |
|---|
| 95 |
|
|---|
| 96 |
def property_defined?(property_name) |
|---|
| 97 |
properties.names.include? property_name |
|---|
| 98 |
end |
|---|
| 99 |
|
|---|
| 100 |
def assert_property(property_name, value) |
|---|
| 101 |
raise "Property #{property_name.inspect} not defined" unless |
|---|
| 102 |
property_defined? property_name |
|---|
| 103 |
assert_equal value, properties.value_for(property_name) |
|---|
| 104 |
end |
|---|
| 105 |
end |
|---|