Mercurial > hg > soundsoftware-site
diff test/unit/repository_mercurial_test.rb @ 119:8661b858af72
* Update to Redmine trunk rev 4705
author | Chris Cannam |
---|---|
date | Thu, 13 Jan 2011 14:12:06 +0000 |
parents | 513646585e45 |
children | cd2282d2aa55 051f544170fe |
line wrap: on
line diff
--- a/test/unit/repository_mercurial_test.rb Fri Nov 19 14:05:24 2010 +0000 +++ b/test/unit/repository_mercurial_test.rb Thu Jan 13 14:12:06 2011 +0000 @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require File.dirname(__FILE__) + '/../test_helper' +require File.expand_path('../../test_helper', __FILE__) class RepositoryMercurialTest < ActiveSupport::TestCase fixtures :projects @@ -33,9 +33,10 @@ @repository.fetch_changesets @repository.reload - assert_equal 6, @repository.changesets.count - assert_equal 11, @repository.changes.count - assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments + assert_equal 17, @repository.changesets.count + assert_equal 25, @repository.changes.count + assert_equal "Initial import.\nThe repository contains 3 files.", + @repository.changesets.find_by_revision('0').comments end def test_fetch_changesets_incremental @@ -46,28 +47,130 @@ assert_equal 3, @repository.changesets.count @repository.fetch_changesets - assert_equal 6, @repository.changesets.count + assert_equal 17, @repository.changesets.count end def test_entries assert_equal 2, @repository.entries("sources", 2).size + assert_equal 2, @repository.entries("sources", '400bb8672109').size assert_equal 1, @repository.entries("sources", 3).size + assert_equal 1, @repository.entries("sources", 'b3a615152df8').size end def test_locate_on_outdated_repository - # Change the working dir state - %x{hg -R #{REPOSITORY_PATH} up -r 0} assert_equal 1, @repository.entries("images", 0).size assert_equal 2, @repository.entries("images").size assert_equal 2, @repository.entries("images", 2).size end - - def test_cat - assert @repository.scm.cat("sources/welcome_controller.rb", 2) - assert_nil @repository.scm.cat("sources/welcome_controller.rb") + def test_isodatesec + # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher + if @repository.scm.class.client_version_above?([1, 0]) + @repository.fetch_changesets + @repository.reload + rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52) + assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on + end end + def test_changeset_order_by_revision + @repository.fetch_changesets + @repository.reload + + c0 = @repository.latest_changeset + c1 = @repository.changesets.find_by_revision('0') + # sorted by revision (id), not by date + assert c0.revision.to_i > c1.revision.to_i + assert c0.committed_on < c1.committed_on + end + + def test_latest_changesets + @repository.fetch_changesets + @repository.reload + + # with_limit + changesets = @repository.latest_changesets('', nil, 2) + assert_equal @repository.latest_changesets('', nil)[0, 2], changesets + + # with_filepath + changesets = @repository.latest_changesets('/sql_escape/percent%dir/percent%file1.txt', nil) + assert_equal %w|11 10 9|, changesets.collect(&:revision) + + changesets = @repository.latest_changesets('/sql_escape/underscore_dir/understrike_file.txt', nil) + assert_equal %w|12 9|, changesets.collect(&:revision) + end + + def test_copied_files + @repository.fetch_changesets + @repository.reload + + cs1 = @repository.changesets.find_by_revision('13') + assert_not_nil cs1 + c1 = cs1.changes.sort_by(&:path) + assert_equal 2, c1.size + + assert_equal 'A', c1[0].action + assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path + assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path + + assert_equal 'A', c1[1].action + assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path + assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path + + cs2 = @repository.changesets.find_by_revision('15') + c2 = cs2.changes + assert_equal 1, c2.size + + assert_equal 'A', c2[0].action + assert_equal '/README (1)[2]&,%.-3_4', c2[0].path + assert_equal '/README', c2[0].from_path + end + + def test_find_changeset_by_name + @repository.fetch_changesets + @repository.reload + %w|2 400bb8672109 400|.each do |r| + assert_equal '2', @repository.find_changeset_by_name(r).revision + end + end + + def test_find_changeset_by_invalid_name + @repository.fetch_changesets + @repository.reload + assert_nil @repository.find_changeset_by_name('100000') + end + + def test_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('2') + assert_equal c.scmid, c.identifier + end + + def test_format_identifier + @repository.fetch_changesets + @repository.reload + c = @repository.changesets.find_by_revision('2') + assert_equal '2:400bb8672109', c.format_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_activities + c = Changeset.new(:repository => @repository, + :committed_on => Time.now, + :revision => '123', + :scmid => 'abc400bb8672', + :comments => 'test') + assert c.event_title.include?('123:abc400bb8672:') + assert_equal 'abc400bb8672', c.event_url[:rev] + end else puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end