ohloh_scm / branches / master / test / unit / svn_chain_test.rb
history
require File.dirname(__FILE__) + '/../test_helper'
module Scm::Parsers
class SvnChainTest < Scm::Test
def test_chain
with_svn_chain_repository('svn_with_branching', '/trunk') do |svn|
chain = svn.chain
assert_equal 4, chain.size
# In revision 1, the trunk is created.
assert_equal '/trunk', chain[0].branch_name
assert_equal 1, chain[0].first_token
assert_equal 2, chain[0].final_token
# In revision 3, the trunk was deleted, but restored in revision 4.
# This creates the first discontinuity, and the first link in the chain.
assert_equal '/trunk', chain[1].branch_name
assert_equal 4, chain[1].first_token
assert_equal 4, chain[1].final_token
# In revision 5, the branch is created by copying the trunk from revision 4.
assert_equal '/branches/development', chain[2].branch_name
assert_equal 5, chain[2].first_token
assert_equal 7, chain[2].final_token
# In revision 8, a new trunk is created by copying the branch.
# This trunk still lives on, so its final_token is nil.
assert_equal '/trunk', chain[3].branch_name
assert_equal 8, chain[3].first_token
assert_equal nil, chain[3].final_token
end
end
def test_parent_svn
with_svn_chain_repository('svn_with_branching', '/trunk') do |svn|
# In this repository, /branches/development becomes
# the /trunk in revision 8. So there should be a parent
# will final_token 7.
p1 = svn.parent_svn
assert_equal p1.url, svn.root + '/branches/development'
assert_equal p1.branch_name, '/branches/development'
assert_equal p1.final_token, 7
# There's another move at revision 5, in which /branch/development
# is created by copying /trunk from revision 4.
p2 = p1.parent_svn
assert_equal p2.url, svn.root + '/trunk'
assert_equal p2.branch_name, '/trunk'
assert_equal p2.final_token, 4
end
end
def test_parent_branch_name
svn = Scm::Adapters::SvnChainAdapter.new(:branch_name => "/trunk")
assert_equal "/branches/b", svn.parent_branch_name(Scm::Diff.new(:action => 'A',
:path => "/trunk", :from_revision => 1, :from_path => "/branches/b"))
end
end
end
