end
def revision
+ raise ChangesetNotFound if @rev.nil? || @rev.empty?
@changeset = @repository.find_changeset_by_name(@rev)
raise ChangesetNotFound unless @changeset
# Finds and returns a revision with a number or the beginning of a hash
def find_changeset_by_name(name)
+ return nil if name.nil? || name.empty?
changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%']))
end
assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
:content => /can not be annotated/
end
+
+ def test_revision
+ @repository.fetch_changesets
+ @repository.reload
+ ['61b685fbe55ab05b5ac68402d5720c1a6ac973d1', '61b685f'].each do |r|
+ get :revision, :id => 3, :rev => r
+ assert_response :success
+ assert_template 'revision'
+ end
+ end
+
+ def test_empty_revision
+ @repository.fetch_changesets
+ @repository.reload
+ ['', ' ', nil].each do |r|
+ get :revision, :id => 1, :rev => r
+ assert_response 500
+ assert_error_tag :content => /was not found/
+ end
+ end
else
puts "Git test repository NOT FOUND. Skipping functional tests !!!"
def test_fake; assert true end
assert_response 500
assert_error_tag :content => /was not found/
end
-
+
+ def test_empty_revision
+ ['', ' ', nil].each do |r|
+ get :revision, :id => 1, :rev => r
+ assert_response 500
+ assert_error_tag :content => /was not found/
+ end
+ end
+
def test_revision_with_repository_pointing_to_a_subdirectory
r = Project.find(1).repository
# Changes repository url to a subdirectory
assert_equal 15, @repository.changesets.count
end
+ def test_find_changeset_by_name
+ @repository.fetch_changesets
+ @repository.reload
+ ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
+ assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
+ @repository.find_changeset_by_name(r).revision
+ end
+ end
+
+ def test_find_changeset_by_empty_name
+ @repository.fetch_changesets
+ @repository.reload
+ ['', ' ', nil].each do |r|
+ assert_nil @repository.find_changeset_by_name(r)
+ end
+ end
+
def test_identifier
@repository.fetch_changesets
@repository.reload
assert_equal c.revision, c.identifier
end
+ def test_find_changeset_by_empty_name
+ @repository.fetch_changesets
+ @repository.reload
+ ['', ' ', nil].each do |r|
+ assert_nil @repository.find_changeset_by_name(r)
+ end
+ end
+
def test_identifier_nine_digit
c = Changeset.new(:repository => @repository, :committed_on => Time.now,
:revision => '123456789', :comments => 'test')